SlideShare a Scribd company logo
1 of 26
Разгоняем UI автоматизированные тесты.
Профилирование UI тестов.
Балахонов Павел
QA Automation Engineer
Mail.Ru Group
Немного обо мне
• Работаю в автоматизации
тестирования более 6 лет
• Увлекаюсь современными
технологиями
• Мечтаю автоматизировать весь
мир =)
Суть проблемы
• Большое время прогона UI тестов
• Нечестная балансировка нагрузки в инфраструктуре
• Нечестное распараллеливание тестов
• Отсутствие стабильности системы прогона тестов
• Сложность поддержки инфраструктуры
• Медленные тесты
Зависимость времени прогона от размера test suite
Профилирование
тестов
Замедление прогона на уровне теста
• Использование статических таймаутов
• Выставление precondition через UI интерфейс
• Использование только положительных условий
ожидания
• Неоправданные обращения к браузеру
• Начало теста с главной страницы
Статические таймауты
Thread.sleep(500)
waitABit(500)
Выставление precondition через UI интерфейс
Использование только положительных условий ожидания
public boolean isButtonPresent() {
return waitForElementPresent(By.xpath(buttonLocator));
}
@Step
public void buttonShouldNotBePresent() {
assertFalse(“Кнопка отображается на странице”, isButtonPresent());
}
@Step
public void buttonShouldBePresent() {
assertTrue(“Кнопка не отображается на странице”, isButtonPresent());
}
Неоправданные обращения к браузеру
private WebElement getInputField(FieldData field) {
String locator = String.format(inputFieldLocator, field.getType);
return getDriver().findElement(By.xpath(locator));
}
public void enterValueAndEnter(FieldData field, String value) {
getInputField(field).sendKeys(value);
getInputField(field).sendKeys(Keys.ENTER);
}
Начало теста с главной страницы
Пути решения
Динамические таймауты и слушатели ожидания
Выставление precondition теста через API
Целесообразное использование нужных условий ожидания
public boolean isButtonPresent() {
return waitForElementPresent(By.xpath(buttonLocator));
}
public boolean isButtonNotPresent() {
return waitForElementNotPresent(By.xpath(buttonLocator));
}
@Step
public void buttonShouldBePresent() {
assertTrue(“Кнопка не отображается”, isButtonPresent());
}
@Step
public void buttonShouldNotBePresent() {
assertTrue(“Кнопка отображается”, isButtonNotPresent());
}
Уменьшение взаимодействия с браузером
private WebElement getInputField(FieldData field) {
String locator = String.format(inputFieldLocator, field.getType);
return getDriver().findElement(By.xpath(locator));
}
public void enterValueAndEnter(FieldData field, String value) {
WebElement field = getInputField(field);
field.sendKeys(value);
field.sendKeys(Keys.ENTER);
}
Система запуска UI тестов. Selenium GRID.
Selenium GRID + Docker
Распараллеливание Selenium тестов
Разбиение прогона на Batches
Структура системы параллельного запуска UI тестов на
проектах Почта, Cloud и Media (нагрузка >3000 тестов)
Сравнение зависимостей времен прогона от размера test suite
Контакты:
Skype: svyatoj88
E-mail: p.balahonov@corp.mail.ru

More Related Content

What's hot

Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадКонцепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадSQALab
 
Оценка качества автотестов
Оценка качества автотестовОценка качества автотестов
Оценка качества автотестовSQALab
 
Как Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QASQALab
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...WrikeTechClub
 
Нагрузочное тестирование web-приложений с помощью Load Runner
Нагрузочное тестирование web-приложений с помощью Load RunnerНагрузочное тестирование web-приложений с помощью Load Runner
Нагрузочное тестирование web-приложений с помощью Load RunnerSQALab
 
Автоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIPavel Asanov
 
Let's Talk About Junit 5
Let's Talk About Junit 5Let's Talk About Junit 5
Let's Talk About Junit 5SQALab
 
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Andrey Rebrov
 
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...Badoo Development
 
Построение процесса тестирования производительности игрового клиента
Построение процесса тестирования производительности игрового клиентаПостроение процесса тестирования производительности игрового клиента
Построение процесса тестирования производительности игрового клиентаSQALab
 
6 лекция. тестирование производительности
 6 лекция. тестирование производительности 6 лекция. тестирование производительности
6 лекция. тестирование производительностиvyacheslavmaslov
 
Тестирование слоёного пирога
Тестирование слоёного пирогаТестирование слоёного пирога
Тестирование слоёного пирогаSQALab
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрокаSQALab
 
Автоматизация тестирования WEB API
Автоматизация тестирования WEB APIАвтоматизация тестирования WEB API
Автоматизация тестирования WEB APISQALab
 
Scrum глазами тестировщика или как создать стратегию для любой задачи
Scrum глазами тестировщика или как создать стратегию для любой задачиScrum глазами тестировщика или как создать стратегию для любой задачи
Scrum глазами тестировщика или как создать стратегию для любой задачиIT61
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформыSQALab
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикSQALab
 
