La ragione per cui ho automatizzato i test è che significa ottenere un riscontro coerente, ripetibile e tempestivo che ciò che ho appena fatto è corretto.
Anche il test manuale ha il suo posto, ma è difficile essere convinti di coprire tutto correttamente, e certamente non lo fa altrettanto rapidamente quanto i test automatici.
Ad esempio, parte di uno dei miei progetti è un algoritmo di ottimizzazione che utilizza una certa euristica per aggirare lo spazio di ricerca alla ricerca di buone soluzioni. Ora ci sono circa 40 euristiche diverse che possono essere utilizzate individualmente o in varie combinazioni, e ogni incontro con un cliente sembra implicare l'aggiunta di una nuova euristica o l'estensione di una esistente. Devo essere assolutamente certo che nessuno di questi lavori per un cliente causerà una regressione per un altro cliente, il che implica l'esecuzione dell'algoritmo su poche centinaia di casi diversi e la verifica che l'output sia (non peggiore di) di un tempo.
Non sarebbe pratico chiedere a un tester manuale di eseguire tutti questi casi di test caricando la GUI, aprendo il file di input e facendo clic su "Esegui", almeno non abbastanza spesso per essere un meccanismo di feedback utile. I test sono generalmente eseguiti decine di volte al giorno per i test brevi e ogni notte per i test più pesanti. Con un processo manuale, il feedback completo richiederebbe probabilmente un paio di giorni e correggere un bug introdotto un paio di giorni fa è molto più difficile che correggere un bug introdotto nell'ultima mezz'ora.
Sarebbe anche molto difficile garantire che qualsiasi controllo "a occhio" dei risultati sia buono come una volta, quindi i controlli dei risultati devono essere automatizzati. Ma se hai intenzione di automatizzarlo, puoi anche automatizzare il tutto. Non è difficile.
Un ulteriore vantaggio dei test automatici, dall'esperienza di lavorare con un progetto che non ne aveva, è che se si hanno test manuali che non sono ampiamente documentati, allora quando il progetto giace dormiente (in "modalità manutenzione" apparentemente) per un anno e poi riavvia lo sviluppo attivo nessuno può ricordare come eseguire i test o quali sono stati i risultati attesi, e si finisce per introdurre un intero mucchio di regressioni sciocche che impiegano anni a rimbalzare. D'altra parte, se hai intenzione di documentare i tuoi test in modo sufficientemente dettagliato da poter essere raccolti un anno dopo l'altro, in pratica li hai già automatizzati: hai solo bisogno di rendere la documentazione eseguibile.
Nella mia esperienza, è necessario iniziare a testare circa 2 ore prima del punto in cui ci si rende conto improvvisamente che si dovrebbe avere iniziato a testare 2 ore fa :)
fonte
2010-04-27 23:48:24
Sembra che si stia tentando di creare un framework di test che automatizzi ciò che fanno i tester del QA (test della GUI). Hai già test di livello inferiore (unità/integrazione)? È importante averli prima di avere l'automazione della GUI. –
Grazie a tutti per le vostre risposte. Erano tutti molto utili. In questo momento sto guardando in Selenium e Ruby. Sono sicuro che mi vedrete presto altre domande. – onesith
Dopo aver esaminato la mia ultima domanda, ho fottuto. Dovrebbe essere "Quando" invece del perché. grazie ancora. – onesith