Как я могу улучшить скорость покрытия кода Codeception - PullRequest
0 голосов
/ 25 марта 2019

В настоящее время мы написали некоторый модульный тест для нашего приложения php laravel 5.5 с использованием кодирования. просто для дополнительной информации, наша база кода Laravel имеет около 200 тыс. LOC. При обычном модульном тестировании мы заметили, что это действительно быстрый процесс, при котором мы можем выполнить более 200 тестов за 1 час.

Но главная проблема в том, что когда мы включили кодовое покрытие в коде, который по умолчанию использует xdebug, мы заметили, что время выполнения резко возросло.

Теперь это заняло 1 неделю, но все выполнение кодового покрытия еще даже не закончилось.

Я не уверен, является ли это проблемой из-за codeception или самого xdebug, но если у кого-то есть опыт запуска php codecoverage на огромной базе кода, было бы неплохо, если бы вы могли поделиться тем, как вы этого добились. Буду признателен также, если кто-то может предложить какие-либо другие инструменты для изучения. В настоящее время мы рассматриваем возможность перехода на phpunit, но все еще открыты для изучения другими инструментами.

Ответы [ 2 ]

2 голосов
/ 25 марта 2019

Замена Codeception на PHPUnit будет большой работой за небольшую выгоду, потому что Codeception использует PHPUnit и его библиотеку PHP-Code-Coverage под капотом.

Существует новое расширение покрытия кода, которое называется pcov , которое предположительно намного быстрее, чем xdebug. https://github.com/krakjoe/pcov/blob/develop/INSTALL.md

Я не пытался его использовать, но имейте в виду, что для этого требуется PHPUnit 8, который доступен только в PHP 7.2 или более поздних версиях.

0 голосов
/ 24 мая 2019

Недавно я заметил, что покрытие кода ускорилось, заменив xdebug на phpdbg - я не могу дать точные цифры, так как база кода имеет расширенные функциональные тесты в своем тестовом прогоне (и ускорение было только для модульных тестов), но2+ часовой тест и запуск покрытия были сокращены примерно до 50 минут.

Обратите внимание, что xdebug и phpdbg могут различаться по охвату кода (похоже, xdebug лучше справляется с оптимизацией opcache).

edit:

После замены xdebug на phpdbg я увидел дальнейшие улучшения в скорости, заменив phpdbg на pcov.

...