Upgrade to Pro — share decks privately, control downloads, hide ads and more …

SETCON'19 - Vladimir Romanyuk - Стабильные авто...

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on.

SETCON'19 - Vladimir Romanyuk - Стабильные автотесты в изолированном окружении

Avatar for Maksim

Maksim

May 10, 2019

More Decks by Maksim

Other Decks in Technology

Transcript

  1. О себе • 7 лет в автоматизации тестирования • В

    последнее время фокусируюсь на автоматизации тестирования веб-сервисов с использованием Java технологий. Владимир Романюк Изображение Powered by EPAM
  2. План • Введение в проблему • Проблемы подхода с тестовыми

    окружениями • Введение в подход с изолированными тестами • Описание Wiremock и его возможностей • Описание подхода к изолированныму тестированию с использованием Wiremock и Docker • Проблемы с изолированными тестами • Вопросы и ответы Powered by EPAM
  3. Запуск регрессии на нестабильном окружении Процент тестов, упавших из-за дефектов,

    минимален. Результаты нерелевантные. Много времени уходит впустую на анализ результатов. Powered by EPAM
  4. Описание подхода к интеграционному тестированию Ядро: • Клиенты • HTTP

    • TCP • DB • … • Хелперы Тестовая логика • Автоматизированные тесты • Тестовый контекст • Управление окружениями • Инициализация клиентов • Билдеры для запросов • Валидаторы для ответов Структура Powered by EPAM
  5. Проблемы с тестированием на тестовых окружениях • Постоянно меняются тестовые

    данные, на которые нельзя повлиять • Интеграция со сторонней системой в разработке, но ещё не функционирует • Низкий performance • Разные версии на разных окружениях • Доступ к окружению ограничен • Частые деплои • Необходимо протестировать случай, который сложно воспроизвести на реальном тестовом окружении • ... Powered by EPAM
  6. Что такое Wiremock? Wiremock – симулятор API на HTTP протоколе.

    Его также называют сервисом виртаулизации или мок-сервером. Powered by EPAM
  7. Описание подхода к изолированному тестированию Ядро: • Клиенты • HTTP

    • TCP • DB • … • Хелперы Тестовая логика • Автоматизированные тесты • Тестовый контекст • Управление окружениями • Инициализация клиентов • Билдеры для запросов • Валидаторы для ответов Структура Powered by EPAM Wiremock • Request/Response mappings Docker-Compose • YAML файл, в котором описаны настройки Docker контейнеров для изолированного окружения
  8. Описание подхода к изолированному тестированию Powered by EPAM Demo service

    Docker container Wiremock Docker container Functional tests Docker environment Структура
  9. Проблемы с тестированием в изолированном окружении • Нужно следить, чтобы

    моки были up-to-date с внешними системами • При неправильной реализации есть риск создать ложноположительные тесты • ... Powered by EPAM
  10. Достоинства изолированного окружения • Не страшны проблемы с тестовым окружением

    • Высокая производительность • Можно заранее писать автоматизированные тесты • Моки хранятся в той же ветке, что и код, поэтому нет проблем с версионированием • Можно тестировать кейсы, которые сложно воспроизвести • Можно автоматизировать проверку запросов на внешние системы • Тесты можно включить в CD pipeline • ... Powered by EPAM
  11. Полезные ссылки http://wiremock.org/docs/ - документация Wiremock https://youtu.be/x3MvZ8DFrpE - полезный доклад

    по основам Wiremock https://docs.docker.com/compose/ - документация Docker Compose http://groovy-lang.org/documentation.html - документация Groovy https://docs.gradle.org/current/userguide/userguide.html - документация Gradle http://spockframework.org/spock/docs/1.2/all_in_one.html - документация Spock Powered by EPAM
  12. Что могло войти в доклад, но не вошло? • Способы

    построения тестового решения для API и UI тестирования с использованием различных фреймворков • Способы реализации изолированного тестового окружения • Как правильно тестировать контракты • Включение изолированных тестов в CI/CD pipelines • ... Powered by EPAM