One of the few things that most software developers agree on is that you shouldn't rely on code to work correctly unless you test it. If you don't test it, it may have hidden bugs that are only going to cause you more work down the road.
Capisco come testare il mio codice normale, ma come dovrei testare il mio codice di test per assicurarmi che possa trovare e segnalare efficacemente gli errori quando sono presenti? personalmente sono stato abbastanza stupido da scrivere casi di test errati che passerebbero quando non dovrebbero avere, sconfiggendo così in primo luogo lo scopo dei miei test di scrittura. Fortunatamente, ho trovato e corretto gli errori in tempo, ma in base ai test mantra 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 sarebbe quello di assicurarmi che il test fallisca con il codice bacato. * Se trascorro 2 minuti alternativamente aggiungendo bug al codice e assicurandomi che fallisca, dovrei avere un grado accettabile di fiducia che i test "funzionino". Questo mi porta alla mia seconda domanda: Quali sono i modi migliori per introdurre i bug per assicurarti che siano presi dai casi di test? Devo commentare solo a caso le dichiarazioni, assicurati che il ramo sbagliato di if-else
viene eseguito negando la sua condizione e modifica l'ordine di esecuzione del codice con effetti collaterali, ecc., finché non sono soddisfatto che i miei test cattureranno la maggior parte bug comuni? In che modo gli sviluppatori professionisti convalidano che i loro test fanno effettivamente quello che dovrebbero fare? Assumono solo che i test funzionino o si prendano il tempo per testarli? Se sì, come fanno a testare i test?
Non sto suggerendo che le persone debbano spendere così tanto tempo a testare i loro test e poi a testare i test per non aver mai scritto il vero codice, ma ho fatto cose abbastanza stupide che mi sembra di poter trarre beneficio da un po 'di "meta-test", ed era curioso del modo migliore per farlo. : D
* Potrei controllare se il test passa durante il test del codice "bug-free", ma usare il codice come una specifica per il test sembra piuttosto indietro ...