SlideShare a Scribd company logo
Разгоняем UI автоматизированные тесты.
Профилирование UI тестов.
Балахонов Павел
QA Automation Engineer
Mail.Ru Group
Немного обо мне
• Работаю в автоматизации
тестирования более 6 лет
• Увлекаюсь современными
технологиями
• Мечтаю автоматизировать весь
мир =)
Суть проблемы
• Большое время прогона UI тестов
• Нечестная балансировка нагрузки в инфраструктуре
• Нечестное распараллеливание тестов
• Отсутствие стабильности системы прогона тестов
• Сложность поддержки инфраструктуры
• Медленные тесты
Speeding up UI tests, profiling of UI tests
Зависимость времени прогона от размера 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
Speeding up UI tests, profiling of UI tests
Структура системы параллельного запуска UI тестов на
проектах Почта, Cloud и Media (нагрузка >3000 тестов)
Сравнение зависимостей времен прогона от размера test suite
Speeding up UI tests, profiling of UI tests
Контакты:
Skype: svyatoj88
E-mail: p.balahonov@corp.mail.ru

More Related Content

PPTX
Seamy side of autotests
PDF
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
PDF
Организация процесса ручного тестирования
PPTX
Поиск багов в поиске
PDF
Полуавтоматизация third-party API
PDF
Микросервисы для автоматизации тестирования - опыт "Одноклассников"
PDF
Apache JMeter vs LoadRunner: на заре справедливости, сравнение инструментов н...
PPTX
Нагрузочное тестирование теория Кожухов
Seamy side of autotests
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
Организация процесса ручного тестирования
Поиск багов в поиске
Полуавтоматизация third-party API
Микросервисы для автоматизации тестирования - опыт "Одноклассников"
Apache JMeter vs LoadRunner: на заре справедливости, сравнение инструментов н...
Нагрузочное тестирование теория Кожухов

What's hot (20)

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

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

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

More from Anton Stepanenko (6)

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

Speeding up UI tests, profiling of UI tests