[IngSw] Testing WhiteBox: test set minimale

probid
Salve,
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
probid
Bumpettino!

Quinzio
Ma quale Fibonacci.... è molto semplice, però si può iniziare da li.

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.

apatriarca
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);
    }
}

Quinzio
Perfetto, sono d'accordo.
Si trattava solo di un esempio per parlare di Software Testing, non di scrivere una funzione di libreria.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.