Jak wykonać znaczącą analizę pokrycia kodu moich testów jednostkowych?

Zarządzam testowaniem bardzo dużego systemu wyceny finansowej. Ostatnio nasza centrala nalegała, abyśmy sprawdzili, czy każda część naszego projektu ma znaczący test na miejscu. Chcą przynajmniej systemu, który zagwarantuje, że kiedy coś zmienimy, możemy zauważyć niezamierzone zmiany w innych podsystemach. Korzystnie chcą czegoś, co potwierdza poprawność każdego komponentu w naszym systemie.

To oczywiście sporo pracy! Może to zająć lata, ale dla tego rodzaju projektu warto.

Muszę dowiedzieć się, które części naszego kodu nie są objęte żadnym z naszych testów jednostkowych. Gdybym wiedział, które części mojego systemu były niesprawdzone, mógłbym przystąpić do opracowywania nowych testów, które ostatecznie pozwoliłyby osiągnąć mój cel pełnego pokrycia testów.

Więc jak mogę prowadzić tego rodzaju analizę. Jakie narzędzia są dla mnie dostępne?

Używam Pythona 2.4 w systemie Windows 32bit XP

UPDATE0:

Aby wyjaśnić: mamy bardzo obszerny zestaw testów jednostkowych (plus oddzielny i bardzo obszerny pakiet regtest, który wykracza poza zakres tego ćwiczenia). Posiadamy również bardzo stabilną platformę ciągłej integracji (zbudowaną z Hudson), która jest przeznaczona do dzielenia i uruchamiania standardowych testów jednostkowych Pythona w naszym ośrodku testowym: Około 20 komputerów zbudowanych zgodnie ze specyfikacją firmy.

Celem tego ćwiczenia jest podłączenie wszelkich luk w naszym pakiecie (tylko) pakietu python unittest, tak aby każdy komponent miał pewien stopień niezrównanego zasięgu. Inni programiści będą ponosić odpowiedzialność za komponenty projektu nie będące Pythonem (które również są poza zakresem).

"Składnik„jest celowo niejasne: Czasami będzie to klasa, innym razem cały moduł lub zespół modułów. Może nawet odnosić się do jednej koncepcji finansowej (np. pojedynczego typu opcji finansowej lub modelu finansowego używanego przez wiele rodzajów opcji) To ciasto można ciąć na wiele sposobów.

"Znaczący„testy (dla mnie) to testy, które potwierdzają, że funkcja robi to, co pierwotnie zamierzał twórca. Nie chcemy po prostu odtworzyć testów w czystym pytonie. Często intencje dewelopera nie są od razu oczywiste, stąd potrzeba zbadania i wyjaśnienia czegokolwiek który wydaje się niejasny, a następnie zapisuje tę wiedzę w teście jednostkowym, który wyraźnie uwydatnia pierwotną intencję.

questionAnswers(5)

yourAnswerToTheQuestion