Автоматизация тестирования
last update: 18-12-2020, 10:07
Ресурсы
Базовое
Автоматизированное тестирование ПО (Automation Testing) = процесс верификации ПО, при котором основные функции и шаги теста (запуск, инициализация, выполнение, анализ и выдача результата) выполняются автоматически при помощи инструментов для автоматизированного тестирования.
Комплексный подход
Тестирование в условиях микросервисной архитектуры и Service mesh
Cucumber
Coded UI
Основные подходы
Существуют следующие основные подходы:
- тестирование на уровне кода - модульное (unit testing). Это тестирование одного модуля кода (обычно это одна функция или один класс в случае ООП-кода) в изолированном окружении. Это значит, что если код использует какие-то сторонние классы, то вместо них подсовываются классы-заглушки (моки и стабы). Код не должен работать с сетью (и внешними серверами), файлами, базой данных, иначе мы тестируем не саму функцию или класс, а еще и диск, базу, и т.д.
-
тестирование API. API - это набор функций, которые можно вызывать, чтобы получить какие-то данные.
Например, у Яндекс.Карт есть API геокодера. Отправив к нему запрос с географическим адресом, ты можешь получить координаты точки (и наоборот), а у Центробанка есть API, которое возвращает официальный курс валют в заданный день.
Если у твоего приложения есть API, то можно тестировать его, посылая заранее подготовленные запросы и сравнивая пришедший ответ с ожидаемым.
- тестирование пользовательского интерфейса - (GUI-тестирование). Имитация действий пользователя с помощью специальных тестовых фреймворков.
Некоторые инструменты для автоматизированного тестирования:
Что автоматизировать
Какие тест-кейсы стоит автоматизировать в первую очередь
- покрывающие самые критические для Бизнеса бизнес-процессы и юзкейсы
- часто требующиеся к (пере)прохождению
-
которые слишком сложно и неудобно выполнять вручную
, например, содержащие проверку данных, требующих точных математических и логических расчётов (банковское, бухгалтерское, аналитическое ПО)
или проверку структуры многочисленных файлов/сообщений, созданных системой.
-
требующие много времени на ручное прохождение
, например по проверке корректности отображаемых результатов поиска данных в ответ на запрос по данным
или проверяющие длинные бизнес-процессы, требующие действий под различными пользовательскими ролями на многочисленных формах UI и в различных системах.
В общем случае, автоматизируют
регрессионные тест-кейсы и
API-тесты.
Какие тест-кейсы НЕ СТОИТ автоматизировать
- разработанные недавно и еще не проверенные вручную
- требования для которых постоянно меняются
- разработанные для специфической задачи
Общие рекомендации
-
Разметка автотестов по @Tag, @Category, @Feature, @Types, @Step и прочему. Не экономьте на этом.
Такая группировка автотестов позволяет производить запуск не всех 100500 тестов при каждом чихе, а именно тех, которые связаны с изменённой/добавленной функциональностью.
Также это позволяет производить трассировку между тестами и функциональностью.
- Для smoke-тестирования: меньше тестов, но больше шагов в тестах. Довольно неочевидно.
- TBD
Java + Maven + Cucumber + Selenium
Создадим примитивные helloworld GUI-тест и API-тест с использованием Java, Maven, Cucumber (+JUnit) и Selenium.
Нижеизложенное выполнялось под Windows 10 и Intellij IDEA Ultimate 2020.1.
Установка
-
Установить JRE (Java Run-Time Environment) = https://www.java.com/ru/download/
Посредством консоли убедиться что Java установлена, например:
> java -version
java version "1.8.0_261"
Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
-
Установить JDK: SE или EE.
Ссылки для Java Standard Edition:
- Java SE download = https://www.oracle.com/java/technologies/javase-downloads.html
- JDK installation guide = https://docs.oracle.com/en/java/javase/14/install/overview-jdk-installation.html
-
Настроить системные Переменные среды (Environment variables) для Java:
- JAVA_HOME = [путь установленного JDK, например C:\Program Files\Java\jdk-14.0.2]
- в переменную Path добавить путь %JAVA_HOME%\bin
-
Установить Maven:
- download = https://maven.apache.org/download.cgi
- installation guide = https://maven.apache.org/install.html
- installation guide = https://mkyong.com/maven/how-to-install-maven-in-windows/
-
Настроить системные Переменные среды (Environment variables) для Java:
- MAVEN_HOME = [путь установленного Maven, например C:\Program Files\apache-maven-3.6.3].
- в переменную Path добавить путь %MAVEN_HOME%\bin
Проверить корректность установки и настройки можно в cmd
> mvn -v
Apache Maven 3.6.3
Maven home: C:\Program Files\apache-maven-3.6.3\bin\..
Java version: 14.0.2, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk-14.0.2
Default locale: ru_RU, platform encoding: Cp1251
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
-
Установить Intellij IDEA
Настройка IDEA, создание Проекта, настройка dependencies
-
Настроить Intellij IDEA на работу с Maven.
- Меню File/Config -> Settings -> Build, Execution, Deployment -> Build Tools -> Maven. Maven home directory = путь до каталога с Мавен
- .. Maven->Importing. JDK for importer = Use JAVA_HOME
- .. Maven->Runner. JRE = Use JAVA_HOME
- OK
-
Создание Проекта:
- +Create New Proejct
- Maven
- Archetype = org.apache.maven.archetypes:maven-archetype-quickstart
- Project SDK = [путь до JDK]
- Next
- Заполняем Name, выбираем Location
- Заполняем GroupId и ArtifactId, например = org.tests и helloworld
- Finish
-
(дождались когда IDEA подтянула всё что нужно и обновила файл pom.xml, добавив блок dependencies)
Подключить в POM-файл dependency свежего Cucumber (поиск по Maven Central Repository):
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>6.2.2</version>
<scope>test</scope>
</dependency>
Этот модуль сам уже имеет зависимость от модуля cucumber-junit, который имеет зависимость от модуля junit, так что можно их явно самому не указывать в dependency.
-
Подключить в POM-файл dependency свежего Selenium (поиск по Maven Central Repository):
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.14.0</version>
</dependency>
-
либо в IDEA либо в консоли в каталоге проекта выполняем
mvn clean compile
Произойдёт всё на свете.
Hello world
-
Структура проекта, создание cucumber-файлов для фич и кода
TBD
-
Hello World test
TBD