|
Wiki
UniCrema
Materie per semestre
Materie per anno
Materie per laurea
Help
|
|
Uni.LPSTestingEx History
Hide minor edits - Show changes to output
Changed lines 135-136 from:
x=2 è sufficiente. ''(Ricordate che coprire una decisione significa identificare due casi: uno in cui è vera, ed uno in cui è falsa)''
to:
x=2 è sufficiente. (''Ricordate che coprire una decisione significa identificare due'' ''casi: uno in cui'' ''è vera, ed uno in cui è falsa'')
Changed lines 70-146 from:
to:
\\\
!!Esercizio in classe \\ Scrivi in Java un metodo CONFORME che prende come parametro un intero a e un intero b e \\
# restituisce ''true'' se e solo se a è CONFORME a b (cioè a è tra b e 2b oppure 0), e un metodo CALCOLA che prende come parametro in ingresso un array Y di interi positivi e un numero x e restituisce il numero maggiore in Y che sia CONFORME a x, oppure -1 se non ci sono interi conformi a x. #\\ Individua i casi di test necessari per ottenere i tipi di copertura di istruzioni e decisioni del metodo CALCOLA, e esegui i casi di test con EMMA. #\\ Scrivi i casi di test del punto 2 con JUnit.
\\\
1. \\
[@
public class Prova { static boolean conforme(int a, int b){ if ( (a>=b && a<=2*b) || (a == 0)){ return true; } return false; }
static int calcola(int[] Y, int x){
//Si assume che Y contenga interi positivi int max = -1; for (int i=0; i<Y.length; i++){ if (conforme(Y[i],x) && Y[i] > max){ max = Y[i]; } return max; } }
@]
\\
2. \\
Per il codice di cui al punto 1. (dove il caso “return -1” e il caso “return max con max diverso da -1” sono accorpati in un’unica istruzione m.) basta un solo caso di test per coprire tutte le istruzioni di calcola() e conforme(), e cioè un caso di test in cui il vettore Y contiene almeno due elementi: uno conforme a x per coprire la d. di conforme(), ed uno non conforme a x per coprire la e. di conforme(). Ad. es. Y= [1,3] e x=2. L’istruzione m. viene sempre coperta (per come è stato definito il codice); se, invece max venisse inizializzato ad es. a x-1 (come qualcuno ha fatto!) e al posto di m. avessi \\ [@ if (max = x-1) return -1; else return max; @] \\ allora occorrerebbe un ulteriore caso per coprire la “return -1”, ad es. prendendo Y vuoto. Per coprire le decisioni (j. e k. di calcola(), e c. di conforme()), lo stesso caso di test Y= [1,3] e x=2 è sufficiente. ''(Ricordate che coprire una decisione significa identificare due casi: uno in cui è vera, ed uno in cui è falsa)''
\\
3. \\
E’ banale. Nel caso di test Y= [1,3] e x=2 bastava un’istruzione assertEquals(3,calcola(Y,x)).
\\
Changed line 148 from:
[[Torna alla pagina di LPS -> LinguaggiProgrammazioneSicurezza]]
to:
[[Torna alla pagina di LPS -> LinguaggiProgrammazioneSicurezza]]
Changed line 4 from:
to:
Changed lines 20-21 from:
to:
Added lines 33-69:
!!Esercizio in classe Rappresentare con un grafo di flusso il seguente codice:
[@ read (x,y) a:=x b:=y while (a <> b) do if (a > b) then a := a - b; else b = b - a; endif endwhile end @]
Attach:LPStestex1.png
!!Esercizio in classe Rappresentare con un grafo di flusso il seguente codice:
[@ int main(int x, int y) { int i; for (i = 0; i < 10; i ++) { if (x > y) printf("A"); else if (x == y) printf("B");ù else printf("C"); } printf("D"); } @]
Attach:LPStestex2.png
Added lines 1-34:
(:title LPS - Esercizi sul testing:) %titolo%''':: LPS - Esercizi sul testing ::'''
!!!Compito del 2/7/07 [@ int somma (int x, int y) { if (x > y) return x * y; else return x + y; } @]
Trovare un criterio valido, uno affidabile ed uno ideale.
Un criterio valido è '''C:{(x,y) t.c. x, y sono INT, x >= y}'''. Infatti, nel caso in cui '''x = y''', non scopre l'errore. Ma c'è almeno un caso (in realtà tanti) in cui '''x > y''', e quindi scopre l'errore. Da notare che NON È affidabile.
Un criterio affidabile è '''C:{(x,y) t.c. x, y sono INT, x < y}''', perché tutti i risultati che ottiene dalla funzione sono coerenti. Ma NON È valido, perché non scopre l'errore.
Un criterio ideale è '''C:{(x,y) t.c. x, y sono INT, x = y + 1}''', che è valido (trovo almeno una volta l'errore) ed affidabile (trovo sempre l'errore).
!!!Compito del 12/9/07 [@ int diff(int x, int y) { if (x > y) return x - y; else return x * y;
} @]
* Criterio ideale: x < y * Criterio affidabile: x > y * Criterio valido: x >= y
---- [[Torna alla pagina di LPS -> LinguaggiProgrammazioneSicurezza]]
|
|