Почему функциональные тесты в codeception такие медленные и как сделать их быстрее?

Всё про тестирование в Yii 2.0
Ответить
voodooism
Сообщения: 48
Зарегистрирован: 2018.11.12, 10:29

Почему функциональные тесты в codeception такие медленные и как сделать их быстрее?

Сообщение voodooism »

Я пытаюсь тестировать мое yii2 приложение с помощью codeception.
Вот код моих простых тестов

Код: Выделить всё

    public function tryToTest(FunctionalTester $I)
    {
        $I->amOnRoute('call/wait-for-answer', ['callId' => 1]);
        $I->see('Conntect', 'title');
    }

    public function anotherTest(FunctionalTester $I)
    {
        $I->amOnRoute('call/wait-for-answer', ['callId' => 1]);
        $I->click('Answer', '.btn');
        $I->see('Answer', 'title');
    }
Это результат выполнения

Код: Выделить всё

    Functional Tests (1) -----------------------------------------------------
    ✔ TestCest: Try to test (6.13s)
    ✔ TestCest: Another test (6.48s)
    --------------------------------------------------------------------------
    
    Time: 12.61 seconds, Memory: 18.00MB
Два простых теста за 12 секунд - это очень медленно :(

Как я понял, проблема в том, чо при загрузке страницы выполняется несколько тяжелых запросов. Я проверил как это работет в браузере.
При первой загрузке, страница действительно грузится 5 секунд, и отсылает 32 запроса к базе данных, но при втором обращении к странице запросы кэшируются и страница загружается всего за 300ms и отслыает 11 запросов.
В конфиге базы данных прописаны следующие настройки:

Код: Выделить всё

    'enableSchemaCache' => true,
    'schemaCacheDuration' => 1200,
Как ускорить мои тесты, и сделать так что бы данные кэшировались и запросы выполнялись быстро?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Почему функциональные тесты в codeception такие медленные и как сделать их быстрее?

Сообщение ElisDN »

voodooism писал(а): 2018.11.29, 13:08 Я проверил как это работет в браузере. При первой загрузке, страница действительно грузится 5 секунд, и отсылает 32 запроса к базе данных.
Ускорить компьютер.
voodooism
Сообщения: 48
Зарегистрирован: 2018.11.12, 10:29

Re: Почему функциональные тесты в codeception такие медленные и как сделать их быстрее?

Сообщение voodooism »

ElisDN писал(а): 2018.11.29, 14:55
voodooism писал(а): 2018.11.29, 13:08 Я проверил как это работет в браузере. При первой загрузке, страница действительно грузится 5 секунд, и отсылает 32 запроса к базе данных.
Ускорить компьютер.
А при чём здесь вообще компьютер ? Он кстати достаточно мощный, для того что бы не задумываться о скорости загрузки страниц :)
БД вообще крутится на отдельном сервере. Вопрос в том, что при работе через браузер запросы к бд кэшируются, а при функциональных тестах, я так полагаю что нет. Но это лишь моя догадка.

Кстати по поводу мощности компьютера - приёмочные тесты у меня выполняются быстрее. Не сказать что прям сильно, но в срелнем по 3-4 секунды, против 5-7 в функциональных. Не думаю что это нормально
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Почему функциональные тесты в codeception такие медленные и как сделать их быстрее?

Сообщение ElisDN »

voodooism писал(а): 2018.11.29, 16:44 А при чём здесь вообще компьютер? Он кстати достаточно мощный, для того что бы не задумываться о скорости загрузки страниц :)
При том, что компьютер с БД без кеширования по 5 секунд работает, а не по 0,015.
voodooism писал(а): 2018.11.29, 16:44 БД вообще крутится на отдельном сервере.
Зачем Вам для тестов отдельный сервер? Тесты запускают на локальном.
voodooism
Сообщения: 48
Зарегистрирован: 2018.11.12, 10:29

Re: Почему функциональные тесты в codeception такие медленные и как сделать их быстрее?

Сообщение voodooism »