SQADAYS 21 Москва 2017
SQADAYS 21 Москва 2017SQADAYS 21 Москва 2017
SQADAYS 21 Москва 2017Adam Sandman
 
Нагрузочное тестирование
Нагрузочное тестированиеНагрузочное тестирование
Нагрузочное тестированиеSPB SQA Group
 
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium SQALab
 

What's hot (20)

Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадКонцепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
 
Оценка качества автотестов
Оценка качества автотестовОценка качества автотестов
Оценка качества автотестов
 
Как Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QA
 
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
 
Нагрузочное тестирование web-приложений с помощью Load Runner
Нагрузочное тестирование web-приложений с помощью Load RunnerНагрузочное тестирование web-приложений с помощью Load Runner
Нагрузочное тестирование web-приложений с помощью Load Runner
 
Автоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST API
 
Let's Talk About Junit 5
Let's Talk About Junit 5Let's Talk About Junit 5
Let's Talk About Junit 5
 
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
Автоматизируйте это немедленно или коллекция инструментов автотестирования с ...
 
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
QaAPI. Взгляд на тестирование с другой стороны баррикад. Доклад Дмитрия Марущ...
 
Построение процесса тестирования производительности игрового клиента
Построение процесса тестирования производительности игрового клиентаПостроение процесса тестирования производительности игрового клиента
Построение процесса тестирования производительности игрового клиента
 
6 лекция. тестирование производительности
 6 лекция. тестирование производительности 6 лекция. тестирование производительности
6 лекция. тестирование производительности
 
Тестирование слоёного пирога
Тестирование слоёного пирогаТестирование слоёного пирога
Тестирование слоёного пирога
 
Как играть без игрока
Как играть без игрокаКак играть без игрока
Как играть без игрока
 
Автоматизация тестирования WEB API
Автоматизация тестирования WEB APIАвтоматизация тестирования WEB API
Автоматизация тестирования WEB API
 
Scrum глазами тестировщика или как создать стратегию для любой задачи
Scrum глазами тестировщика или как создать стратегию для любой задачиScrum глазами тестировщика или как создать стратегию для любой задачи
Scrum глазами тестировщика или как создать стратегию для любой задачи
 
Опыт тестирования API САПР платформы
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформы
 
Тестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практик
 
SQADAYS 21 Москва 2017
SQADAYS 21 Москва 2017SQADAYS 21 Москва 2017
SQADAYS 21 Москва 2017
 
Нагрузочное тестирование
Нагрузочное тестированиеНагрузочное тестирование
Нагрузочное тестирование
 
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
Автоматизируем тестирование UI с Ruby, Cucumber и Selenium
 

Similar to Speeding up UI tests, profiling of UI tests

Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".Hub-IT-School
 
Автоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едятАвтоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едятMarina Peregud
 
Automation Functional Testing in Agile Projects
Automation Functional Testing in Agile ProjectsAutomation Functional Testing in Agile Projects
Automation Functional Testing in Agile ProjectsAndrey Rebrov
 
Мобильная Автоматизация в Контексте Continuous Delivery
Мобильная Автоматизация в Контексте  Continuous DeliveryМобильная Автоматизация в Контексте  Continuous Delivery
Мобильная Автоматизация в Контексте Continuous DeliveryIgor Dorovskikh
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Dmitry Buzdin
 
Стратегия тестирования крупного проекта в условиях Agile разработки v2
Стратегия тестирования крупного проекта в условиях Agile разработки v2Стратегия тестирования крупного проекта в условиях Agile разработки v2
Стратегия тестирования крупного проекта в условиях Agile разработки v2Magneta AI
 
Do you know what you are testing?
Do you know what you are testing?Do you know what you are testing?
Do you know what you are testing?Mikalai Alimenkou
 
А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?SQALab
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGDataArt
 
COMAQA.BY Conf #2: “Настройка Allure при использовании TestNG-Retry, Антон Ем...
COMAQA.BY Conf #2: “Настройка Allure при использовании TestNG-Retry, Антон Ем...COMAQA.BY Conf #2: “Настройка Allure при использовании TestNG-Retry, Антон Ем...
COMAQA.BY Conf #2: “Настройка Allure при использовании TestNG-Retry, Антон Ем...COMAQA.BY
 
Плюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизниПлюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизниz-tech
 
Тестирование осень 2013 лекция 4
Тестирование осень 2013 лекция 4Тестирование осень 2013 лекция 4
Тестирование осень 2013 лекция 4Technopark
 
Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS...
Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS...Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS...
Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS...Mail.ru Group
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQAFest
 
Автоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriverАвтоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriverPavel Tsukanov
 
Нагрузочное тестирование web проектов
Нагрузочное тестирование web проектовНагрузочное тестирование web проектов
Нагрузочное тестирование web проектовSQALab
 
автоматизация тестирования веб приложений павел липский
автоматизация тестирования веб приложений   павел липскийавтоматизация тестирования веб приложений   павел липский
автоматизация тестирования веб приложений павел липскийMedia Gorod
 
