[IngSw] Testing WhiteBox: test set minimale
Salve,
studiando Ingegneria del software, mi trovo a svolgere alcuni esercizi tipo questo:
Penso di aver compreso la teoria dei vari criteri di copertura tipici del testing WhiteBox: statement, branch, condition, ecc.; tuttavia non ho idea di come svolgere un esercizio del genere. Come faccio a capire quale criterio adottare e come minimizzare l'insieme di test?
Grazie mille in anticipo!
studiando Ingegneria del software, mi trovo a svolgere alcuni esercizi tipo questo:
Progettare un numero di test case minimale secondo la tecnica dei test WhiteBox, indicando per ciascun caso di test dati in input e classe/i di copertura relativa/e per la seguente funzione:
Penso di aver compreso la teoria dei vari criteri di copertura tipici del testing WhiteBox: statement, branch, condition, ecc.; tuttavia non ho idea di come svolgere un esercizio del genere. Come faccio a capire quale criterio adottare e come minimizzare l'insieme di test?
Grazie mille in anticipo!
Risposte
Bumpettino!
Ma quale Fibonacci.... è molto semplice, però si può iniziare da li.
Scrivi dei test case per fare lo statement e il branch cover...
Se vuoi divertirti scrivi una funzione che riceve in ingresso una stringa di 4 caratteri che rappresentano un numero esadecimale (sia upper che lower case) e restituisce il numero in una variabile di tipo unsigned int.
Qualsiasi carattere estraneo da errore.
int fib(unsigned int n) { // restituisce l'ennesimo numero di fibonacci // es. 1 1 2 3 5 8 13 .... if (n==0) return -1; if (n<=2) return 1; return (fib(n-1)+fib(n-2)); }
Scrivi dei test case per fare lo statement e il branch cover...
Se vuoi divertirti scrivi una funzione che riceve in ingresso una stringa di 4 caratteri che rappresentano un numero esadecimale (sia upper che lower case) e restituisce il numero in una variabile di tipo unsigned int.
Qualsiasi carattere estraneo da errore.
La funzione che hai scritto restituisce il valore sbagliato per \(n=0\). Dovrebbe restituire zero in modo che l'equazione di ricorrenza valga per tutti gli \(n\). Nel tuo caso avresti infatti che \( F(0) + F(1) = 0 \neq F(2) = 1.\) Per cui una versione corretta della successione di fibonacci è la seguente (anche se si tratta di un modo molto poco efficiente di calcolarlo):
uint64_t fib(uint8_t n) { if (n < 2) { return n; } else { return fib(n-1) + fin(n-2); } }
Perfetto, sono d'accordo.
Si trattava solo di un esempio per parlare di Software Testing, non di scrivere una funzione di libreria.
Si trattava solo di un esempio per parlare di Software Testing, non di scrivere una funzione di libreria.