Исполнимые спецификации в тестировании UI НАПИСАНИЕ АВТОТЕСТОВ ДЛЯ UI НА ЯЗЫКЕ GHERKIN С ИСПОЛЬЗОВАНИЕМ SPECFLOW
Как пишут автотесты для UI Что нужно для написания автотестов? Тест-кейсы Инструмент для взаимодействия с UI Поиск элементов Имитация действий пользователя Фреймворк предоставляющий обьектную модель для написания автотестов Обертки для найденных элементов (Text Box, Button, Combobox) Модель организации элементов (PageObject) DSL, переводящий бизнес-действия, описанные в тест-кейсах в последовательность действий с элементами UI Test Runner – утилита, занимающаяся запуском тестов и сбором результатов их выполнения Автотесты, написанные на том или ином языке программирования
Традиционный подход к автотестам Test id Test Actions Expected Results 1 1. Open Control Panel with Red light shown 2. Click Next button 1. Yellow light should be shown
Поддержка изменений Test TestAP I App Test Case ??? CR TEST SUPPORT
Gherkin – исполнимые спецификации Автотесты - исполнение спецификации шаг за шагом Gherkin – язык, позволяющий формализовать исполнение строк спецификации Gherkin – сам по себе является языком программирования Ключевые слова Given/When/Then Предполагает интерпретатор шагов (Cucumber/SpecFlow) Изначально изобретен в для написания спецификаций для Cucumber
Выполнение Gherkin Строка Поиск метода по шаблону Выполнение с параметрами Scenario : 01 Turn red to Red Yellow Given Red Light is shown When user clicks on Next button Then Yellow light should be shown
Пишем тест на Gherkin
Вводим параметризацию
Делаем Data Driven test
Поддержка изменений Test Case Binding TestAPI App CR TEST SUPPORT
Преимущества и недостатки Прямая связь спецификации и автотеста Высокая скорость разработки тестов Разработка новых тестов без участия программистов Поддержка тестов на уровне модификации сценариев Автоматизация накладывает ограничения на язык сценариев Спецификации уходят от бизнес-смысла к описанию манипуляций с интерфейсом
Лучшие практики Переиспользование шагов Использование декларативного стиля написания Одно действие на шаг Использование Background
Что еще? Создание библиотеки общих шагов Модификация фреймворка (SpecFlow) Написание собственного интерпретатора
Q&A