Иногда меня спрашивают, что лучше: Keyword тесты или Script тесты?
В этой статье я попробую дать ответ на этот вопрос.
Прежде всего необходимо понять, для кого больше подходит каждый из этих типов тестов:
- Keyword тесты — это визуальное представление действий пользователя, понятное любому человеку (в том числе незнакомому с программированием);
- Script тесты — это прежде всего программный код, а потому люди, создающие эти тесты, должны уметь программировать.
Поэтому первый вывод будет такой: если тесты создаются людьми, не умеющими программировать, то лучше использовать Keyword тесты, иначе лучше выбрать Script тесты.
Теперь рассмотрим ситуации, в которых рекомендуются каждый из подходов:
- Keyword тесты рекомендуется использовать в том случае, если большинство операций сводится к взаимодействию с GUI приложения (кликать кнопки, открывать окна, вводить текст, выполнять проверки с помощью чекпоинтов), причём в тестах нет сложных сценариев (типа условий, циклов и т.п.);
- Script тесты рекомендуется использовать, если многие задачи не требуют взаимодействия с GUI (работа с базами данных, API приложения, сложные манипуляции с данными DDT, взаимодействие с операционной системой, сложные условия и циклы для реализации тестового сценария и т.п.).
Далее, у каждого из этих подходов есть свои достоинства:
- Keyword тесты легко модифицировать, просто перетаскивая действия мышью, их можно дописывать с помощью Recording’a с любого места (даже вставить действия в середину теста);
- Script тесты легко изменяются с помощью создания функций с необходимыми параметрами.
И, конечно же, у каждого подхода есть свои недостатки:
- использовать Keyword тесты можно только в связке с NameMapping/Aliases, иначе тесты превращаются в непонятную мешанину;
- при использовании Script тестов можно сильно увлечься и создать сложную структуру кода, который будет тяжело поддерживать.
В общем, оба подхода и хороши, и плохи одновременно.
Лично я предпочитаю Script тесты по нескольким причинам:
- за 11 лет работы я не видел ни одной реальной задачи, которая бы не потребовала программирования (или модификации записанного скрипта), а следовательно созданием автотестов должны заниматься люди, умеющие программировать;
- для расширения возможностей Keyword тестов используется всё то же программирование, так зачем усложнять себе жизнь, используя оба подхода?
- хорошо написанный Script тест будет понятен даже человеку, незнакомому с программированием (в некоторых компаниях это является условием принятия скрипта: его показывают мануальному тестировщику и просят описать, что делает тест; если тестировщик чего-то не понимает, тест отправляется на доработку).
Ещё немного пищи для размышления:
- на форумах я часто сталкивался с вопросами по Keyword тестам, где ответом было «используйте Script тесты вместо Keyword», но никогда я не видел противоположного совета;
- в TestComplete Keyword тест можно преобразовать в Script, но не наоборот.
Ну, и в конце концов, можно использовать оба подхода одновременно для разных задач.
Вот здесь можно прочитать еще одно мнение по этому вопросу (на английском языке).