Пишем видео
во время прогона автотестов
Сергей Пирогов

Сергей Пирогов

Senior QA Automation
Testing Center of Excellence
Ciklum
http://automation-remarks.com


@s_pirogov
Стандартный CI

Нестабильные тесты


Нестабильные UI тесты
Бесконечная гонка между кодом тестов и асинхронностью web страниц
Кривые руки - плохо написанные тесты
Магия которую невозможно понять
Как бороться: способ 1
Игнорировать нестабильные тесты

Залил в прод без тестов
Запускать тесты только на одной машине
Как бороться: способ 2

Перезапускать упавшие тесты
Как бороться: способ 3

Перезапуск упавшего теста
Скрывает причину еще глубже
Увеличивает риск ошибки
Самый верный способ
Понять причины нестабильности и починить
Как понять?
Скриншоты

Запись видео, чего хотим
Легко встраиваться в существующие решения
Контроль видео записи для одного конкретного теста
Кроссплатформенность
Существующие решения

Java Video Recorder
Поддерживает :
Интеграция с Allure и Jenkins CI
-
JUnit
-
TestNg
-
Spock
-
Selenium Grid
Поддержка JUnit
public class JUnitVideoTest {
@Test
public void shouldLogin() {
// test code here
}
}
public class JUnitVideoTest {
@Rule
public VideoRule videoRule
= new VideoRule();
@Video
@Test
public void shouldLogin() {
// test code here
}
}
Поддержка TestNG
public class TestNgVideoTest {
@Test
public void shouldLogin() {
// test code here
}
}
@Listeners(VideoListener.class)
public class TestNgVideoTest {
@Video
@Test
public void shouldLogin() {
// test code here
}
}
Больше интересностей
public class JUnitVideoTest {
@Video (enabled = false,
name = "logoutTest")
@Test
public void shouldLogout() {
// test code here
}
}
Можно задать имя видео файла
Настройки
VideoRecorder.conf()
.withVideoFolder("video_folder")
.videoEnabled(true)
.withRecordMode(ANNOTATED)
.withVideoSaveMode(ALL);
Можно настроить все на свой вкус
Настройки
Командная строка
mvn test -Dvideo.folder=folder
-Dvideo.enabled=true
-Dvideo.mode=ANNOTATED
-Dvideo.save.mode=ALL
Поддержка Allure отчетов
@Attachment(value = "video", type = "video/mp4")
private byte[] attachment() {
File video = VideoRecorder.getLastRecording();
return readAllBytes(get(video.absolutePath()));
}
Видео можно встраивать в отчет
Влияние на время прогона тестов:
3 Теста с видео : 25,15 sec
3 Теста без видео: 25,109 sec
Размер видео:
5 мин видео ~ 13 МБ
Где теряем
Реальный пример

Результаты

Количество нестабильных тестов уменьшено на 99%
Все для людей
Github

Спасибо!
http://automation-remarks.com


@s_pirogov
[SQA days] Пишем видео во время прогона тестов
By Sergey Pirogov
[SQA days] Пишем видео во время прогона тестов
- 2,922