Пишем видео

во время прогона автотестов

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

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

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

Made with Slides.com