Se è possibile una copertura di prova del 100%

4

Nel pensare alle tecniche di verifica formale, devi anche avere copertura del test . Ma come mostra l'articolo, puoi facilmente dire di avere "copertura di prova del 100%", ma ogni test non ha alcuna affermazione. Questo è l'estremo. Ma mi chiedo se ci sia mai una situazione in cui si possa dire che in qualche modo si abbia una copertura di prova del 100%. Simile a come un controllore di modelli può controllare ogni possibile percorso e stato nella propria applicazione, chiedendosi se si può dire che uno strumento di test copre lo stesso livello di accuratezza di un correttore di modello. Fondamentalmente mi chiedo se c'è un modo per essere abbastanza accurato con i tuoi test per sapere che hai una copertura del 100%, senza scrivere esplicitamente ogni possibile combinazione di cose.

    
posta Lance Pollard 29.06.2018 - 05:43
fonte

5 risposte

11

Esistono strategie che possono produrre metriche di copertura del codice profondo. I test delle mutazioni sono un esempio. In parole povere, i test di mutazione assicurano che qualsiasi modifica logica al programma porti a un test fallito eseguendo effettivamente i test su ogni permutazione logica di un programma. Se una modifica logica non produce un test in errore, rappresenta un significativo gap di copertura del test.

La mia dichiarazione di non responsabilità: non ho mai eseguito test di mutazione. Non posso parlare di quanto sia fattibile o prezioso veramente . Ma in teoria , sembra davvero dannatamente brillante. In pratica, tuttavia, la maggior parte delle aziende può sopravvivere (e prosperare) assumendo buoni sviluppatori che sono impegnati, interessati e insistono nel seguire buone pratiche di sviluppo .

    
risposta data 29.06.2018 - 07:07
fonte
8

Il 100% di copertura del test è possibile e nonostante il 100% di copertura, il tuo programma potrebbe ancora presentare errori. Vedi le carenze della copertura dei test a " La copertura dei percorsi garantisce la ricerca tutti i bug? "

Similar to how a model checker can check every possible path and state in your application, wondering if a testing tool can be said to cover the same level of thoroughness as a model checker.

L'idea di base è che la copertura del test sarà misurata solo se hai passato una particolare istruzione / percorso ecc o meno, almeno in uno stato (a differenza del controllo del modello che fornisce garanzie per tutti gli stati possibili)

Quindi la risposta è no, a meno che non ci siano casi di test per ogni possibile coppia input-output (numero di casi di test in modo esponenziale nel caso generale)

    
risposta data 29.06.2018 - 07:05
fonte
2

Puoi avere una copertura del 100%, ma la domanda è: significa qualcosa? Personalmente, preferirei avere una copertura del 60% dei metodi importanti e dei loro scenari, rispetto alla copertura del 100% degli scenari non rilevanti.

    
risposta data 09.07.2018 - 12:57
fonte
1

Dipende dalla mia complessità di ciò che stai testando. Quando la mia applicazione stampa solo Hello World, devo solo eseguire un'asserzione per verificare se il risultato stampato è "Hello World". Quando si verificano problemi di prestazioni in tempo reale, limitazioni hardware o interazioni molto complesse, immagino alcuni casi di test che nessuno potrebbe aspettarsi possa verificarsi.

    
risposta data 29.06.2018 - 06:38
fonte
-1

Sì, la copertura del test al 100% è possibile. Varia sempre da applicazione a applicazione, i principali fattori che garantiscono la copertura del test sono la dimensione dell'applicazione, la complessità del codice e la larghezza di banda del progetto. Piccole dimensioni dell'applicazione e più è realizzabile la copertura.

    
risposta data 06.07.2018 - 14:02
fonte

Leggi altre domande sui tag