Инструменты для поиска пересечения покрытия кода? - PullRequest
1 голос
/ 15 февраля 2011

Наша компания изучает идею использования покрытия кода cobertura во время ручных регрессивных тестов, чтобы выяснить, где у нас есть «смежные функции».Общая идея состояла бы в том, что если бы регрессионный тест A вызывал метод businessLogicFoo () и регрессионный тест B также использовал этот метод, мы могли бы сказать, что регрессионный тест A и B имеют «смежные функции».

Нас особенно интересуетэффективное определение того, какие регрессионные тесты имеют «смежную функциональность», чтобы мы могли планировать более эффективные регрессионные тесты (у нас на этот раз гораздо больше тестов - поэтому мы всегда заканчиваем тестированием подмножества всех регрессивных тестов).

Кто-нибудь пытался что-то подобное раньше?С cobertura или какой-либо другой библиотекой покрытия кода?

Мое первое предположение - мы пишем отличный сценарий (мой предпочтительный язык сценариев) для экспорта отчетов cobertura в виде XML, а затем разбираем охватываемые классы / методы - отфильтровываемлюбые лишние классы - а затем найдите пересечения методов / классов между двумя отчетами.В идеале все контролируют в мавене.Но я просто догадываюсь.

Ответы [ 2 ]

0 голосов
/ 15 июня 2011

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

Вы можете связать отдельный тестего собственный вектор покрытия тестами, и вычислите его пересечения с другими тестами, сообщая вам, насколько перекрываются два теста.Если они имеют небольшое перекрытие, то они «соседствуют» по вашей характеристике.Часто они используют некоторую общую «базовую функциональность», которая может запутать проблему, но вы можете вычислить это путем пересечения ряда тестов, которые выполняют эту базовую функциональность и вычитают ее, чтобы увидеть, что они не разделяют.

Еще лучше, если вы измените какой-то код, инструмент сообщит вам, какие тестовые наборы покрытия (например, какие тесты) были затронуты, и, следовательно, какие вам нужно запустить.Что еще более важно, это говорит о том, какие из них вам не нужно запускать.Если ваши тесты выполняются вручную, это должно быть очень полезно для минимизации повторного тестирования.

0 голосов
/ 16 февраля 2011

Ваше предположение звучит правдоподобно (хотя я бы сам использовал Ruby :)). Но если вы определили, какие из ваших тестов могут быть дублированы, вам, конечно, придется определить, являются ли тесты действительно лишними (они могут просто частично перекрываться, и в этом случае объединение их будет ответом, а не отбрасыванием одного в пользу). другого). Я не знаю никакого способа, кроме как вручную просмотреть все идентифицированные хиты, чтобы сделать это.

...