Автоматизация в Agile очень важна.
Подумайте о множестве новых функций, которые добавляются в проект в течение каждого спринта. Должен быть способ убедиться, что эти функции не влияют на существующий функционал приложения.
Из-за короткой продолжительности спринта практически невозможно прогонять все тесты при каждом обновлении проекта. Проведение автоматизированного тестирования, безусловно, наилучший способ решить проблему.
Планирование и разработка автотестов, конечно же, займут много времени, но это позволит значительно сэкономить ресурсы и время на тестирование в дальнейшем.
Подпишитесь на наш ТЕЛЕГРАМ КАНАЛ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
Содержание
- Что автоматизировать в Agile?
- С чего начать автоматизацию?
- Некоторые лучшие практики
- Какие принципы Agile можно применить к автоматизации?
- Есть ли проблемы при автоматизации в Agile?
- Инструменты с открытым исходным кодом для Agile
- Заключение
Что автоматизировать в Agile?
Когда мы планируем внедрить автоматизацию в наши проекты, большинство из нас считают, что лучше всего автоматизировать дымовые или регрессионные тесты. Конечно, они подходят для автоматизации, но если мы посмотрим на пирамиду тестирования, то увидим, что это только верхний слой пирамиды.
Помимо этого слоя у нас есть еще сервисные и юнит-тесты, которые являются более важными.
Итак, какие тесты, кроме дымовых и регрессионных, подходят для автоматизации?
1. Сборка и развертывание
В традиционных средах у нас есть заранее определенные сборки, которые могут быть еженедельными, двухнедельными, а иногда даже ежемесячными. Проблема такого подхода в том, что нам приходится ждать заранее установленных дат, чтобы исправить ошибки или внедрить новые функции.
Вторая проблема заключается в том, что к тому времени, когда тестировщики завершают тестирование и выявляют ошибки и дефекты, программисты переходят к следующим этапам своей работы и уже не так заинтересованы в устранении ошибок старой версии приложения.
Сборка и развертывание – это повторяющиеся и иногда скучные процессы. Они могу занять несколько часов, что приводит к задержкам в тестировании. Это значит, что эти процессы явно требуют автоматизации.
Вот несколько преимуществ автоматического развертывания сборки:
- Низкая вероятность совершить ошибку при развертывании (можно избежать ошибок, таких как копирование неправильного файла или копирование файла в неправильное место).
- У тестировщиков остается больше времени на сам процесс тестирования.
- Сокращение времени до выпуска приложения в продакшен.
- Быстрая обратная связь.
2. Юнит-тесты/компонентные тесты
Это самый нижний слой пирамиды тестирования, а значит, фундамент. Любой фундамент должен быть прочным. Команда разработчиков должна сотрудничать и работать вместе, чтобы включить как можно больше тестов в этот слой.
Примечание редакции: больше об этих видах тестирования читайте в статье “Компонентное тестирование vs модульное тестирование”.
3. Тестирование API/веб-сервисов
Веб-сервисы — это средство обмена данных или информации между двумя приложениями в виде запросов и ответов, без необходимости заботиться о базовой архитектуре приложения. Проще говоря, в тестировании веб-сервисов мы отправляем запросы и проверяем ответы.
Тестирование веб-сервисов включает написание программ для вызова методов веб-сервиса и проверку возвращаемого значения. Можно запускать тесты с разными данными. Просто поместите тестовые данные в Excel, и программа прочитает их, вызовет сервис, используя данные в качестве параметров, и проверит результаты.
Такое тестирование относится к среднему уровню пирамиды. Здесь можно провести большую часть функционального тестирования. Исправление ошибок на этом уровне проще, и их не откладывают до готовности пользовательского интерфейса.
4. Нефункциональное тестирование
Нефункциональное тестирование включает в себя нагрузочное тестирование, тестирование производительности и стресс-тестирование. Существуют различные инструменты, которые можно использовать для автоматизации этих тестов.
5. Сравнение данных
Проводя тестирование, мы часто сталкиваемся с необходимостью сравнения данных из различных файлов, например, текстовых, CSV или Excel-файлов. Эти файлы можно сравнить с базовыми для проверки достоверности данных.
Сравнивать можно одни и те же данные, но разного формата. В основном это происходит, когда у нас есть два одинаковых файла, созданных из двух разных источников.
Эти сравнения могут быть повторяющимися, поэтому их можно автоматизировать.
6. Поиск
Поиск нужной информации в большом количестве файлов также может быть утомительным. Одним из примеров является поиск в лог-файлах. Этот процесс также стоит автоматизировать.
7. Повторяющиеся задачи
Любую повторяющуюся задачу в процессе разработки ПО стоит автоматизировать. Важно понимать, что для автоматизации не обязательно использовать сложные инструменты или технологии. Это может быть простой макрос на VB (Visual Basic) или программа на Java с использованием Javascript для решения поставленной задачи.
С чего начать автоматизацию?
Не существует инструкций или конкретных шагов, которые бы определяли, с чего начать автоматизацию. До начала процесса автоматизации команда должна провести совещание и тщательно обдумать, какие аспекты нужно автоматизировать и какова конечная цель автоматизации.
Вы можете начать с выявления повторяющихся задач, проблемных областей приложения, сложностей в тестировании.
Если у вас еще нет автоматизации в проекте, то, вероятно, вы можете использовать многоуровневый подход, при котором в первую очередь автоматизируются модульные тесты.
Одновременно тестировщики могут начать выполнять smoke-тестирование, а потом приступить к регрессионному.
Не спешите покупать новые инструменты без оценки своих потребностей. Для автоматизации некоторых повторяющихся задач может быть достаточно простой программы или макроса. Поэтому, прежде чем решиться купить инструмент, проведите предварительное тестирование и оцените, насколько эффективным будет его использование.
Когда мы определили, какие задачи будем автоматизировать, и выбрали инструменты для этого, следующим шагом будет создание основы для автоматизации, то есть выбор фреймворка.
Фреймворк автоматизации – это набор правил, структур и инструментов для удобной автоматизации тестирования ПО. Он предоставляет основу для создания, управления и выполнения автоматизированных тестов.
Главная цель фреймворка автоматизации – облегчить процесс написания, запуска и поддержания автоматизированных тестов. Он помогает стандартизировать подходы к тестированию, уменьшает издержки и повторение кода, а также упрощает отчетность и анализ результатов тестирования.
Чтобы наша автоматизация работала хорошо, важно следовать хорошим практикам разработки кода.
Лучшие практики автоматизации
- Не стремитесь автоматизировать все за один раз. Начните с малого. Помните, что автоматизация – это постепенный процесс.
- Следуйте тем же практикам Agile, что и при разработке программного обеспечения. Автоматизация также требует правильного планирования и проектирования.
- Создайте бэклог автоматизации тестирования. Этот список может включать реализацию новых функций или улучшение существующих. Оцените задачи и распределите их по приоритетам.
- Не тратьте слишком много времени на оценку нового инструмента. Составьте приоритетный список того, что вы от него хотите и установите сроки для его оценки. Если не видите результатов, переходите к следующему инструменту.
- Используйте подходящую среду разработки. Не храните код локально: заведите репозиторий для его хранения. Привыкайте проверять код в репозитории в конце рабочего дня.
- Постарайтесь выполнять ваши автоматизированные тесты из централизованного места. Сделайте их независимыми от конкретных лиц. Любой член команды должен иметь возможность запускать тесты со своего компьютера, и результаты должны автоматически приходить по электронной почте.
Какие принципы Agile можно применить к автоматизации?
Несколько очень простых советов:
- Делайте все просто. Делайте только то, что необходимо. Не превращайте автоматизацию в слишком сложный процесс.
- Командный подход. Я считаю, что в Аgile-команде каждый является тестировщиком. Давайте не будем ограничивать работу по автоматизации только тестировщиками или только разработчиками. Каждый член команды должен входить в положение другого, работать сообща, чтобы достичь одну общую цель – разработать качественный продукт. Такой подход также будет эффективен для решения любых технических проблем, возникающих при разработке ПО.
- Разумно расходуйте свое время. Потратьте время на правильное проектирование, чтобы избежать технических проблем.
- Применяйте соответствующие стандарты программирования. Дизайн приложения должен быть простым, применяйте принципы ООП и старайтесь, чтобы тесты были независимы друг от друга.
Есть ли проблемы при автоматизации в Agile?
Автоматизация в методологии Agile имеет свои сложности:
- Нам нужно очень хорошо планировать. Выбор подходящего набора тестов, инструмента, фреймворка и подхода – все это требует правильной стратегии. При этом важно не переборщить с планированием.
- Необходимо следить за качеством кода и не пренебрегать им только потому, что мы хотим получить продукт быстро.
- Чаще всего команды не придерживаются командного подхода и перекладывают всю ответственность за поддержку автоматизированного набора тестов на тестировщиков.
- Автоматизировать функциональные тесты сложнее, чем автоматизировать пользовательский интерфейс (UI) .
Инструменты с открытым исходным кодом для Agile
- Selenium WebDriver: для пользовательского интерфейса
- Selenium Grid: для параллельного выполнения
- Cucumber: для BDD (Behavior-driven development)
- JMeter: для тестирования производительности
- SoapUI: для веб-сервисов
- WireMock: тестирование веб-сервиса, когда он недоступен
- Appium: для мобильных устройств
Ниже приведены знаменитые ATQ (Agile Test Quadrants):
- Квадрант 1 – это модульное тестирование и тестирование компонентов, которые можно автоматизировать с помощью подхода TDD (Test Driven Development).
- Квадрант 2 – тестирование функциональности, где мы можем применить подход BDD (Behavior-driven development).
- Квадрант 3 – единственный квадрант, в котором присутствует ручное тестирование
- Квадрант 4 – тестирование, которое может быть выполнено с помощью некоторых инструментов. Здесь рассматриваются нагрузочные тесты, стресс-тесты, тесты безопасности.
Заключение
Автоматизация тестирования в Agile предоставляет много возможностей не только для дымовых и регрессионных тестов. Автоматизировать можно любые повторяющиеся процессы.
Тестировщики должны стремиться к сотрудничеству и развивать свои навыки программирования и автоматизации. Если большинство тестов будут автоматизированы, это даст тестировщикам больше времени для выполнения более сложных и ответственных задач.
Перевод статьи «How to Implement Efficient Test Automation in the Agile World».