Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Скорость выполнения тестов с использованием Thucydides


(Pnevmoslon) #1

Используем на нескольких проектах Thucydides. Достаточно давно и довольно успешно, но в новом проекте заметил, что тесты выполняются уж очень медленно. Т.е., скажем, поиск элемента и ввод в него текста может занять секунду-две.
Начал пытаться исправить эту ситуацию и вот что попробовал:

  1. Переписал всё на скорую руку без использования Thucydides - всё работает молниеносно.
  2. Попытался поэкспериментировать с версией Thucydides - безрезультатно
  3. Попробовал сделать степы более глобальными и перестал использовать вызов одних степов внутри других, т.е., грубо говоря, если раньше у меня был такие степы:
@Step
    public void logs_in_as(String username, String password) {
        enters_username(username);
        enters_password(password);
        clicks_login_button();
    }

    @Step
    public void enters_username(String username)
    {
        onStartPage().enterUsername(username);
    }

    @Step
    public void enters_password(String password)
    {
        onStartPage().enterPassword(password);
    }

    @Step
    public void clicks_login_button()
    {
        onStartPage().clickLoginButton();
    }

то теперь всё выглядит как:

    @Step
    public void logs_in_as(String username, String password) {
        onStartPage().logInAs(username, password);
    }

и вся логика, соответственно, внутри пейдж обжекта.

Это помогло. Время прохождения степа судя по логу Thucydides сократилось с 16 до 4 секунд.
Но, во-первых, 4 секунды это всё равно не идеально, а во-вторых, что не так с этими степами, что время растягивается аж в 4 раза?
В данном примере очевидно, что некоторое время тратится на вызов метода onStartPage

    public StartPage onStartPage()
    {
        return pages().get(StartPage.class);
    }

Но даже при использовании:

    StartPage startPage;
    startPage.logInAs(username, password);
    

выйгрыш во времени в пределах погрешности.

Может кто-то сталкивался с подобным или пытался как-то ускорить свои Thucydides тесты. Или просто есть какие-то идеи :smile:


Selenium is slow down under IE8
(Pnevmoslon) #2

Отключение скриншотов после каждого экшена сильно всё ускорило. Жаль. С ними отчёты были повеселее.
С другой стороны уже так:

thucydides.take.screenshots=AFTER_EACH_STEP

получается гораздо быстрее. Ну а так:

 thucydides.take.screenshots=FOR_FAILURES 

вообще хорошо


(Александр Таранков) #3

Скриншоты после каждого шага - это уже перебор. Обычно хватает нормальных логов. А скриншот - только в случае падения, да и то не всегда нужен


(Pnevmoslon) #4

Когда репорты для технарей - да, безусловно. Но, как правило, всю эту красоту требует менеджмент.


(Александр Таранков) #5

Менеджменту просто надо сказать, что добавление такой фичи дорого стоит. В плоскости денег хотелки менджмента обычно лучше приоритезируются


(Pnevmoslon) #6

Деньги в данном случае совершенно не при чём. Репорты с тоннами скриншотов - фича Thucydides которая включена по умолчанию.
Ну а общение с менеджментом это отдельная скользкая тема :smile:


(heartwilltell) #7

Этот параметр можно записать в файл thucydides.properties я так понимаю? А как передать его в билд дженкинса?


(Pnevmoslon) #8

Да, именно так. А передать можно как и любой другой параметр:
clean verify -Dthucydides.take.screenshots=FOR_FAILURES, например