Como fazer uma análise significativa de cobertura de código dos meus testes unitários?

Eu gerencio o teste de um sistema de preços financeiros muito grande. Recentemente, nosso QG insistiu que verificássemos que cada parte de nosso projeto tem um teste significativo em andamento. No mínimo, eles querem um sistema que garanta que quando mudamos alguma coisa, podemos detectar mudanças não intencionais em outros subsistemas. De preferência, eles querem algo que valide a exatidão de todos os componentes do nosso sistema.

Isso obviamente vai ser muito trabalho! Pode levar anos, mas para esse tipo de projeto vale a pena.

Preciso descobrir quais partes do nosso código não são cobertas por nenhum dos nossos testes unitários. Se eu soubesse quais partes do meu sistema não foram testadas, eu poderia começar a desenvolver novos testes que eventualmente se aproximariam do meu objetivo de cobertura completa de testes.

Então, como posso fazer esse tipo de análise? Quais ferramentas estão disponíveis para mim?

Eu uso o Python 2.4 no Windows 32bit XP

UPDATE0:

Só para esclarecer: Temos uma suíte de testes unitários muito abrangente (além de uma suíte separada e muito abrangente que está fora do escopo deste exercício). Também temos uma plataforma de integração contínua muito estável (criada com o Hudson) que é projetada para dividir e executar testes unitários padrão em python em toda a instalação de teste: Aproximadamente 20 PCs criados para as especificações da empresa.

O objetivo deste exercício é conectar todas as lacunas em nosso conjunto do suite unittest do python (somente) para que cada componente tenha algum grau de cobertura de teste unitário. Outros desenvolvedores estarão assumindo a responsabilidade por componentes não-Python do projeto (que também estão fora do escopo).

"Componente"é intencionalmente vago: às vezes será uma aula, outra vez um módulo inteiro ou montagem de módulos. Pode até se referir a um único conceito financeiro (por exemplo, um único tipo de opção financeira ou um modelo financeiro usado por muitos tipos de opção) Este bolo pode ser cortado de várias maneiras.

"Significativo"testes (para mim) são aqueles que validam que a função faz o que o desenvolvedor originalmente pretendia. Nós não queremos simplesmente reproduzir os regtests em python puro. Muitas vezes a intenção do desenvolvedor não é imediatamente óbvia, daí a necessidade de pesquisar e esclarecer qualquer coisa que parece vago e, em seguida, consagrar esse conhecimento em um teste de unidade que torna a intenção original bastante explícita.

questionAnswers(5)

yourAnswerToTheQuestion