Keyword тесты против Script тестов

Иногда меня спрашивают, что лучше: 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, но не наоборот.

Ну, и в конце концов, можно использовать оба подхода одновременно для разных задач.

Вот здесь можно прочитать еще одно мнение по этому вопросу (на английском языке).