Академический Документы
Профессиональный Документы
Культура Документы
1. Объект автотестирования........................................................................................................................................3
1.1. Гибридный подход............................................................................................................................................3
1.2. Микросервисная архитектура..........................................................................................................................3
2. Инфраструктура........................................................................................................................................................4
2.1. Bitbucket..............................................................................................................................................................4
2.1.1. Версии проектов.........................................................................................................................................4
2.1.2. Ветки.............................................................................................................................................................4
2.2. Jenkins.................................................................................................................................................................4
2.2.1. Пайплайны...................................................................................................................................................4
2.2.2. Сборка, раскатка новой версии приложения и прогон автотестов.......................................................4
2.3. Selenium Grid......................................................................................................................................................5
3. Стек автоматизации..................................................................................................................................................6
3.1. Ruby..................................................................................................................................................................... 6
3.2. Selenium Webdriver............................................................................................................................................6
3.3. Cucumber.............................................................................................................................................................6
3.4. Capybara..............................................................................................................................................................7
3.5. SitePrism..............................................................................................................................................................7
3.6. ParallelTests.........................................................................................................................................................7
4. Структура проекта автотестов..................................................................................................................................8
4.1. Папка config........................................................................................................................................................8
4.2. Папка features....................................................................................................................................................8
4.2.2. Папка Features.............................................................................................................................................8
4.2.3. Папка step_definitions.................................................................................................................................9
4.2.4. Папка support..............................................................................................................................................9
4.3. Файл Cucumber.yml............................................................................................................................................9
4.4. Файл run_cucumber.sh.......................................................................................................................................9
4.5. Файл env.rb.........................................................................................................................................................9
4.6. Файл hooks.rb.....................................................................................................................................................9
5. Процесс запуска автотестов...................................................................................................................................11
5.1. Виды запуска....................................................................................................................................................11
5.1.1. Локальный запуск.....................................................................................................................................11
5.1.2. Удаленный запуск.....................................................................................................................................11
5.2. Многопоточный запуск на Selenium Grid......................................................................................................11
5.2.1. Что такое Selenium Grid............................................................................................................................11
5.2.2. Что такое Hub и Node................................................................................................................................11
5.2.3. Как работает Selenium-сервер.................................................................................................................12
5.2.4. Как работает Selenium-грид.....................................................................................................................12
5.2.5. Что же происходит с Hub’ом и Node’ами после старта грида?............................................................13
5.2.6. Настройка тестового окружения env.rb..................................................................................................13
5.2.7. Установка gem parallel_tests....................................................................................................................14
5.2.8. Чем же отличается старт грида в докер-контейнерах?........................................................................14
5.3. Отчеты Cucumber Reports................................................................................................................................14
5.3.1. По фичам...................................................................................................................................................15
5.3.2. По тегам.....................................................................................................................................................15
1. Объект автотестирования
Веб приложение для автоматизации работы оператора банка:
фронт – React (HTML, CSS, JS);
бэк – Spring (Java);
2.1.2. Ветки
Существуют следующие ветки в репозитории Битбакета:
master – изменения идут на интеграцию и в прод
dev – изменения идут на тестовую, разработческую среду
2.2. Jenkins
Jenkins – это программное обеспечение, обеспечивающее непрерывную
интеграцию.
2.2.1. Пайплайны
Jenkins Pipeline — это сочетание заданий для непрерывной доставки
программного обеспечения с использованием Jenkins.
Jenkins Pipeline позволяет создавать сценарий сборки, состоящий из одной или
нескольких задач, и визуально отслеживать рабочий процесс. Можно увидеть, какие
задания уже запущены или все еще находятся в очереди на исполнение.
3.3. Cucumber
Сucumber — инструмент для написания BDD тестов, позволяющий писать тесты
на человеческом языке. Для этого используется нотация Gherkin, которая определяет
структуру и правила написания сценариев. Он позволяет описать поведение системы с
позиции внешнего наблюдателя (читать как «заказчика, конечного пользователя»).
При этом описание дается на естественно языке, никаких вам begin end.
Каждый вариант использования системы в огурце называется «фичей» (feature).
Все они лежат в одноименной папочке features с расширением файла *.feature. В
каждом файле описывается один или несколько «сценариев» (scenario),
характеризующих фичу. Сценарии состоят из ряда шагов, объявленных в файлах из
папки features/step_definitions/*_steps.rb.
Шаги бывают трех типов:
Given (что-то данное, некоторое предварительное условие);
When (что-то, что происходит, какие-то действия пользователя);
Then (результат, реакция, отклик);
Через собачку (@) расставляются метки, позволяющие наложить
дополнительные условия на всю фичу или конкретный сценарий, а так же выборочно
выполнить тест. В принципе все читабельно. В идеале должно быть так, чтобы
заказчик взял этот файл, открыл простым текстовым редактором и не напрягаясь
прочел, все понял, осознал и подтвердил: «Оно!»
В проекте автотестов имеются следующие основные метки:
@development – разработческая среда
@integration – интеграционная среда
@prelive – прелайв среда
@prod – продуктовая среда
3.4. Capybara
Capybara — гем, позволяющий искать/кликать/… по элементам браузера. Т.е.
представляет собой связующее звено между Cucumber шагами (steps) теста, и
webdriver-ом (экземпляр вызываемого браузера).
На Огурце мы пишет наши тесты простым языком, а сами шаги реализуем с
использованием Capybara. А Capybara уже взаимодействует с webdriver'ом
https://github.com/teamcapybara/capybara
3.5. SitePrism
SitePrism – гем, который предоставляет вам простой и чистый DSL для описания
страниц сайта с использованием шаблона Page Object.
С помощью этого гема релизован паттерн PageObject.
https://github.com/site-prism/site_prism
https://rdoc.info/gems/site_prism/frames
3.6. ParallelTests
ParallelTests – гем, который разбивает тесты на группы и запускает каждую
группу в отдельном потоке (процессе).
С помощью этого гема реализован параллельный запуск тестов.
https://github.com/grosser/parallel_tests
4. Структура проекта автотестов
Структура папок и файлов проекта следующая:
config – параметры сред, в которых запускаются тесты;
features – тестовые сценарии, реализации шагов сценариев и прочие
вспомогательные файлы;
resources – файлы необходимые для выполнения сценариев (например для
вложения и отправки);
screenshots – скриншоты сделанные во время выполнения тестов;
cucumber.yml – параметры для Cucumber;
Gemfile – файл с списком необходимых гемов проекта;
Gemfile.lock – файл с списком необходимых гемов проекта с их версией и
зависимостями;
run_cucumber.sh – файл для запуска тестов;
https://www.testdevlab.com/blog/2018/02/adding-browser-logs-to-your-capybara-
cucumber-ui-test-report/
5. Процесс запуска автотестов
5.1. Виды запуска
5.1.1. Локальный запуск
Локальный запуск можно выполнять через Ruby Mine.
http://bug-bang-theory.blogspot.com/2015/01/selenium-grid-with-jenkins.html
https://www.software-testing.ru/library/around-testing/processes/2601-apache-
mesos
https://libraries.io/github/jenkinsci/cucumber-reports-plugin
https://github.com/jenkinsci/cucumber-reports-plugin
https://plugins.jenkins.io/cucumber-reports/
https://jenkins.io/doc/pipeline/steps/cucumber-reports/#cucumber-cucumber-
reports
https://medium.com/faun/running-cucumber-tests-with-jenkins-a5a3a8df07eb
https://cucumber.io/docs/cucumber/reporting/#built-in-reporter-plugins
https://github.com/jenkinsci/cucumber-reports-plugin
http://www.seleniumframework.com/continuous-test-automation/cucumber-
jenkins-plugins/
5.3.1. По фичам
5.3.2. По тегам