Агрегирование покрытия кода из разных структур тестирования

В современном программном процессе сразу используются многочисленные тестовые рамки. Например, в мире 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; тесты, запущенные в многоязычной системе приложений, также могут быть объединены, чтобы обеспечить обзор покрытия для многоязычного приложения.