# ПРОЦЕССЫ Ресурсы Цикл разработки ПО Waterfall RUP Agile Kanban Управление Теория ограничений АНАЛИЗ Ресурсы ПО для Аналитика Кто аналитики? Бизнес-процесс Требования Уровни и типы Источники Стейкхолдеры Нотации Vision (Концепция) Сервисы АРХИТЕКТУРА Ресурсы ПО для Архитектора Кто архитекторы? Архитектурные слои язык Archimate GAP-анализ SOA Типы интеграции Solution Design (Проектное решение) DDD Микросервисы и service mesh ESB HTTP/REST RPC DevOps CI/CD/CDP VM и Docker Контракты API Оценка задачи git Frontend Apache Регулярка Linux ТЕСТИРОВАНИЕ Ресурсы QA и QC Цикл тестирования Уровни тестирования Виды тестирования Баг-репорт Шаблоны Тестирование требований Тест-анализ и тест дизайн Тест план Метрики качества Автотесты Selenium XPATH Генератор данных Безопасность Нагрузочное ДАННЫЕ Ресурсы MDM Big data Об информации SQL intro MongoDB intro БИБЛИОТЕКА Курсы Системная инженерия Сознание, интеллект Политэкономия Сумма технологии Экстраполяция в будущее Красивые диаграммы Арт
Эта страница:
Ресурсы Основные подходы Что автоматизировать Общие рекомендации Java + Maven + Cucumber + Selenium
Другие страницы:
ТЕСТИРОВАНИЕ Тестирование требований Тест-анализ и тест дизайн Тест план Метрики качества Android Автоматизация Selenium WebDriver XPATH Генератор случайных данных Различные расчёты Безопасность Нагрузочное
Другие разделы:
# АНАЛИЗ АРХИТЕКТУРА ДАННЫЕ DevOps БИБЛИОТЕКА ПРОЦЕССЫ ТЕСТИРОВАНИЕ
Автоматизация тестирования
last update: 08-11-2020, 10:29
Ресурсы

Базовое

Автоматизированное тестирование ПО (Automation Testing) = процесс верификации ПО, при котором основные функции и шаги теста (запуск, инициализация, выполнение, анализ и выдача результата) выполняются автоматически при помощи инструментов для автоматизированного тестирования.

Комплексный подход

Тестирование в условиях микросервисной архитектуры и Service mesh

Cucumber

Coded UI

Основные подходы
Существуют следующие основные подходы:
  • тестирование на уровне кода - модульное (unit testing). Это тестирование одного модуля кода (обычно это одна функция или один класс в случае ООП-кода) в изолированном окружении. Это значит, что если код использует какие-то сторонние классы, то вместо них подсовываются классы-заглушки (моки и стабы). Код не должен работать с сетью (и внешними серверами), файлами, базой данных, иначе мы тестируем не саму функцию или класс, а еще и диск, базу, и т.д.
  • тестирование API. API - это набор функций, которые можно вызывать, чтобы получить какие-то данные.
    Например, у Яндекс.Карт есть API геокодера. Отправив к нему запрос с географическим адресом, ты можешь получить координаты точки (и наоборот), а у Центробанка есть API, которое возвращает официальный курс валют в заданный день.
    Если у твоего приложения есть API, то можно тестировать его, посылая заранее подготовленные запросы и сравнивая пришедший ответ с ожидаемым.
  • тестирование пользовательского интерфейса - (GUI-тестирование). Имитация действий пользователя с помощью специальных тестовых фреймворков.
Некоторые инструменты для автоматизированного тестирования:
Что автоматизировать

Какие тест-кейсы стоит автоматизировать в первую очередь

  • покрывающие самые критические для Бизнеса бизнес-процессы и юзкейсы
  • часто требующиеся к (пере)прохождению
  • которые слишком сложно и неудобно выполнять вручную
    , например, содержащие проверку данных, требующих точных математических и логических расчётов (банковское, бухгалтерское, аналитическое ПО)
    или проверку структуры многочисленных файлов/сообщений, созданных системой.
  • требующие много времени на ручное прохождение
    , например по проверке корректности отображаемых результатов поиска данных в ответ на запрос по данным
    или проверяющие длинные бизнес-процессы, требующие действий под различными пользовательскими ролями на многочисленных формах UI и в различных системах.
В общем случае, автоматизируют регрессионные тест-кейсы и API-тесты.

Какие тест-кейсы НЕ СТОИТ автоматизировать

  • разработанные недавно и еще не проверенные вручную
  • требования для которых постоянно меняются
  • разработанные для специфической задачи
Общие рекомендации

  1. Разметка автотестов по @Tag, @Category, @Feature, @Types, @Step и прочему. Не экономьте на этом.
    Такая группировка автотестов позволяет производить запуск не всех 100500 тестов при каждом чихе, а именно тех, которые связаны с изменённой/добавленной функциональностью.
    Также это позволяет производить трассировку между тестами и функциональностью.
  2. Для smoke-тестирования: меньше тестов, но больше шагов в тестах. Довольно неочевидно.
  3. TBD

Java + Maven + Cucumber + Selenium

Создадим примитивные helloworld GUI-тест и API-тест с использованием Java, Maven, Cucumber (+JUnit) и Selenium.
Нижеизложенное выполнялось под Windows 10 и Intellij IDEA Ultimate 2020.1.

Установка

  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)
  2. Установить JDK: SE или EE.
    Ссылки для Java Standard Edition:
    1. Java SE download = https://www.oracle.com/java/technologies/javase-downloads.html
    2. JDK installation guide = https://docs.oracle.com/en/java/javase/14/install/overview-jdk-installation.html
  3. Настроить Переменные среды (Environment variables) для Java:
    1. JAVA_HOME = [путь установленного JDK, например C:\Program Files\Java\jdk-14.0.2]
    2. в переменную Path добавить путь %JAVA_HOME%\bin
  4. Установить Maven:
    1. download = https://maven.apache.org/download.cgi
    2. installation guide = https://maven.apache.org/install.html
    3. installation guide = https://mkyong.com/maven/how-to-install-maven-in-windows/
  5. Настроить Переменные среды (Environment variables) для Java:
    1. MAVEN_HOME = [путь установленного Maven, например C:\Program Files\apache-maven-3.6.3\bin].
    2. в переменную 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"
  6. Установить Intellij IDEA

Настройка IDEA, создание Проекта, настройка dependencies

  1. Настроить Intellij IDEA на работу с Maven.
    1. Меню File/Config -> Settings -> Build, Execution, Deployment -> Build Tools -> Maven. Maven home directory = путь до каталога с Мавен
    2. .. Maven->Importing. JDK for importer = Use JAVA_HOME
    3. .. Maven->Runner. JRE = Use JAVA_HOME
    4. OK
  2. Создание Проекта:
    1. +Create New Proejct
    2. Maven
    3. Archetype = org.apache.maven.archetypes:maven-archetype-quickstart
    4. Project SDK = [путь до JDK]
    5. Next
    6. Заполняем Name, выбираем Location
    7. Заполняем GroupId и ArtifactId, например = org.tests и helloworld
    8. Finish
  3. (дождались когда 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.
  4. Подключить в POM-файл dependency свежего Selenium (поиск по Maven Central Repository): <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.14.0</version> </dependency>
  5. либо в IDEA либо в консоли в каталоге проекта выполняем
    mvn clean compile
    Произойдёт всё на свете.

Hello world

  1. Структура проекта, создание cucumber-файлов для фич и кода
    TBD
  2. Hello World test
    TBD