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

What's hot (20)

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

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

PDF
Проблемы UI автотестов [NoBugs WTF PRO уровень]
NoBugs
 
PPT
Оптимизация Selenium тестов и ускорение их поддержки
SQALab
 
PPT
Автоматизация UI тестирования в неконтролируемо улучшаемой внешней среде
SQALab
 
PPTX
[Expert Fridays] QA MeetUp - Альфия Хайретдинова (Provectus): Плюсы и минусы ...
Provectus
 
PPTX
Do you know what you are testing?
Mikalai Alimenkou
 
PPTX
А вы знаете что тестируют ваши тесты?
SQALab
 
PPTX
Qa Automation - отбрасываем лишнее и тестируем суть
Igor Khrol
 
PPT
Кому следует писать автоматические тесты?
Igor Khrol
 
PDF
Тестирование весна 2013 лекция 3
Technopark
 
Проблемы UI автотестов [NoBugs WTF PRO уровень]
NoBugs
 
Оптимизация Selenium тестов и ускорение их поддержки
SQALab
 
Автоматизация UI тестирования в неконтролируемо улучшаемой внешней среде
SQALab
 
[Expert Fridays] QA MeetUp - Альфия Хайретдинова (Provectus): Плюсы и минусы ...
Provectus
 
Do you know what you are testing?
Mikalai Alimenkou
 
А вы знаете что тестируют ваши тесты?
SQALab
 
Qa Automation - отбрасываем лишнее и тестируем суть
Igor Khrol
 
Кому следует писать автоматические тесты?
Igor Khrol
 
Тестирование весна 2013 лекция 3
Technopark
 
Ad

More from Anton Stepanenko (6)

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

Speeding up UI tests, profiling of UI tests