SlideShare uma empresa Scribd logo
1 de 15
Software quality assurance days
17 Международная конференция
по вопросам качества ПО
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 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);
}
Поддержка изменений
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
Пишем тест на 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);
}
Вводим параметризацию
[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 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) {}
Поддержка изменений
Test Case
Binding TestAPI App
CR
T E S T S U P P O R T
Преимущества и недостатки
Прямая связь
спецификации и
автотеста
Высокая скорость
разработки тестов
Разработка новых
тестов без участия
программистов
Поддержка тестов на
уровне модификации
сценариев
Ограничение свободы
QA в формулировках
тестовых сценариев
Спецификации уходят
от бизнес-смысла к
описанию
манипуляций с
интерфейсом
Лучшие практики
• Переиспользование шагов
• Одно действие на шаг
• Использование Background
• Использование декларативного стиля написания
Что еще?
• Создание библиотеки общих шагов
• Модификация фреймворка (SpecFlow)
• Написание собственного интерпретатора
Q&A
mailto: egovako@gmail.com
Skype: george.eager

Mais conteúdo relacionado

Destaque

Git для тестировщиков
Git для тестировщиковGit для тестировщиков
Git для тестировщиковSQALab
 
Формирование требований из хотелок заказчика
Формирование требований из хотелок заказчикаФормирование требований из хотелок заказчика
Формирование требований из хотелок заказчикаSQALab
 
Особенности тестирования облачных сервисов
Особенности тестирования облачных сервисовОсобенности тестирования облачных сервисов
Особенности тестирования облачных сервисовSQALab
 
Хороший тестировщик может всё
Хороший тестировщик может всёХороший тестировщик может всё
Хороший тестировщик может всёSQALab
 
Опыт создания системы для внутреннего управления процессами обеспечения качес...
Опыт создания системы для внутреннего управления процессами обеспечения качес...Опыт создания системы для внутреннего управления процессами обеспечения качес...
Опыт создания системы для внутреннего управления процессами обеспечения качес...SQALab
 
Эффективное взаимодействие тестировщика и аналитика
Эффективное взаимодействие тестировщика и аналитикаЭффективное взаимодействие тестировщика и аналитика
Эффективное взаимодействие тестировщика и аналитикаSQALab
 
Оценки тестирования - полезные и условные метрики
Оценки тестирования - полезные и условные метрикиОценки тестирования - полезные и условные метрики
Оценки тестирования - полезные и условные метрикиSQALab
 
Как же научиться программировать, в конце концов?
Как же научиться программировать, в конце концов?Как же научиться программировать, в конце концов?
Как же научиться программировать, в конце концов?SQALab
 
Качественное тестовое задание? Без проблем!
Качественное тестовое задание? Без проблем!Качественное тестовое задание? Без проблем!
Качественное тестовое задание? Без проблем!SQALab
 

Destaque (9)

Git для тестировщиков
Git для тестировщиковGit для тестировщиков
Git для тестировщиков
 
Формирование требований из хотелок заказчика
Формирование требований из хотелок заказчикаФормирование требований из хотелок заказчика
Формирование требований из хотелок заказчика
 
Особенности тестирования облачных сервисов
Особенности тестирования облачных сервисовОсобенности тестирования облачных сервисов
Особенности тестирования облачных сервисов
 
Хороший тестировщик может всё
Хороший тестировщик может всёХороший тестировщик может всё
Хороший тестировщик может всё
 
Опыт создания системы для внутреннего управления процессами обеспечения качес...
Опыт создания системы для внутреннего управления процессами обеспечения качес...Опыт создания системы для внутреннего управления процессами обеспечения качес...
Опыт создания системы для внутреннего управления процессами обеспечения качес...
 
Эффективное взаимодействие тестировщика и аналитика
Эффективное взаимодействие тестировщика и аналитикаЭффективное взаимодействие тестировщика и аналитика
Эффективное взаимодействие тестировщика и аналитика
 
