Gestisco il test per un sistema di prezzi finanziari molto ampio. Recentemente il nostro quartier generale ha insistito sul fatto che verifichiamo che ogni singola parte del nostro progetto ha una prova significativa in atto. Per lo meno vogliono un sistema che garantisca che quando cambiamo qualcosa possiamo individuare modifiche non intenzionali ad altri sottosistemi. Preferibilmente vogliono qualcosa che convalidi la correttezza di ogni componente nel nostro sistema.Come eseguire un'analisi significativa della copertura del codice dei miei test unitari?
Ovviamente ci sarà parecchio lavoro! Potrebbero volerci anni, ma per questo tipo di progetto ne vale la pena.
Ho bisogno di scoprire quali parti del nostro codice non sono coperte da nessuno dei nostri test unitari. Se sapessi quali parti del mio sistema non sono state testate, potrei iniziare a sviluppare nuovi test che alla fine si avvicinerebbero al mio obiettivo di completare la copertura dei test.
Quindi, come posso eseguire questo tipo di analisi. Quali strumenti sono disponibili per me?
io uso Python 2.4 su Windows a 32 bit XP
UPDATE0:
Giusto per chiarire: Abbiamo una suite unità-test molto completo (più una suite Regtest separato e molto completo, che è al di fuori del campo di applicazione questo esercizio). Disponiamo inoltre di una piattaforma di integrazione continua molto stabile (realizzata con Hudson) progettata per suddividere ed eseguire test di unità Python standard nella nostra struttura di test: circa 20 PC costruiti secondo le specifiche dell'azienda.
Lo scopo di questo esercizio è di colmare eventuali lacune nella suite suite (solo) Python Unittest in modo che ogni componente abbia una certa copertura di unittest. Altri sviluppatori si assumeranno la responsabilità per i componenti non Python del progetto (che sono anche al di fuori dell'ambito).
"" Il componente "è intenzionalmente vago: a volte sarà una classe, altre volte un intero modulo o un insieme di moduli. Potrebbe anche riferirsi a un singolo concetto finanziario (ad esempio un singolo tipo di opzione finanziaria o un modello finanziario utilizzato da molti tipi di opzioni). Questa torta può essere tagliata in molti modi.
"Significativo" test (per me) sono quelli che convalidano che la funzione fa ciò che lo sviluppatore inizialmente intendeva. Non vogliamo semplicemente riprodurre i regtest in puro pitone. Spesso l'intento dello sviluppatore non è immediatamente ovvio, da qui la necessità di ricercare e chiarire tutto ciò che sembra vago e quindi racchiudere questa conoscenza in un test unitario che rende l'intento originale piuttosto esplicito.
Grazie per la suggegstion: Perché utilizzare questo piuttosto che figleaf? –
Nella mia risposta ho aggiunto una spiegazione "coverage.py vs figleaf". Non penso che importi davvero molto quale scegli. Per essere onesti, non ho usato nessuno dei due, anche se questi sono i due strumenti principali. – Razzie
coverage3 corregge molte delle mancanze precedenti, vale a dire non eseguendo stdlib et al. – Almad