От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
Исполнимые спецификации в тестировании UI
1. Software quality assurance days
17 Международная конференция
по вопросам качества ПО
sqadays.com
Минск. 29–30 мая 2015
Говако Евгений
Deutsche Bank Technology Center, Санкт-Петебург, Россия
Исполнимые спецификации в тестировании UI.
2. О себе
Евгений Говако
QA/Test Automation Engineer
Deutsche Bank Technology Center Russia, St. Petersburg
◦ В QA с 2004 года
◦ QA Lead/Support Lead
◦ QMS
◦ Test Automation since 2012
3. Как пишут автотесты для UI
App
Driver
Framework
DSL
Test
Runner
Reporting
Test cases
4. Традиционный подход к автотестам
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]
[Scenario("1")]
public void 01_RedButtonShouldTurnOnGreenLight()
{
// Open Control Panel with Red light shown
Open.ControlPanel();
TrafficLight.RedLight.IsShown.ShouldBe(true);
// Click Next button
ControlPanel.NextButton.IsVisible.WaitFor(true);
ControlPanel.NextButton.Click();
// Yellow light should be shown
TrafficLight.YellowLight.IsShown.ShouldBecome(true);
}
6. Gherkin – исполнимые спецификации
◦ Автотесты - исполнение спецификации шаг за
шагом
◦ Gherkin – язык, позволяющий формализовать
исполнение строк спецификации
◦ Gherkin – сам по себе является языком
программирования
◦ Ключевые слова Given/When/Then
◦ Предполагает интерпретатор шагов
(Cucumber/SpecFlow)
◦ Изначально изобретен в для написания
спецификаций для Cucumber
7. Выполнение 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
8. Пишем тест на 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
[Given(@"Red light is shown")]
public void CheckRedLightShown()
{
TrafficLight.RedLight.IsShown.ShouldBe(true);
}
[When(@"user clicks on Next button")]
public void PressButton()
{
ControlPanel.NextButton.IsVisible.WaitFor(true);
ControlPanel.NextButton.Click();
}
[Then(@"Yellow light should be shown")]
public void CheckLightVisibility()
{
TrafficLight.YellowLight.IsShown.ShouldBe(true);
}
9. Вводим параметризацию
[Given(@"(.*) light is shown")]
public void CheckRedLightShown(Light light)
{
TrafficLight.GetLight(light).IsShown.ShouldBe(true);
}
[When(@"user clicks on Next button")]
public void PressButton()
{
ControlPanel.NextButton.IsVisible.WaitFor(true);
ControlPanel.NextButton.Click();
}
[Then(@"(.*) light should be shown")]
public void CheckLightVisibility(Light light)
{
TrafficLight.GetLight(light).IsShown.ShouldBe(true);;
}
Scenario: 01 Turn red to Red Yellow
Given Red Light is shown
When user clicks on Next button
Then Yellow light should be shown
10. Делаем Data Driven test
Scenario Outline: 01 Switch Lights
Given <original> Light is shown
When user clicks on Next button
Then <expected> light should be shown
Scenarios:
| original | expected |
| red | green |
| greeen | yellow |
| yellow | red |
[Given(@"(.*) light is shown")]
public void CheckRedLightShown(Light light) {}
[When(@"user clicks on Next button")]
public void PressButton() {}
[Then(@"(.*) light should be shown")]
public void CheckLightVisibility(Light light) {}
12. Преимущества и недостатки
Прямая связь
спецификации и
автотеста
Высокая скорость
разработки тестов
Разработка новых
тестов без участия
программистов
Поддержка тестов на
уровне модификации
сценариев
Ограничение свободы
QA в формулировках
тестовых сценариев
Спецификации уходят
от бизнес-смысла к
описанию
манипуляций с
интерфейсом