Пишем видео
во время прогона автотестов
Сергей Пирогов
Сергей Пирогов
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,827