Агрегирование покрытия кода из разных структур тестирования
В современном программном процессе сразу используются многочисленные тестовые рамки. Например, в мире PHP это де-факто стандартный способ одновременного использования модульных тестов, интеграционных тестов и функциональных/приемочных испытаний. Большую часть времени разные рамки используются для разных типов тестов. Я использую комбинацию PHPSpec для unit, PHPunit для интеграции и CodeCeption для функциональных тестов.
Можно ли агрегировать результаты покрытия кода, возвращаемые каждой из этих фреймворков? Есть ли какой-либо инструмент, который объединяет отчеты о покрытии кода из разных фреймворков?
Или можно просмотреть отдельные результаты для каждой структуры, пока они неверны, поскольку каждый отчет о покрытии кода не учитывает другие тесты.
Ответы
Ответ 1
На самом деле довольно просто выполнить эту задачу. Все ваши фреймворки полагаются на одну и ту же библиотеку для генерации покрытия кода.
Как вы можете видеть, генератор в sebastianbergmann/php-code-coverage уже поддерживает функцию слияния (строка 335) для объединения разных агрегатов. Поскольку вы являетесь частью команды, использующей тесты, я предполагаю, что вам будет легко слегка изменить уровень выполнения теста, чтобы собрать покрытие кода в одном php-процессе и просто объединить их.
Ответ 2
Для этого есть инструмент: phpcov. Он позволяет объединить многие файлы покрытия с опцией слияния:
$ parallel --gnu ::: \
'phpunit --coverage-php /tmp/coverage/FooTest.cov tests/FooTest' \
'phpunit --coverage-php /tmp/coverage/BarTest.cov tests/BarTest'
$ phpcov merge /tmp/coverage --clover /tmp/clover.xml
phpcov 2.0.0 by Sebastian Bergmann.
Generating code coverage report in Clover XML format ... done
Ответ 3
Думаю, мы на одной лодке. Как мы можем сказать, насколько мы сходимся, используя этот все другой инструмент тестирования. Мы начинаем обсуждать с командой и решаем пойти на
SonarSource. - Для демо-версии PHP Plugin и Live
PHP Report Stlyle - советую вам посетить живую демонстрацию. Это поможет больше.
![введите описание изображения здесь]()
Это очень надежный инструмент. Это дает нам все внутри кода.
Ответ 4
Инструмент проверки тестовых возможностей PHP от Semantic Designs (моя компания) собирает и объединяет покрытие тестов из любого
- рамки
- тестовый набор
- индивидуальный тест
- даже специальные ручные тесты.
После запуска некоторого набора тестов наш инструмент можно легко запускать, чтобы сбрасывать векторы охвата тестирования в файл; вам нужно немного изменить структуру, чтобы вызвать
TCVDump();
когда структура завершена, или вы можете вызвать TCVDDump(), нажав на легко найденную специальную веб-страницу, добавленную инструментом тестирования. Каждый такой вызов создает файл с отметкой времени или пользователем (например, после рамки или набора тестов), поэтому их легко отличить
Графический дисплей покрытия цели, включенный как часть инструмента, будет интерактивно выбирать и объединять небольшие или большие наборы таких файлов для создания целостного целого, как отображения, так и сводки. Он также будет сравнивать векторы охвата тестирования, чтобы можно было решить, включает ли охват из одного набора тестов/пересекает другой и т.д.
Компонент отображения покрытия покрытия также будет экспортировать текст или резюме HTML/HTML результатов покрытия.
Вы даже можете запускать тесты на разных подсистемах и комбинировать их. Этот инструмент для тестирования охватывает часть более широкого набора инструментов для многих языков, кроме PHP; тесты, запущенные в многоязычной системе приложений, также могут быть объединены, чтобы обеспечить обзор покрытия для многоязычного приложения.