TD de Test Logiciel Introduction Exercice 1 (Petites questions). 1. On dit souv
TD de Test Logiciel Introduction Exercice 1 (Petites questions). 1. On dit souvent que le test exhaustif est impossible. Que serait ce test exhaustif ? Pourquoi serait-ce impossible ? 2. Un d´ efaut du test al´ eatoire est qu’il peine ` a produire certaines DT tr` es particuli` eres. Par exemple, quelle est la probabilit´ e de produire (x,y) avec x=y ? (machine 32 bits) 3. Dites pourquoi un logiciel qui a pass´ e avec succ` es tous les tests syst` eme peut ´ echouer sur les tests d’acceptation ? 4. Consid´ erons un programme avec un petit nombre de chemins, et un jeu de tests couvrant tous les chemins. Les tests passent sans probl` eme. Le programme peut-il contenir des erreurs ? 5. Que faire si une campagne de tests ne trouve que tr` es peu de bugs dans un programme ? Exercice 2 (Un peu de test en vrai). 1. ´ ecrire une m´ ethode Java (ou OCaml, ou autre) de signature public static Vector unionSet (Vector a, Vector b) retournant un vecteur d’objets contenus dans a ou b 2. Cet ´ enonc´ e pr´ esente des d´ efauts et des ambiguit´ es. Trouvez-en autant que possible. 3. Cr´ eer un jeu de tests (CT/DT/oracle/script de test) pour d´ etecter les bugs potentiellement introduits ` a cause de ces ambiguit´ es / d´ efauts de sp´ ecification. Documenter ces tests en d´ ecrivant de mani` ere concise chacun d’entre eux. Jouer les tests contre votre implantation. 4. R´ e´ ecrire la sp´ ecification pour lever les probl` emes. S´ election de tests boˆ ıte noire Exercice 3 (Approche pairwise). On veut s’assurer qu’une installation r´ eseau fonctionne bien. Les variables sont l’OS, le r´ eseau, l’imprimante et l’application. OS R´ eseau Imprimante Application XP IP HP35 Word Linux wifi Canon900 Excel MacX Bluetooth Canon-EX PowerPoint 1 1. Combien y a-t-il d’entr´ ees possibles au probl` eme ? Combien y a-t-il de paires de valeurs possibles ? 2. Combien faut-il de tests au minimum pour couvrir ces paires ? Proposer un nombre minimal / maximal de tests assurant que chaque paire est choisie. Commentez. 3. Cas g´ en´ eral : soit m variables sur des domaines de taille n. Combien y a-t-il de combinaisons possibles ? Combien y a-t-il de paires de valeurs possibles ? Quel est le nombre maximal de paires couvertes par un test ? Commentez. Exercice 4 (Analyse partitionnelle). Donner des classes d’´ equivalences pour les domaines suivants : – nombre de stylos – nom de plan` ete – tableau de 10 entiers Donner des entr´ ees pour le test aux limites, pr´ eciser les cas de base. Exercice 5. Soit la sp´ ecification suivante : public static int search (List list, Object elt) // Effects: if list or elt is null throw NullPointerException // else if elt is in the list then return the indice of one of its positions // else return -1 On consid` ere la partition bas´ ee sur les caract´ eristiques et blocks suivants : C1 : place de elt dans list – elt est en tˆ ete de list – elt est en fin de list – elt est dans une position autre que tˆ ete/queue 1. Ce type de partition est-il bas´ e sur l’interface ou sur les fonctionalit´ es ? 2. Montrez que la partition de C1 n’est pas disjointe. 3. Montrez que la partition de C1 n’est pas compl` ete. 4. Proposez une nouvelle partition disjointe et compl` ete 5. Donner maintenant une partition en vous basant uniquement sur l’interface (donc les types). S´ election de tests boˆ ıte blanche Exercice 6 (Crit` eres de couverture orient´ es contrˆ ole). Soit le programme ci-dessous. 1 2 void foo ( bool a , bool b , bool c ) { 3 i f ( a or ( b and c )) then 4 p r i n t l n ( ‘ ‘ ok ’ ’ ) ; 5 else 6 ( ) ; 7 p r i n t l n ( ” f i n ” ) ; 8 } 2 (1) Pour chacun des crit` eres ci-dessous, donner les ´ el´ ements ` a couvrir : instructions (I), d´ ecisions (D), conditions (C), d´ ecisions/conditions (DC), conditions multiples (MC), MC/DC. (2) Donner des jeux de tests du programme couvrant les crit` eres et montrant qu’ils sont diff´ erents. Exercice 7 (Couverture structurelle). Soit le programme C suivant : 1 /∗Outputs r e s u l t = 0+1+...+| value | 2 ∗ i f r e s u l t > maxint then error 3 ∗/ 4 void maxsum( int maxint , int value ) { 5 int r e s u l t =0; 6 int i =0; 7 i f ( value < 0) 8 value = −value ; 9 while ( i< value && r e s u l t <= maxint ) { 10 i ++; 11 r e s u l t = r e s u l t+i ; 12 } 13 i f ( r e s u l t <= maxint ) 14 p r i n t l n ( r e s u l t ) ; 15 else 16 p r i n t l n ( ” error ” ) ; 17 } 1. Donner le graphe de contrˆ ole du programme. 2. Donner une suite de tests TSn qui couvre tous les noeuds du graphe de contrˆ ole. Justifier votre r´ eponse. 3. La suite TSn couvre-t-elle tous les arcs ? Si oui, indiquer les donn´ ees de tests qui effectuent la couverture des arcs. Sinon, ajouter des donn´ ees de test pour obtenir une suite de tests TSa qui couvre tous les arcs. 4. Indiquer quelles sont les lignes de code correspondant aux d´ efinitions de la variable result (en- semble defs(result)). Pareil pour les ensembles d’utilisation en calcul c-use(result) et d’utilisation en pr´ edicats p-use(result). 5. Donner une suite de test TSd qui couvre le crit` ere all-use-one-def pour les p-use de result. 6. Explicitez les chemins ` a couvrir pour le crit` ere all-use-all-def pour les p-use de result. Mutations Exercice 8. Soit le programme C de l’exercice 7. 1. G´ en´ erer 5 mutants (ordre 1) distinguables au moyen de ROR et ABS. 2. G´ en´ erer les DT pour tuer ces mutants, calculer le score de mutation obtenu, calculer les couvertures I, C, D obtenues. 3. Prenez les DT que votre voisin a trouv´ e pour la question pr´ ec´ edente, calculer le score de mutation de ces DTs sur vos mutants. 4. G´ en´ erer 1 mutant non distinguable avec ROR et 1 mutant non distinguable avec ABS. 5. Reprendre chacun de vos jeux de tests de l’exo 7, et calculer son score de mutation. Exercice 9. D´ efinissez un op´ erateur de mutations O tel que un jeu de tests O-ad´ equat couvre toutes les instructions. Idem avec d´ ecisions et conditions. 3 Ex´ ecution symbolique Exercice 10. Lancer (` a la main) une ex´ ecution symbolique (algo basique) sur le programme suivant et donner les diff´ erents pr´ edicats de chemin obtenus, ainsi que des DT possibles pour chaque chemin. input(x,y,z); assert(z>5); a := x*x; b := y-z; if{a<b} then c := b-a; else c := a-b; assert(c>=0) end Exercice 11. Questions : 1. Ajouter une commande switch dans le programme. On pourra utiliser des commandes qui pour un switch donnent le nombre de successeurs, pour chaque num´ ero de successeur →un couple (valeur, noeud cible), et le noeud du cas par d´ efaut. 2. Modifier l’algorithme de base pour ajouter : un time out sur le solveur, une borne sur la longueur des chemins, un crit` ere d’arrˆ et (couverture des instructions). 3. (a) Ajouter la gestion des appels de fonction. Dans ce cas, on ajoute une instruction var := call f x1, . . . , xn avec f : int*...*int -> int et return var. Traitez les dans l’ex´ ecution symbolique. La commande f.start donnera l’instruction de d´ epart de la fonction f, la commande f.args donnera la liste de param` etres formels de la fonction. (b) Montrer en quoi cette gestion des fonctions (dite inline) augmente la combinatoire des chemins de la fonction appelante. Ex´ ecution concolique Exercice 12. Expliquez les deux avantages majeures de l’ex´ ecution concolique par rapport ` a l’ex´ ecution symbolique. Exercice 13. Nous rappelons que l’ex´ ecution concolique revient ` a mener en parall` ele une ex´ ecution symbo- lique et une ex´ ecution concr` ete, le r´ esultat de l’ex´ ecution concr` ete pouvant servir ` a aider l’ex´ ecution symbo- lique. – Modifier l’algorithme concolique simple pour approximer des contraintes. Concr` etement, on supose maintenant que le solveur ne peut pas g´ erer la multiplication entre plusieurs variables. Ajouter un m´ ecanisme de concr´ etisation pour pallier cela. – Modifier votre algorithme concolique pour ´ eviter les appels de fonction. On consid` ere uploads/Industriel/ strasbourg-td 1 .pdf
Documents similaires










-
33
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jan 23, 2021
- Catégorie Industry / Industr...
- Langue French
- Taille du fichier 0.1486MB