Я управляю тестированием для очень большой системы финансового ценообразования. Недавно наш штаб настаивал на том, что мы проверяем, что каждая часть нашего проекта имеет осмысленный тест. По крайней мере, им нужна система, которая гарантирует, что когда мы что-то изменим, мы можем обнаружить непреднамеренные изменения в других подсистемах. Предпочтительно они хотят что-то, что подтверждает правильность каждого компонента в нашей системе.Как сделать осмысленный анализ покрытия кода моих модульных тестов?
Это, очевидно, будет очень много работы! Это может занять годы, но для такого проекта это того стоит.
Мне нужно выяснить, какие части нашего кода не охватываются ни одним из наших модульных тестов. Если бы я знал, какие части моей системы были непроверены, я мог бы приступить к разработке новых тестов, которые в конечном итоге приблизились бы к моей цели полного тестирования.
Итак, как я могу запустить такой анализ. Какие инструменты доступны мне?
Я использую Python 2.4 на Windows 32bit XP
UPDATE0:
Просто уточнить: У нас есть очень обширный блок-тестов (плюс индивидуальный и всеобъемлющий regtest люкс, который находится вне сферы это упражнение). У нас также есть очень стабильная платформа непрерывной интеграции (построенная с помощью Hudson), которая предназначена для разделения и запуска стандартных модульных тестов python на нашем испытательном объекте: около 20 компьютеров построены для спецификации компании.
Целью этого упражнения является подключение любых пробелов в нашем наборе (только) набора для пула python, чтобы каждый компонент имел некоторую степень охвата unittest. Другие разработчики будут нести ответственность за компоненты, не входящие в состав Python проекта (которые также не входят в сферу охвата).
«Компонент» преднамеренно неопределенный: иногда это будет класс, в другое время - весь модуль или сборка модулей. Это может даже относиться к единой финансовой концепции (например, к одному типу финансового варианта или к финансовой модели, используемой многими вариантами). Этот торт можно разрезать по-разному.
«« Тесты (для меня) - это те, которые подтверждают, что функция выполняет то, что первоначально предполагал разработчик. Мы не хотим просто воспроизводить регесты в чистом питоне. Часто намерение разработчика не сразу очевидна, поэтому необходимо исследовать и прояснять все, что выглядит неопределенным, а затем закреплять это знание в единичном тесте, что делает первоначальное намерение совершенно явным.
Спасибо за suggegstion: Зачем использовать это вместо фиолетового? –
В ответ я добавил объяснение 'coverage.py vs figleaf'. Я не думаю, что это действительно важно, какой из них вы выберете. Справедливости ради, я не использовал ни одного из них, хотя это два основных инструмента. – Razzie
охват3 устраняет множество предыдущих недостатков, то есть не выполняет stdlib и др. – Almad