Автоматизация – ключевой принцип в IT. Правило гласит: «Автоматизируй все, что можно автоматизировать, даже если на это нужно потратить больше времени, чем сделать все вручную». Экономия сил, нервов и времени – главные причины автоматизации, особенно в тестировании.
Зачем автоматизировать тестирование?
Тестировщики проверяют новый и существующий функционал приложений, убеждаясь в его корректной работе. Количество задач растёт, поэтому автоматизация становится необходимой. Автоматизированное тестирование – это создание программ (скриптов, автотестов), выполняющих действия по проверке работы системы и сообщающих о результатах. Они прогоняют десятки или сотни сценариев взаимодействия с системой, выявляя успешные и неуспешные тесты.
Что тестируют автотесты?
Автотесты позволяют проверять различные аспекты приложения:
- API: Программы делают запросы к серверу с разными параметрами, сверяя ответы с ожидаемыми результатами. Например, проверка правильности возвращаемой температуры в градусах Цельсия.
- Базы данных: Проверяется корректность записи и извлечения данных, отсутствие потерь информации.
- Веб-приложения и мобильные приложения: Автотесты имитируют действия пользователя: открывают браузер (или приложение), нажимают кнопки, заполняют формы, проверяют корректность отображения данных и загрузки страниц. Это end-to-end тестирование – прохождение полного пользовательского пути.
Автоматизация позволяет заменить ручное выполнение повторяющихся действий, таких как переходы по страницам, нажатие кнопок в различных комбинациях и проверка результатов на разных браузерах.
Инструменты автоматизированного тестирования
Рассмотрим некоторые инструменты:
- Selenium: Семейство инструментов для автоматизации браузеров. Selenium WebDriver – библиотека для отправки команд браузеру и получения результатов. Поддерживает Java, C#, Ruby, JavaScript и Python.
- Selenium IDE: Плагин для браузеров, записывающий действия пользователя и преобразующий их в код для последующего воспроизведения.
- Другие инструменты: Puppeteer, Playwright, Cypress (для веб-приложений) и Appium (для мобильных приложений).
- Фреймворки: PyTest (для Python), JUnit (для Java) – упрощают написание и запуск тестов.
- Тестирование API: Postman с вкладкой Tests (с использованием JavaScript).
Нагрузочное тестирование и отчетность
Нагрузочное тестирование оценивает, как система справляется с высокой нагрузкой. Инструменты, такие как Apache JMeter и LoadRunner, позволяют имитировать большое количество запросов, моделируя поведение реальных пользователей. Для составления отчетов о тестировании (пройденные/непройденные тесты, проблемы) используются инструменты, например, Allure Report. Он поддерживает различные языки и фреймворки, генерируя наглядные графики и таблицы. Интеграция автотестов в CI/CD-пайплайн позволяет автоматизировать запуск тестов при выкатке нового функционала.
Роль человека в автоматизированном тестировании
Автоматизация не заменит ручное тестирование полностью. Необходимо первоначальное ручное тестирование для понимания работы системы, составления тест-кейсов и сценариев. Некоторые аспекты, например, удобство использования интерфейса, оценивает только человек. Ручные и автоматизированные тестировщики работают сообща: ручные проверяют новые фичи, а автоматизированные поддерживают существующие тесты.