Una delle poche cose su cui la maggior parte degli sviluppatori di software concorda è che non dovresti fare affidamento sul codice per funzionare correttamente a meno che non lo provi. Se non lo collaudi, potrebbero esserci bug nascosti che ti causeranno solo più lavoro lungo la strada.
Capisco come testare il mio codice normale, ma come devo testare il mio codice di test per essere sicuro che possa trovare e segnalare in modo efficace gli errori quando sono presenti? Personalmente sono stato abbastanza stupido da scrivere casi di test errati che sarebbero passati quando non avrebbero dovuto, sconfiggendo così in primo luogo lo scopo dei miei test di scrittura. Fortunatamente, ho trovato e corretto gli errori nel tempo, ma secondo i mantra dei test sembra che nessuna suite di test sarebbe completa senza avere il proprio set di test per assicurarsi che funzionasse.
Mi sembra che il modo migliore per farlo sia quello di assicurarsi che il test fallisca per il codice difettoso. * Se passo 2 minuti alternativamente ad aggiungere bug al codice e assicurandomi che fallisca, dovrei avere un grado accettabile di fiducia che il "lavoro" dei test. Questo mi porta alla mia seconda domanda: quali sono i modi migliori per introdurre i bug per assicurarsi che vengano catturati dai casi di test? Devo solo commentare casualmente le dichiarazioni, assicurarmi che il ramo sbagliato di un if-else
venga eseguito negandone le condizioni e cambiare l'ordine di esecuzione del codice con effetti collaterali, ecc., Finché non sono soddisfatto che i miei test cattureranno la maggior partebug comuni? In che modo gli sviluppatori professionisti confermano che i loro test fanno effettivamente quello che dovrebbero fare? Assumono semplicemente che i test funzionino o si prendono anche il tempo di testarli? In tal caso, come testano i test?
Non sto suggerendo alle persone di dedicare così tanto tempo a testare i loro test e quindi a testare i test per i loro test in modo che non scrivano mai il vero codice, ma ho fatto cose abbastanza stupide che sento di poter trarre beneficio da un po ' di "meta-test", ed era curioso del modo migliore di procedere. : D
* Ho potuto verificare se il test ha esito positivo durante il test del codice "privo di bug", ma l'utilizzo del codice come una specifica per il test sembra piuttosto arretrato ...