Структурирование огурца для поддержки тестирования как сервисов, так и уровней пользовательского интерфейса в пирамиде тестирования

Я настроил cucumber для обработки как уровня тестирования сервиса (например, API веб-сервиса), так и уровня UI (например, браузера DOM).

Я делаю это с помощью тегов. Я отмечаю каждый сценарий уровня API тегом @api. В моем сценарии @Before ловушка - это оператор if, который проверяет, содержит ли script.getSourceTagNames () @api. Если @api не обнаружен, драйвер инициализируется и создается экземпляр браузера.

Поскольку в моих тестах используется парадигма PageObject, определения шагов экранированы от HTML-деталей каждой страницы. Это заставило меня задуматься, могу ли я использовать внедрение зависимостей для управления тем, какой из двух наборов классов PageObject загружается. Первый набор будет обходить браузер Selenium и напрямую попадать на конечные точки сервера, чтобы получить значения, которые будут обработаны и отправлены обратно в определения шагов. Второй набор будет загружать классы селена PageObject и проходить через браузер для удовлетворения вызовов определения шага. Очевидно, что первый набор будет выполнен за меньшее (истекшее) время, чем второй.

Поэтому я начал поиск в Интернете, чтобы увидеть, что сделали другие. Я наткнулся на это сообщение в блоге Аслак Хеллесей. У Аслака есть что сказать:

* "Опытные пользователи Cucumber, которые понимают преимущества тестовой пирамиды, предпочтут запустить большинство сценариев со средним уровнем (без прохождения через пользовательский интерфейс). Затем они выберут небольшое подмножество тех же сценариев для запуска через пользовательский интерфейс и запускают те отдельно.

Если вы сохраняете всю логику автоматизации за интерфейсом AutomationApi, вы можете предоставить две разные реализации - одну, которая напрямую взаимодействует с моделью домена, и другую, которая использует Selenium WebDriver или другую библиотеку автоматизации пользовательского интерфейса."*

Для данного сервера CI Jenkins на шаге 1 выполняется сборка программного обеспечения, на шаге 2 выполняются модульные тесты, на шаге 3 выполняются тесты домена (API веб-сервера), а на шаге 4 запускаются тесты пользовательского интерфейса (например, веб-интерфейса). Таким образом, испытательная пирамида реализована.

Кто-нибудь реализовал идею Аслака? Если да, было ли фактическое совпадение между сценариями? То есть, вы запускали одни и те же сценарии как с реализацией API PageObjects (скажем, в вашей среде разработки), так и с реализацией PageObject в HTML (Selenium) (скажем, в CI)? Или тестовые сценарии были исключительно API xor web?

0 ответов

Другие вопросы по тегам