Автоматизация как процесс не отличается чем-то разительным от других процессов. Создание автоматизации с нуля, оптимизация уже написанной автоматизации или же автоматизация тестирования при ограниченом времени на разработку. Так или иначе, мы сталкиваемся с одинаковыми проблемами, соответственно и их решения приблизительно одинаковы. Т.е. если существуют общие проблемы, то и существуют шаблоны по которым можно данные проблемы решить. Bret Pettichord обобщил данные проблемы и выделил некоторые шаблоны.
Шаблоны автоматизации (краткое описание)
Простой шаблон
- Проблема: Как можно создать много тестов без написания большого количества программного кода?
- Решение: Используйте обобщенную среду управления сценариями (фреймворк), расширяя ее под нужды вашего проекта.
- Шаблон: Фреймворк
- Проблема: Как можно разместить тестовые данные в таблицы, не прописывая их жестко в коде тестовых сценариев?
- Решение: Напишите код, который позволит тестовым скриптам считывать тестовые параметры напрямую из таблиц.
- Шаблон: Скрипты на основе данных (data-driven).
- Проблема: Как специалисты без знания программирования могут сами создавать автоматизированные тесты?
- Решение: Используйте таблицы где будут определены свойства окон, элементы на окнах, действий и данные для тестов.
- Шаблон: Таблицы на основе пользовательского интерфейса.
- Проблема: Как бизнес пользователи могут создавать тестовые сценарии без знания программирования?
- Решение: Определите ключевые слова-действия, которые будут являться действиями пользователя с системой, с помощью которых можно будет создать нужный сценарий.
- Шаблон: Ключевые слова-действия (action keywords).
- Проблема: Как можно быть уверенным что разрабатываемый код работает правильно, при этом создавая регрессионные тесты для последующего рефакторинга кода?
- Решение: Пишите тесты до создания кода. Они будут способствовать созданию правильного дизайна и мотивировать в процессе кодирования.
- Шаблон: Программирование на основе тестов (test-first programming).
- Проблема: Как можно разработать тесты без взаимодействия через графический интерфейс?
- Решение: Используйте программные интерфейсы, которые позволяют получить прямой доступ к той функциональности, что надо протестировать.
- Шаблон: API-тесты.
- Проблема: Как можно протестировать графический интерфейс без непосредственного вызова элементов управления?
- Решение: Разрабатывайте графический интерфейс пользователя как отдельный слой презентационного кода исходя из бизнес-логики. Используйте модульные- или API- тесты для тестирования бизнес-логики.
- Шаблон: Ограниченное использование графического интерфейса.
- Проблема: Как можно определить качество большого количества тестов?
- Решение: Воспользуйтесь оракулом. Это программа, которая вычисляет правильный ожидаемый результат.
- Шаблон: Использование оракула.
- Проблема: Пользователи могут совершить действия в такой последовательности, которой вы даже не могли себе представить при дизайне тестов. Как же протестировать их все?
- Решение: Спроектируйте автоматизированную обезьянку. Это модель состояния тестируемой системы на основе которой можно генерировать большое количество тестовых последовательностей.
- Шаблон: Автоматизированная обезьянка
- Проблема: Как можно найти ошибки, которые могут возникнуть только со временем? Из-за этого может возникнуть некорректные состояния системы или поломаться/создаться неправильные данные, но это будет выявлено спустя некоторого времени последующего тестирования системы.
- Решение: Добавьте проверки (assert) и диагностики в код продукта. Проверки указывают на неправильное функционирование системы, т.е. когда это случается - это дефект. Диагностики указывают на промежуточные значения, которые подлежат последующему анализу чтобы определить это дефект или нет.
- Шаблон: Проверки и Диагностики (Assertions and Diagnostics)
- Проблема: Как можно разработать автоматизацию, когда не хватает времени?
- Решение: Делайте то, что можете. Сфокусируйтесь на тех тестах, которые в данный момент наиболее полезны, smoke тесты, конфигурационные тесты. Тем временеи, изучите возможности инструмента автоматизации и его возможности.
- Шаблон: Быстро и неаккуратно (Quick and Dirty)