Qui Mike Clifton descrive 24 modelli di prova dal 2004. È un'euristica utile durante la progettazione dei test di unità.
http://www.codeproject.com/Articles/5772/Advanced-Unit-Test-Part-V-Unit-Test-Patterns
Passato/Fallito Patterns
Questi modelli sono la prima linea di difesa (o di attacco, a seconda della prospettiva) per garantire un buon codice. Ma attenzione, sono ingannevoli in quello che ti dicono del codice.
- Il modello-Test Semplice
- Il modello Codice-Path
- il parametro della gamma del modello
modelli di transazione dati
modelli di transazione dei dati sono un inizio a abbracciando le questioni relative alla persistenza e alla comunicazione dei dati. Ulteriori informazioni su questo argomento sono discusse in "Modelli di simulazione". Inoltre, questi modelli omettono intenzionalmente il test di stress, ad esempio il caricamento sul server. Questo sarà discusso in "Modelli di stress test".
- Il/O semplice schema-Data-I
- il vincolo-Data modello
- il rollback del modello
Patterns Collection Management
Molto di ciò che le applicazioni fanno è gestire raccolte di informazioni. Mentre ci sono una varietà di collezioni disponibili per il programmatore, è importante verificare (e quindi documentare) che il codice stia usando la raccolta corretta. Questo influenza ordini e vincoli.
- Il modello Collection-Order
- Il modello Enumeration Il modello
- Collection-Constraint
- Il modello Collection-indicizzazione
Patterns prestazioni
Unità di test dovrebbe non riguardare solo la funzione ma anche con la forma. Quanto efficientemente funziona il codice in prova? Quanto velocemente? Quanta memoria usa? Scambia l'inserimento dei dati per il recupero dei dati in modo efficace? Libera correttamente le risorse? Queste sono tutte cose che sono sotto la supervisione dei test unitari. Includendo i modelli di prestazioni nel test di unità, l'implementatore ha un obiettivo da raggiungere, il che si traduce in codice migliore, un'applicazione migliore e un cliente più felice.
- Il modello Performance-test
modelli di processo
Unit testing ha lo scopo di verificare, anche, unità ... le funzioni di base dell'applicazione. Si può affermare che i processi di test dovrebbero essere relegati alle procedure di test di accettazione, tuttavia non prendo in considerazione questo argomento. Un processo è solo un diverso tipo di unità. I processi di test con un tester unitario offrono gli stessi vantaggi degli altri test unitari: documentano il modo in cui il processo è destinato a funzionare e il tester dell'unità può aiutare l'implementatore testando anche il processo fuori sequenza, identificando rapidamente i potenziali problemi dell'interfaccia utente come bene. Il termine "processo" include anche le transizioni di stato e le regole aziendali, che devono essere entrambe convalidate.
- Il modello di processo-Sequence
- Il modello di processo-Stato
- Processo regola modello
modelli di simulazione
transazioni di dati sono difficili da testare perché spesso richiede una configurazione preimpostata, una connessione aperta e/o un dispositivo online (per citarne alcuni). Gli oggetti simulati possono venire in soccorso simulando il database, il servizio Web, l'evento utente, la connessione e/o l'hardware con cui il codice sta eseguendo transazioni. oggetti mock hanno anche la capacità di creare condizioni di errore che sono molto difficili da riprodurre nel mondo reale - un collegamento con perdita di dati, un server lento, un hub di rete fallito, ecc
- modello Mock-Object
- il Service-simulazione del modello
- lo schema di bit-Error-simulazione
- il componente-modello di simulazione
Patterns multithreading
Le applicazioni multithreading di test di unità sono probabilmente una delle cose più difficili da fare perché è necessario impostare una condizione che per sua stessa natura è destinata ad essere asincrona e quindi non deterministica. Questo argomento è probabilmente un grande articolo in sé, quindi fornirò solo un modello molto generico qui. Inoltre, per eseguire correttamente molti test filettatura, l'applicazione dell'unità tester deve eseguire stesso test come thread separati in modo che il tester unità non è attivato quando un thread finisce in uno stato di attesa
- Il pattern Signaled
- il modello Deadlock risoluzione
modelli di stress-test
maggior parte delle applicazioni sono testati in ambienti ideali - il programmatore sta usando una machin veloce e con poco traffico di rete, utilizzando piccoli set di dati. Il mondo reale è molto diverso. Prima che qualcosa si rompa completamente, l'applicazione potrebbe subire un degrado e rispondere male o con errori all'utente. I test unitari che verificano le prestazioni del codice in condizioni di stress devono essere soddisfatti con un fervore uguale (se non superiore) rispetto ai test unitari in un ambiente ideale.
- Il Bulk-Data-Stress-Test Pattern
- Resource-Stress-Test Pattern
- il carico-Test Pattern
Patterns Presentation Layer
Uno dei gli aspetti più impegnativi del collaudo unitario sono la verifica che le informazioni arrivino all'utente esattamente al livello di presentazione stesso e che il lavoro interno i re dell'applicazione stanno impostando correttamente lo stato del livello presentazione.Spesso, i livelli di presentazione sono impigliati con oggetti business, oggetti dati e logica di controllo. Se stai pianificando di testare il livello di presentazione delle unità, devi comprendere che una separazione netta tra preoccupazioni è obbligatoria. Parte della soluzione implica lo sviluppo di un'architettura Model-View-Controller (MVC) appropriata. L'architettura MVC fornisce un mezzo per sviluppare buone pratiche di progettazione quando si lavora con il livello di presentazione. Tuttavia, è facilmente abusato. È necessaria una certa dose di disciplina per garantire che si stia effettivamente implementando l'architettura MVC correttamente, piuttosto che solo nella sola parola.
- The View-Stato Test Pattern
- Il Modello-Stato Test Pattern