Un interessante "punto di riferimento" per la tua applicazione è che dici "l'utente compila un modulo". Se vuoi testare, devi rifattorizzare il tuo codice per costruire una rappresentazione esplicita di quel modulo come una struttura di dati. Quindi è possibile iniziare a raccogliere moduli e verificare che il sistema risponda in modo appropriato a ciascun modulo.
È possibile che le azioni eseguite dal sistema non siano osservabili fino a quando qualcosa non colpisce il file system. Qui ci sono un paio di idee:
creare qualcosa come un repository git per lo stato iniziale del sistema di file, eseguire un modulo, e guardare l'output di git diff. È probabile che questo sarà più simile ai test di regressione che ai test unitari.
Creare un nuovo modulo il cui unico scopo è rendere visibili le azioni del programma. Questo può essere semplice come scrivere testo pertinente su un file di registro o complesso come preferisci. Se necessario, è possibile utilizzare la compilazione condizionale o il collegamento per assicurarsi che questo modulo esegua qualcosa solo quando il sistema è in prova. Questo è più vicino ai test unitari tradizionali poiché ora è possibile scrivere test che dicono dopo aver ricevuto il modulo A, il sistema deve eseguire la sequenza di azioni B. Ovviamente devi decidere quali azioni dovrebbero essere osservate per formare un test ragionevole.
ho il sospetto vi ritroverete a migrare verso qualcosa che assomiglia di più test di regressione di test di unità per sé. Questo non è necessariamente male. Non trascurare la copertura del codice!
(Un'osservazione parentesi finale: nei brutti vecchi tempi di applicazioni di console interattive, Don Libes ha creato uno strumento chiamato Expect, che è stato estremamente utile in che consente di script di un programma che ha interagito come un utente A mio parere abbiamo un disperato. Ho bisogno di qualcosa di simile per interagire con le pagine Web. Penso che pubblicherò una domanda al riguardo :-)
fonte
2009-03-04 03:57:16
domanda eccellente. Ho anche trovato impossibile (anche se concesso sono un noob quando si tratta di test di unità) per testare applicazioni grafiche pesanti. Ad esempio, in che modo testare un'unità su un'app che consente all'utente di disegnare un poligono su un'immagine? Oltre ad avere un tester, siediti lì e prova. –