Domanda

Al momento, uno dei nostri sistemi di produzione è gestita da più di 3000 programmi scritti tra il 1986 e oggi. La base di codice è scritto in una lingua non standard, che manca purtroppo moderni strumenti di test.

Nel tentativo di migliorare la nostra qualità del codice in movimento in avanti ho lavorato per incorporare processi e costruire strumenti in grado di migliorare lo sviluppo e la sperimentazione. Ho solo completamente uno strumento di copertura di linea in modo che possiamo aiutare a identificare codice morto + codice non testato durante lo sviluppo.

Ora, vorrei iniziare a lavorare su come aggiungere copertura Percorso per lo strumento.

Come dovrei andare su questo?

Premesso che:

1) Lo strumento di copertura di linea agisce come un pre-processore che inietta codice
2) Ho già la capacità di raccogliere le statistiche ho impostato in detto codice.

Quali dati devo essere di registrazione come il programma esegue, e come l'interpreto?

Come posso rappresentare i risultati tramite HTML?

Ho già leggere la domanda Come iniziare “ scrivere”uno strumento di copertura di codice? , che era di circa Java, ma non ha aiutato (compresa la carta 'Branch copertura per arbitraria Lingue made Easy').

Grazie in anticipo per qualsiasi consiglio dato!

È stato utile?

Soluzione

Per effettuare la copertura percorso, è necessario ottenere al flusso di controllo del programma in qualche modo. Un metodo ovvia è costruire un grafo di controllo reale, e poi attraversare segmenti per individuare "frammenti percorso" (ad esempio, percorsi base) da utilizzare nell'analisi copertura percorso. (Si può tentare di farlo stringa di hacking del codice sorgente, ma è probabile che fallire; parsing e analisi del flusso è troppo complesso).

Qual è il punto della copertura percorso base? per una buona discussione StackOverflow su sentieri di base.

Per implementare lo strumento di copertura percorso necessario, è probabilmente necessario analizzare davvero completamente la lingua piena eredità. Per i 3000 i programmi e un forte requisito per il test, utilizzando un parser forza industriale e delle infrastrutture per fare questo avrebbe senso.

La nostra DMS Software Reengineering Toolkit può essere utilizzato per costruire non solo la parser, ma l'analisi del flusso di controllo e la strumentazione necessaria per raccogliere i dati di copertura del percorso. (Il "Branch Copertura per arbitrarie Lingue" ha fatto questo punto, se tutto quello che voleva fare era raccogliere ramo dei dati di copertura, ma c'è di più per DMS di una semplice analisi). DMS ha anche il supporto per constucting di controllo (e il flusso di dati) i grafici se ne avete bisogno, come si apparantly fare in questo caso; vedi DMS costruito flusso di controllo grafici .

DMS è stato utilizzato per costruire il controllo e gli analizzatori del flusso di dati per C, Java e COBOL, ed è stato utilizzato per costruire parser per alcune 30+ linguaggi. E 'in grado di gestire la vostra lingua eredità se siete seri su questo.

EDIT 10/31/2011:. DMS possono ora calcolare il flusso di controllo per C ++, quindi sarebbe una grande fondazione per uno strumento di copertura di C ++ percorso

Altri suggerimenti

misura la copertura Path è un argomento delicato. Prima di tutto bisogna definire cosa si intende per un percorso in primo luogo. È un ciclo eseguito tre volte un percorso diverso rispetto a un ciclo eseguito quattro volte? Se è così, si dispone di un numero infinito di percorsi. In caso contrario, ci sono casi di test perse, anche se tutti i percorsi sono coperti.

Potrebbe essere che il passo successivo è meglio la copertura ramo: misurare se ogni condizionato viene eseguito sia vero e falso. Questo può essere ottenuto mediante la registrazione di sequenze di numeri di riga.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top