Gerald Weinberg "The Psychology of Computer Programming" ha un sacco di buone storie di test. Un particolare mi piace è nel capitolo 4" Programming as a Social Activity " 'Bill', chiede un collega di rivedere il suo codice e trovano diciassette bug in soli tredici dichiarazioni Le recensioni di codice forniscono ulteriori occhi per aiutare a trovare i bug, più gli occhi si usano più possibilità di trovare bug sempre così sottili. Come Linus ha detto: "Dato abbastanza occhi, tutti gli insetti sono superficiali" i test sono fondamentalmente occhi robotici chi guarderà il tuo codice tutte le volte che vuoi a qualsiasi ora del giorno o della notte e ti informerà se tutto è ancora kosher
Quanti test sono sufficienti dipende se stai sviluppando da zero o mantenendo un sistema esistente.
Quando si inizia da zero, non si vuole passare tutto il tempo a scrivere il test e non si riesce a consegnare perché il 10% delle funzionalità che si è in grado di codificare sono testate in modo esauriente. Ci sarà un po 'di prioritizzazione da fare. Un esempio sono i metodi privati. Poiché i metodi privati devono essere utilizzati dal codice che è visibile in qualche modo (pubblico/pacchetto/protetto) i metodi privati possono essere considerati coperti dai test per i metodi più visibili. Qui è dove devi includere alcuni test white-box se ci sono alcuni comportamenti importanti o oscuri o casi limite nel codice privato.
I test dovrebbero aiutarti a verificare 1) i requisiti, 2) rispettare le buone pratiche di progettazione mediante la codifica per la testabilità e 3) sapere quando il codice precedentemente esistente smette di funzionare. Se non è possibile descrivere un test per alcune funzionalità, sarei disposto a scommettere che non si capisce la funzione abbastanza bene da codificarla in modo pulito. L'uso del codice di test unitario ti costringe a fare cose come passare argomenti come cose importanti come connessioni di database o fabbriche di istanze invece di cedere alla tentazione di lasciare che la classe faccia troppo da sola e trasformarsi in un oggetto "Dio". Lascia che il tuo codice sia il tuo canarino significa che sei libero di scrivere più codice. Quando fallisce un test precedente, significa che una delle due cose è che il codice non fa più ciò che era previsto o che i requisiti per la funzionalità sono cambiati e il test deve semplicemente essere aggiornato per adattarsi ai nuovi requisiti.
Quando si lavora con il codice esistente, si dovrebbe essere in grado di mostrare che tutti gli scenari conosciuti sono coperti in modo che quando la prossima richiesta di cambiamento o correzione del bug arriverà, sarai libero di scavare in qualsiasi modulo tu ritenga opportuno senza il preoccupazione fastidiosa, "cosa succede se rompo qualcosa" che porta a passare più tempo a testare anche piccole correzioni, poi è occorso effettivamente cambiare il codice.
Quindi, non possiamo darti un numero di test duro e veloce ma dovresti girare per un livello di copertura che aumenta la tua fiducia nella tua capacità di continuare a fare cambiamenti o aggiungere funzionalità, altrimenti probabilmente hai raggiunto il punto di rendimenti diminuiti.
fonte
2009-07-10 16:22:44
Non riesco a capire se volevi scrivere 'Ho usato per testare' al passato, o 'I test Everything' al tempo presente – ripper234
Scusa per il mio inglese Volevo dire "I test Everything "Ma come ha detto anche Lars A. Brekken, è molto importante priorizzare. – Jonathan