Abbiamo accumulato un numero considerevole di test unitari per il nostro programma principale nel corso degli anni. Molte migliaia. Il problema è che non abbiamo una chiara idea 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 segnalazione. Quindi puoi avere un template che viene usato per testare l'analisi (leggiamo tutte le proprietà della tabella), unendo i dati (abbiamo mantenuto le proprietà corrette della tabella nell'unione), formattando la pagina finale (la tabella è posizionata correttamente nella 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 padding attraverso l'interruzione di pagina, per un tavolo all'interno di una cella, celle unite verticalmente, celle unite orizzontalmente, una verticale & cella unita orizzontalmente che contiene una tabella con un & verticale celle unite orizzontalmente nella tabella interna, in cui la tabella si rompe su una pagina.
Quindi in quale categoria va il test? Riempimento della tabella, interruzioni di pagina, celle nidificate, celle unite verticalmente, celle unite orizzontalmente o qualcos'altro?
E come possiamo documentare queste categorie, nominare i test unitari, ecc.?
Aggiornamento: un numero di persone ha suggerito di utilizzare gli strumenti di copertura per verificare che abbiamo una copertura completa. Sfortunatamente questo è di uso limitato nel nostro caso perché i bug tendono a essere dovuti a combinazioni specifiche, quindi è il codice che è stato testato, ma non in quella combinazione.
Ad esempio, ieri abbiamo avuto un cliente che ha avviato un segnalibro Word alla fine di un ciclo forEach nel relativo modello (un documento Word) e lo ha terminato all'inizio del ciclo forEach successivo. Questo codice usa tutti i test unitari contro di esso, ma non avevamo pensato alla combinazione di un modello che espandeva un segnalibro che iniziava ad essere avviato 25 volte, quindi è stato terminato 10 volte (i due cicli di Each avevano un diverso numero di righe). / p>