15
Software quality assurance days 17 Международная конференция по вопросам качества ПО sqadays.com Минск. 29–30 мая 2015 Говако Евгений Deutsche Bank Technology Center, Санкт-Петебург, Россия Исполнимые спецификации в тестировании UI.

Исполнимые спецификации в тестировании UI

  • Upload
    sqalab

  • View
    129

  • Download
    2

Embed Size (px)

Citation preview

Software quality assurance days17 Международная конференция по вопросам качества ПОsqadays.com

Минск. 29–30 мая 2015

Говако ЕвгенийDeutsche Bank Technology Center, Санкт-Петебург, Россия

Исполнимые спецификации в тестировании UI.

О себе Евгений Говако

QA/Test Automation Engineer

Deutsche Bank Technology Center Russia, St. Petersburg◦ В QA с 2004 года◦ QA Lead/Support Lead◦ QMS◦ Test Automation since 2012

Как пишут автотесты для UI

App

Driver

Framework

DSL

Test

Runner

Reporting

Test cases

Традиционный подход к автотестам

Test id Test Actions Expected Results

1 1. Open Control Panel with Red light shown2. Click Next button

1. Yellow light should be shown

[Test][Scenario("1")]public void 01_RedButtonShouldTurnOnGreenLight(){

// Open Control Panel with Red light shownOpen.ControlPanel();TrafficLight.RedLight.IsShown.ShouldBe(true);

// Click Next buttonControlPanel.NextButton.IsVisible.WaitFor(true);ControlPanel.NextButton.Click();

// Yellow light should be shownTrafficLight.YellowLight.IsShown.ShouldBecome(true);

}

Поддержка изменений

Test TestAPI App

Test Case

???

CR

T E S T S U P P O R T

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

Пишем тест на GherkinScenario: 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);}

Вводим параметризацию

[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

Делаем Data Driven testScenario Outline: 01 Switch Lights Given <original> Light is shown When user clicks on Next button Then <expected> light should be shownScenarios: | 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) {}

Поддержка изменений

Test Case

Binding TestAPI App

CR

T E S T S U P P O R T

Преимущества и недостатки

Прямая связь спецификации и автотестаВысокая скорость разработки тестовРазработка новых тестов без участия программистовПоддержка тестов на уровне модификации сценариев

Ограничение свободы QA в формулировках тестовых сценариевСпецификации уходят от бизнес-смысла к описанию манипуляций с интерфейсом

Лучшие практики

• Переиспользование шагов• Одно действие на шаг• Использование Background• Использование декларативного стиля написания

Что еще?

• Создание библиотеки общих шагов• Модификация фреймворка (SpecFlow) • Написание собственного интерпретатора

Q&A

mailto: [email protected]: george.eager