Оценки тестирования - полезные и условные метрики
Оценки тестирования - полезные и условные метрикиОценки тестирования - полезные и условные метрики
Оценки тестирования - полезные и условные метрики
 
Как же научиться программировать, в конце концов?
Как же научиться программировать, в конце концов?Как же научиться программировать, в конце концов?
Как же научиться программировать, в конце концов?
 
Качественное тестовое задание? Без проблем!
Качественное тестовое задание? Без проблем!Качественное тестовое задание? Без проблем!
Качественное тестовое задание? Без проблем!
 

Mais de SQALab

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировкуSQALab
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаSQALab
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиSQALab
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияSQALab
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...SQALab
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testingSQALab
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженSQALab
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииSQALab
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовSQALab
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовSQALab
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsSQALab
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеSQALab
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииSQALab
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеSQALab
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестированиеSQALab
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"SQALab
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовSQALab
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных системSQALab
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросSQALab
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...SQALab
 

Mais de SQALab (20)

Готовим стажировку
Готовим стажировкуГотовим стажировку
Готовим стажировку
 
Куда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщикаКуда приводят мечты? или Искусство развития тестировщика
Куда приводят мечты? или Искусство развития тестировщика
 
Оптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержкиОптимизация Selenium тестов и ускорение их поддержки
Оптимизация Selenium тестов и ускорение их поддержки
 
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программированияАвтоматизация 0.0: 0 - бюджет, 0 - опыт программирования
Автоматизация 0.0: 0 - бюджет, 0 - опыт программирования
 
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
Нагрузочное тестирование нестандартных протоколов с использованием Citrix и J...
 
Continuous performance testing
Continuous performance testingContinuous performance testing
Continuous performance testing
 
Конфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нуженКонфиги вместо костылей. Pytestconfig и зачем он нужен
Конфиги вместо костылей. Pytestconfig и зачем он нужен
 
Команда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихииКоманда чемпионов в ИТ стихии
Команда чемпионов в ИТ стихии
 
API. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советовAPI. Серебряная пуля в магазине советов
API. Серебряная пуля в магазине советов
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Вредные привычки в тест-менеджменте
Вредные привычки в тест-менеджментеВредные привычки в тест-менеджменте
Вредные привычки в тест-менеджменте
 
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизацииМощь переполняет с JDI 2.0 - новая эра UI автоматизации
Мощь переполняет с JDI 2.0 - новая эра UI автоматизации
 
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качествеКак hh.ru дошли до 500 релизов в квартал без потери в качестве
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
 
Стили лидерства и тестирование
Стили лидерства и тестированиеСтили лидерства и тестирование
Стили лидерства и тестирование
 
"Давайте не будем про качество"
"Давайте не будем про качество""Давайте не будем про качество"
"Давайте не будем про качество"
 
Apache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектовApache.JMeter для .NET-проектов
Apache.JMeter для .NET-проектов
 
Тестирование геолокационных систем
Тестирование геолокационных системТестирование геолокационных систем
Тестирование геолокационных систем
 
Лидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопросЛидер или босс? Вот в чем вопрос
Лидер или босс? Вот в чем вопрос
 
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...От Зефира в коробке к Structure Zephyr или как тест-менеджеру перекроить внут...
От Зефира в коробке к 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); }
  • 5. Поддержка изменений Test TestAPI App Test Case CR T E S T S U P P O R T
  • 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) {}
  • 11. Поддержка изменений Test Case Binding TestAPI App CR T E S T S U P P O R T
  • 12. Преимущества и недостатки Прямая связь спецификации и автотеста Высокая скорость разработки тестов Разработка новых тестов без участия программистов Поддержка тестов на уровне модификации сценариев Ограничение свободы QA в формулировках тестовых сценариев Спецификации уходят от бизнес-смысла к описанию манипуляций с интерфейсом
  • 13. Лучшие практики • Переиспользование шагов • Одно действие на шаг • Использование Background • Использование декларативного стиля написания
  • 14. Что еще? • Создание библиотеки общих шагов • Модификация фреймворка (SpecFlow) • Написание собственного интерпретатора