Nel corso degli anni abbiamo realizzato un numero considerevole di test unitari per il nostro programma principale. Molte migliaia. Il problema è che non abbiamo un'idea chiara di quali test abbiamo perché ce ne sono così tanti. E questo è un problema perché non sappiamo dove siamo deboli nei test (o dove abbiamo duplicati).
La nostra app è un motore di reportistica. Quindi puoi avere un modello che viene utilizzato per testare l'analisi (leggiamo tutte le proprietà della tabella), unendo i dati (abbiamo mantenuto le proprietà della tabella corrette nell'unione), formattando la pagina finale (la tabella è posizionata correttamente sulla pagina ) e / o il formato di output (il file DOCX creato è corretto).
Aggiungi a questo ciò che dobbiamo testare. Prendi il padding attorno a una cella di tabella (usiamo Word, Excel e PowerPoint per la progettazione del report). Dobbiamo testare il riempimento attraverso l'interruzione di pagina, per una tabella all'interno di una cella, celle unite verticalmente, celle unite orizzontalmente, una cella unita verticalmente e orizzontalmente che contiene una tabella con celle unite verticalmente e orizzontalmente nella tabella interna, dove quella tabella si rompe su una pagina.
Quindi in quale categoria rientra quel test? Riempimento tabella, interruzioni di pagina, celle nidificate, celle unite verticalmente, celle unite orizzontalmente o qualcos'altro?
E come documentiamo queste categorie, nominiamo i test unitari, ecc.?
Aggiornamento: alcune persone hanno suggerito di utilizzare gli strumenti di copertura per verificare che la copertura sia completa. Sfortunatamente questo è di utilità limitata nel nostro caso perché i bug tendono ad essere dovuti a combinazioni specifiche, quindi è il codice che è stato tutto testato, ma non in quella combinazione.
Ad esempio, ieri abbiamo avuto un cliente che ha avviato un segnalibro di Word alla fine di un ciclo forEach nel suo modello (un documento di Word) e lo ha terminato all'inizio del ciclo successivo per Ogni ciclo. Tutto questo ha usato un codice che ha dei test unitari, ma non avevamo pensato alla combinazione di un modello che espandeva un segnalibro che iniziava per essere avviato 25 volte, per poi terminare 10 volte (i due cicli per ogni ciclo avevano un numero diverso di righe).