ElisDN писал(а): 2018.11.30, 09:52
voodooism писал(а): 2018.11.29, 16:44 А при чём здесь вообще компьютер? Он кстати достаточно мощный, для того что бы не задумываться о скорости загрузки страниц :)
При том, что компьютер с БД без кеширования по 5 секунд работает, а не по 0,015.
voodooism писал(а): 2018.11.29, 16:44 БД вообще крутится на отдельном сервере.
Зачем Вам для тестов отдельный сервер? Тесты запускают на локальном.
И всё таки, объясните мне пожалуйста, где связь между скоростью работы моего компьютера и скоростью исполнения тяжелых запросов к базе данных, которая находится на отдельном сервере(== не на моём компьютере). Только, пожалуйста, не нужно говорить что сервер на котором крутится БД тоже медленный ))

Да всё верно, тесты запускаются на локальном, но тестовая база, повторюсь, находится на удаленном сервере.
lavros
Сообщения: 13
Зарегистрирован: 2017.01.13, 08:54

Re: Почему функциональные тесты в codeception такие медленные и как сделать их быстрее?

Сообщение lavros »

voodooism писал(а): 2018.11.30, 11:05 ...
исполнения тяжелых запросов к базе данных, которая находится на отдельном сервере
...
какой пинг до сервера? Сколько по времени выполняется sql запрос?
Аватара пользователя
SiZE
Сообщения: 2813
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Почему функциональные тесты в codeception такие медленные и как сделать их быстрее?

Сообщение SiZE »

voodooism писал(а): 2018.11.30, 11:05 Да всё верно, тесты запускаются на локальном, но тестовая база, повторюсь, находится на удаленном сервере.
Ну так сколько у тебя ответ с удаленного сервера то идет?
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Почему функциональные тесты в codeception такие медленные и как сделать их быстрее?

Сообщение ElisDN »

voodooism писал(а): 2018.11.30, 11:05 И всё таки, объясните мне пожалуйста, где связь между скоростью работы моего компьютера и скоростью исполнения тяжелых запросов к базе данных, которая находится на отдельном сервере(== не на моём компьютере).
Вы нам сначала не сказали, где лежит база. Все подумали, что локально всё тормозит. Вот и посоветовали ускорить компьютер.
voodooism писал(а): 2018.11.30, 11:05 Только, пожалуйста, не нужно говорить что сервер на котором крутится БД тоже медленный ))
Запросы к серверу грузятся по 5 секунд, поэтому и тесты выполняются по 5 секунд. Логично.
voodooism писал(а): 2018.11.30, 11:05 Да всё верно, тесты запускаются на локальном, но тестовая база, повторюсь, находится на удаленном сервере.
Повторюсь, сделайте облегчённую тестовую базу на локальном сервере.
voodooism
Сообщения: 48
Зарегистрирован: 2018.11.12, 10:29

Re: Почему функциональные тесты в codeception такие медленные и как сделать их быстрее?

Сообщение voodooism »

Дмитрий, мне кажется дело в том, что при прогоне функциональных тестов запросы к базе данных не кэшируются. Я не зря описал в первом сообщении, что при первом обращении к страничке она действительно долго загружается в браузере. Но потом запросы кэшируются и занимают не более 300ms.
Задам вопрос по другому: Дмитрий, как знаток фреймворка, можете подсказать как настроить функциональные тесты таким образом, что бы при их выполнении запросы к базе данных кэшировались?
На данный момент в конфиге БД прописано следующее, но это, к сожалению, не помогает.

Код: Выделить всё

'enableSchemaCache' => true,
'schemaCacheDuration' => 1200,
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Почему функциональные тесты в codeception такие медленные и как сделать их быстрее?

Сообщение maleks »

Непонятно что вы называете "что бы запросы к базе данных кэшировались".
enableSchemaCache это запрос на структуру таблиц для AR, не большое дело.
Все остальное кеширование что имеется нужно самому настраивать.
Да и где логика в том чтобы тест работал с "закешированными" страницами?
Yii2 universal module sceleton - for basic and advanced templates
Ответить