2009-03-27 6 views
8

Esiste un buon strumento per generare casi di test unitari, in base a un progetto .NET o Java, genera casi di test unitari che coprono una copertura del codice quasi del 100%. Il numero di casi di test potrebbe essere direttamente proporzionale alla complessità ciclomatica del codice (maggiore è la nidificazione di cicli e condizioni maggiore è la complessità ciclomatica) dove maggiore è la complessità ciclomatica, maggiore è la serie di casi di test generati. Non mi aspetto che funzioni completamente (ad esempio, ho intenzione di compilare i test unitari ed eseguirlo dopo che è stato generato), ma direi che può avere uno stile modello nel caso di test in cui devi modificare il caso che si adatta alle tue esigenze. Ma dovrebbe anche avere un metodo di installazione e smontaggio corretto ed è abbastanza buono da rilevare se devono essere usati oggetti fittizi per il test di unità nel caso in cui ci siano delle dipendenze. Quindi, esiste un tale strumento?Generazione automatica di casi di test di unità per .NET e Java

risposta

14

Per .NET, Microsoft ha Pex che si spera diventerà mainstream per .NET 4.0, insieme a Code Contracts. Consiglio vivamente di guardare il video di Channel 9.

Mi sembra che questo genere di cose è molto buona per le classi molto data-driven - parser ecc, non riesco a vedere che mi piacerebbe molto spesso Comincerò con esso, ma uno strumento utile per avere in la tua armeria comunque.

+0

Accidenti, 12 secondi! –

+1

Cosa posso dire, Marc? O ce l'hai o non hai ...;) –

+0

"Iniziare" con esso: i test Pex sono più come le specifiche eseguibili. Pensare agli input di esempio è davvero un lavoro noioso che viene gestito meglio dal software ... conosce tutti i casi d'angolo che il deviloper sta tentando di ignorare;) –

5

Per C# (o .NET in generale), PEX potrebbe essere quello strumento. Funziona a livello IL e tenta di aprirsi la strada in ogni ramo. Ha scoperto con successo una vasta gamma di bug (nel BCL ecc.).

5

Anche se sembra contropartito, potresti anche essere interessato a quadri di generazione di test casuali. La ricerca ha dimostrato che può essere altrettanto efficace nel trovare bug rispetto agli approcci sistematici basati sulla copertura, come suggerito.

Verificare Randoop entrambi per .NET e Java. Funziona generando una sequenza più o meno casuale di chiamate di metodo e controlla i contratti, arresti anomali, ecc. È completamente automatico.

Inoltre, è possibile controllare alcuni altri strumenti di test casuali basati su QuickCheck, ad es. per Java, Scala, F #. che sono più simili a Pex, cioè si fornisce una specifica o un test unità parametrizzato e lo strumento lo controlla per un numero di argomenti di input generati.

Ho trovato che questo modo "parametrizzato" di scrivere test di unità è in realtà molto più naturale in almeno il 60% dei casi e trova molti più bug.

+1

La pagina web del progetto Randoop si è spostata su http://mernst.github.io/randoop/. – mernst

0

Per Java, è possibile verificare EvoSuite, che è open source e attualmente attivo (disclaimer, sono uno dei suoi contributori). Vedi anche correlato question per un elenco di altri strumenti.

Problemi correlati