Ora so che le persone potrebbero considerare questa domanda duplicata o chiesta più volte, nel qual caso apprezzerei un collegamento a domande pertinenti con risposta alla mia domanda.
Recentemente sono stato in disaccordo con alcune persone sulla copertura del codice. Ho un gruppo di persone che vuole che la nostra squadra cada guardando completamente alla copertura del codice basata sull'argomento secondo cui una copertura del 100% non significa test di buona qualità e quindi un codice di buona qualità.
Sono stato in grado di respingere vendendo l'argomento secondo cui la copertura del codice mi dice che cosa non è stato testato con certezza e ci aiuta a concentrarci su quelle aree.
(Quanto sopra è stato discusso in modo simile in altre domande SO come questo - link )
L'argomento di queste persone è: il team reagirà creando rapidamente test di bassa qualità e quindi sprecando tempo senza aggiungere una qualità significativa.
Pur comprendendo il loro punto di vista, sto cercando un modo per rendere più solido il caso della copertura del codice introducendo strumenti / framework più robusti che si prendono cura di più criteri di copertura (Functional, Statement,Decision, Branch, Condition, State, LCSAJ, path, jump path, entry/exit, Loop, Parameter Value etc)
.
Quello che sto cercando è un suggerimento per una combinazione di tali strumenti di copertura del codice e pratiche / processi per accompagnarli che può aiutarmi a contrastare tali argomenti mentre mi sento a mio agio nella mia raccomandazione.
Gradirei anche eventuali commenti / suggerimenti di accompagnamento basati sulla tua esperienza / conoscenza su come contrastare tale argomento, perché mentre la copertura soggettiva del codice ha aiutato il mio team ad essere più consapevole della qualità del codice e del valore dei test.
Modifica: per ridurre qualsiasi confusione sulla mia comprensione della debolezza della tipica copertura del codice, voglio sottolineare che non mi riferisco a Statement Coverage
(o linee di codice eseguite) strumenti (lì sono molti). In effetti, ecco un buon articolo su tutto ciò che è sbagliato: link
Stavo cercando più di una semplice dichiarazione o copertura di linea, andando più in più criteri e livelli di copertura.
Vedi: link
L'idea è che se uno strumento può dirci la nostra copertura in base a più criteri, allora diventa una valutazione automatizzata ragionevole della qualità del test. Non sto affatto cercando di dire che la copertura della linea è una buona valutazione. In realtà questa è la premessa della mia domanda.
Modifica:
Ok, forse l'ho proiettato un po 'troppo drammaticamente, ma hai capito il punto. Il problema riguarda l'impostazione di processi / politiche in generale tra tutti i team in modo omogeneo / coerente. E la paura è generale che come si garantisce la qualità dei test, come si assegna il tempo garantito senza alcuna misura ad esso. Pertanto mi piace avere una funzionalità misurabile che, se supportata da processi appropriati e gli strumenti giusti, ci consentirebbe di migliorare la qualità del codice pur sapendo che il tempo non viene speso in processi dispendiosi.
EDIT: Finora quello che ho dalle risposte:
- Le revisioni del codice dovrebbero coprire i test per garantire la qualità dei test
- Test La prima strategia aiuta a evitare test scritti dopo il fatto di aumentare semplicemente la copertura%
- Esplorazione di strumenti alternativi che coprono criteri di test diversi dalla semplice Istruzione / Linea
- L'analisi del codice coperto / numero di bug rilevati potrebbe aiutare ad apprezzare l'importanza della copertura e creare un caso migliore
- Soprattutto, fidati dell'input del Team per fare la cosa giusta e combattere per le loro convinzioni
- Blocchi coperti / # di test - Debuttabile ma con un certo valore
Grazie per le fantastiche risposte finora. Li apprezzo davvero. Questo thread è meglio di ore di brainstorming con i poteri che sono.