Доклад Владислава Чернова на конференции LoveQA. "Continuous delivery в крупн...
Доклад Владислава Чернова на конференции LoveQA. "Continuous delivery в крупн...Доклад Владислава Чернова на конференции LoveQA. "Continuous delivery в крупн...
Доклад Владислава Чернова на конференции LoveQA. "Continuous delivery в крупн...Badoo Development
 

Similar to Speeding up UI tests, profiling of UI tests (20)

Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".Андрей Сильчук: "Автоматическое тестирование".
Андрей Сильчук: "Автоматическое тестирование".
 
Автоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едятАвтоматическое тестирование и с чем его едят
Автоматическое тестирование и с чем его едят
 
Automation Functional Testing in Agile Projects
Automation Functional Testing in Agile ProjectsAutomation Functional Testing in Agile Projects
Automation Functional Testing in Agile Projects
 
Мобильная Автоматизация в Контексте Continuous Delivery
Мобильная Автоматизация в Контексте  Continuous DeliveryМобильная Автоматизация в Контексте  Continuous Delivery
Мобильная Автоматизация в Контексте Continuous Delivery
 
Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?
 
Стратегия тестирования крупного проекта в условиях Agile разработки v2
Стратегия тестирования крупного проекта в условиях Agile разработки v2Стратегия тестирования крупного проекта в условиях Agile разработки v2
Стратегия тестирования крупного проекта в условиях Agile разработки v2
 
Parallelization of Selenium tests with .NET/C# + NUnit
Parallelization of Selenium tests with .NET/C# + NUnitParallelization of Selenium tests with .NET/C# + NUnit
Parallelization of Selenium tests with .NET/C# + NUnit
 
Do you know what you are testing?
Do you know what you are testing?Do you know what you are testing?
Do you know what you are testing?
 
А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?А вы знаете что тестируют ваши тесты?
А вы знаете что тестируют ваши тесты?
 
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGДмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
 
COMAQA.BY Conf #2: “Настройка Allure при использовании TestNG-Retry, Антон Ем...
COMAQA.BY Conf #2: “Настройка Allure при использовании TestNG-Retry, Антон Ем...COMAQA.BY Conf #2: “Настройка Allure при использовании TestNG-Retry, Антон Ем...
COMAQA.BY Conf #2: “Настройка Allure при использовании TestNG-Retry, Антон Ем...
 
Плюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизниПлюсы и минусы автоматизации, пример из жизни
Плюсы и минусы автоматизации, пример из жизни
 
Тестирование осень 2013 лекция 4
Тестирование осень 2013 лекция 4Тестирование осень 2013 лекция 4
Тестирование осень 2013 лекция 4
 
Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS...
Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS...Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS...
Алексей Халайджи, Mail.Ru Group, «Как мы автоматизируем UI-тестирование в iOS...
 
Enter: testing
Enter: testingEnter: testing
Enter: testing
 
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненавистиQA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
QA Fest 2019. Андрей Солнцев. Десять причин моей ненависти
 
Автоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriverАвтоматизированное тестирование UI на C# + Selenium WebDriver
Автоматизированное тестирование UI на C# + Selenium WebDriver
 
Нагрузочное тестирование web проектов
Нагрузочное тестирование web проектовНагрузочное тестирование web проектов
Нагрузочное тестирование web проектов
 
автоматизация тестирования веб приложений павел липский
автоматизация тестирования веб приложений   павел липскийавтоматизация тестирования веб приложений   павел липский
автоматизация тестирования веб приложений павел липский
 
Доклад Владислава Чернова на конференции LoveQA. "Continuous delivery в крупн...
Доклад Владислава Чернова на конференции LoveQA. "Continuous delivery в крупн...Доклад Владислава Чернова на конференции LoveQA. "Continuous delivery в крупн...
Доклад Владислава Чернова на конференции LoveQA. "Continuous delivery в крупн...
 

More from Anton Stepanenko

Hand helper for manual testing
Hand helper for manual testingHand helper for manual testing
Hand helper for manual testingAnton Stepanenko
 
Нагрузочное тестирование по-живому
Нагрузочное тестирование по-живомуНагрузочное тестирование по-живому
Нагрузочное тестирование по-живомуAnton Stepanenko
 
SemVer and microservices in go
SemVer and microservices in goSemVer and microservices in go
SemVer and microservices in goAnton Stepanenko
 
Flow based programming in golang
Flow based programming in golangFlow based programming in golang
Flow based programming in golangAnton Stepanenko
 

More from Anton Stepanenko (6)

Functional monitoring
Functional monitoringFunctional monitoring
Functional monitoring
 
Hand helper for manual testing
Hand helper for manual testingHand helper for manual testing
Hand helper for manual testing
 
Нагрузочное тестирование по-живому
Нагрузочное тестирование по-живомуНагрузочное тестирование по-живому
Нагрузочное тестирование по-живому
 
SemVer and microservices in go
SemVer and microservices in goSemVer and microservices in go
SemVer and microservices in go
 
GO Monitoring at lazada
GO Monitoring at lazadaGO Monitoring at lazada
GO Monitoring at lazada
 
Flow based programming in golang
Flow based programming in golangFlow based programming in golang
Flow based programming in golang
 

Speeding up UI tests, profiling of UI tests