26/05/07 1
Présentation de JUnit Partie 2Présentation de JUnit Partie 2
NICOLAS BOUSSEKEYT
CNAM 2006-2007
26/05/07 2
Objectifs de la présentationObjectifs de la présentation
Présentation de différents plugins (JunitPerf, Dbunit)
Mise en place de Test d'adéquation et de couverture (Couverture d'instruction , Couverture de branche, Adéquation de mutation)
Test de la méthode JUnit Axioms (JAX)
26/05/07 3
JUniperfJUniperf
JUnitPerf est une collection d'outils de test permettant de mesurer les performances et l'adaptabilité des fonctionnalités contenues dans les tests unitaires Junit.
Pour plus d’informations
http://clarkware.com/software/JUnitPerf.html
26/05/07 4
Junitperf (suite)Junitperf (suite)
Le plugin JUnitPerf permet d'effectuer deux types de test :
Les tests de durée (TimedTest), Les tests de charge (LoadTest).
26/05/07 5
Junitperf : TimedTest(suite)Junitperf : TimedTest(suite)
Le type de test TimedTest permet de valider qu'un jeu de test ne va dépasser sa durée effective Maximum.
26/05/07 6
Junitperf : TimedTest(suite)Junitperf : TimedTest(suite)
Exemple :
une classe Pile qui permet d'empiler ou de dépiler des entiers dans un tableau d'objet.
26/05/07 7
Junitperf : TimedTest(suite)Junitperf : TimedTest(suite)
Etapes à réaliser pour effectuer un test avec JunitPerf :Créer un test unitaire de la classe en
exempleCréer une suite de test pour vérifier que le
test unitaire réponds bien au temps imparti ou qu'il fonctionne bien correctement selon un certaine montée en charge.
26/05/07 8
Junitperf : TimedTest(suite)Junitperf : TimedTest(suite)
Présentation du test TimedTest :Le test Junit classique crée une pile de
taille de 1000,Le test JunitPerf vérifie que le test ne
va dépasser le temps de 10900 milli secondes
Présentation de l'exemple
26/05/07 9
Junitperf : LoadTestJunitperf : LoadTest
Présentation du test LoadTest :On utilise le test Junit créé
précedemment,Le test JunitPerf vérifie que le test va
gérer 10 utilisateurs avec 2 itérations.
Présentation de l'exemple
26/05/07 10
DBUnitDBUnit
Permet de simplifier les tests unitaires avec des
données basés
Basé sur XML pour charger des données de test.
Pour plus d’informations
http://dbunit.sourceforge.net/
26/05/07 11
DBUnitDBUnit
Le scénario le plus typique : Supprimer les données dans la base de donnée
provenant d'anciens tests, Charger des données provenant d'un fichier dans
la base, Démarrer quelques tests en utilisant des méthodes
DbUnit.
26/05/07 12
DBUnitDBUnit
Voici le modèle merise fournit comme exemple :
26/05/07 13
DBUnitDBUnit
Voici le modèle UML comme exemple :
Présentation de l'exemple
26/05/07 14
Couverture d'instructionsCouverture d'instructionspublic int valeurRetourne(int val, boolean condition1, boolean condition2, boolean condition3) {
int val2 = val;
if (condition1) {
val2++;
}
if (condition2) {
val2--;
}
if (condition3) {
val2=val;
}
return val2;
}
26/05/07 15
Couverture d'instructions (suite)Couverture d'instructions (suite)
Ce test de couverture doit permettre de couvrir toutes les instructions du code précédent.
Présentation de l'exemple
26/05/07 16
Couverture de branchesCouverture de branchesCe test de couverture doit permettre
de couvrir toutes les branches du code d'exemple précédent.
Présentation de l'exemple
26/05/07 17
Adéquation de mutationAdéquation de mutation
Les tests de mutation (DeMillo et al. 1979) permettent d'évaluer la qualité des test effectués.
Ils consistent à vérifier si un jeu de test est capable de détecter les petites modifications syntaxiques du programme originale (mutants).
26/05/07 18
Adéquation de mutation (suite)Adéquation de mutation (suite)
Exemple :
Nous allons donc utiliser une classe qui permet de calculer l'énergie kinétique.
L'énergie kinétique est défini comme suit
K=12xMV 2
26/05/07 19
Adéquation de mutation (suite)Adéquation de mutation (suite)
Pour mettre en place un mutation, nous avons donc introduit une erreur en remplaçant le 2 par un 3.
Présentation de l'exemple
26/05/07 20
Méthode JAXMéthode JAX
Cette méthode est basée sur les spécifications de l'algèbre de Guttag avec les types abstraits (ADT).
Cette méthode démontre que les tests basés sur JAX permettent de découvrir des erreurs non détectés avec les tests classiques
26/05/07 21
Méthode JAX (suite)Méthode JAX (suite)
Exemple : Utilisation de la classe pile
Taille de la pile maximum : 2
26/05/07 22
Méthode JAX (suite)Méthode JAX (suite)
Utilisation de la méthode classique :On développe un test par méthode.
26/05/07 23
Méthode JAX (suite)Méthode JAX (suite)
Exemple avec une méthode :public void testEmpty() /* Tests the emptying of the stack. */ { int k = 3; numbers.push(k); assertTrue(!numbers.isEmpty() ); numbers.pop(); assertTrue( numbers.isEmpty() ); }
On ajoute un élément.On teste que la pile n'est pas vide.On retire un élément.On teste que la pile est vide.
Présentation de l'exemple
26/05/07 24
Méthode JAX (suite)Méthode JAX (suite)
Utilisation de la méthode JAX :On développe un test par règles de structure.On compare aussi deux objets qui doivent être dans la même situation.
26/05/07 25
Méthode JAX (suite)Méthode JAX (suite)
Exemple avec une méthode :public void testEmptyNew()
/* Tests the emptying of the stack.
*/
{
//new == true
assertTrue(numbers.isEmpty());
}
public void testEmptyPush()
/* Tests whether a stack is empty after a push.
*/
{
//push == false assuming stack maxsize > 0
int k = 3;
numbers.push(k);
assertTrue(!numbers.isEmpty());
}
Vérifie que la nouvelle pile est vide.
Ajoute un élément, vérifie que la pile est non vide.
Présentation de l'exemple
26/05/07 26
ConclusionConclusion
Les extensions de Junit permettent de mettre en place des fonctionnalités qui n'existent pas avec Junit ce qui rend le produit beaucoup plus intéressant. On peut pas exemple tester des flux XML, générer des rapports à la volée en PDF dans des emails.
Les méthodes de couverture qui permettent de vérifier que tout le code a bien été vérifié par les tests unitaires.
26/05/07 27
Conclusion (suite)Conclusion (suite)Mise en pratique les tests de mutation qui
eux permettent de vérifier que les tests unitaires tombent bien en erreur ce qui permet de valider leurs utilités.
Introduction à la méthode JAX . Cette méthode montre comment la méthode des axiomes permet de découvrir des bugs difficilement détectables avec les méthodes classiques.
26/05/07 28
La QuestionLa Question
Question : A quoi sert Dbunit ?
26/05/07 29
Des questions ?Des questions ?
Top Related