Hakima Zidouri CONSEIL & INGENIERIE Informatique Réseau 3 CONTINUOUS TESTING Exposé de système - 2004 Sommaire CONSEIL & INGENIERIE • L’intérêt des tests unitaires • Outils : JUnit • Écrire ses tests • Plug-in : Continuous Testing • Les plus de Continuous Testing • Démonstration • Différents outils de tests unitaires • Conclusion : ce qu’il faut retenir 2 L’intérêt des tests unitaires CONSEIL & INGENIERIE Le test unitaire : • bout de code qui provoque l’exécution d’un autre bout de code et qui en analyse le résultat. L’intérêt des tests unitaires : • Programmer efficacement • Programmer rapidement • Programmer sans régresser • Programmer en équipe 3 Outils : JUnit CONSEIL & INGENIERIE • Framework de test : JAVA JUnit permet de … • • • vérifier corriger documenter … ses classes JAVA. 4 Écrire ses tests CONSEIL & INGENIERIE Classe à tester Classe de Test public class Utils public class UtilsTest extends TestCase { { public int add (int a, int b) public void testAdd() { { a + b; return } . . . } } } 5 Écrire ses tests : TestCase et Assert CONSEIL & INGENIERIE JUnit.framework.TestCase : définir les tests JUnit.framework.Assert : identifier les erreurs • assertEquals(..) : tester l’égalité de deux types primitifs • assertFalse(…) et assertTrue(…) : tester une condition booléenne • assertNull(…) et assertNotNull(…) : tester si une référence est nulle • assertSame(…) assertNotSame(…) : tester si deux objets se réfèrent au même nom d’objet 6 Écrire ses tests : TestSuite CONSEIL & INGENIERIE import junit.framework.*; JUnit.framework.TestSuite : permet de réunir un ensemble de public ExecuterLesTests tests dansclass une même classe { Intérêt : obtenir un test desuite() l'application complète public static Test { TestSuite suite = new TestSuite("Tous les tests"); Méthode : suite.addTestSuite(MaClasseTest.class); • Créer un objet TestSuite suite.addTestSuite(MaClasse2Test.class); return la suite; • Appeler méthode addTest( instance de la classe } pour chaque classe de test à ajouter public static void main(String args[]) •{Définir le main et appeler la méthode run() junit.textui.TestRunner.run(suite()); } } 7 de tests ) Plug-in : Continuous Testing (1) CONSEIL & INGENIERIE • Continuous testing permet … d’automatiser de prioriser de filtrer … ses tests unitaires. • Basé sur JUnit : • mêmes informations • même format 8 Plug-in : Continuous Testing (2) CONSEIL & INGENIERIE Plug-in Activer :Continuous : • Help >( du Software > FindTesting and Install • Properties projet )Updates / Continuous Properties Search for new features • « •Enable Informed Testing » etto install Add Continuous Update Site.. • « •Enable Informed Testing » 9 Les plus de Continuous testing (1) CONSEIL & INGENIERIE • PRIORISER et FILTRER les tests : Test Filtering and Prioritization -> possibilité de spécifier un ordre d’exécution Priorités • Most Recent Failures First 10 Filtres • Most Frequent Failures First • Omit Previous Successes • Quickest Test First • Most Recent Failures Deleted • Round Robin • Informed Filter(Ct Only) • Random • Default No Filter • No reordering Les plus de Continuous testing (2) CONSEIL & INGENIERIE • Notification d’erreurs et liste d’erreurs Error notification and Problems View -> mise en évidence les méthodes qui échouent lors des tests 11 Démonstration CONSEIL & INGENIERIE Un exemple simple : • Classe à tester : TopTen.java • Classe de test : TopTenTest.java Exemple en IG : • Classe à tester : MaFenetre.java • Classe test : MaFenetreTest.java 12 Différents outils de tests unitaires CONSEIL & INGENIERIE Pour les langages : 13 .NET NUnit C++ CppUnit / CUnit Delphi DUnit Conclusion : ce qu’il faut retenir CONSEIL & INGENIERIE L’intérêt d’utiliser des cas de tests : • non régression du code • rapidité • clarté • documentation efficace Options de Continuous testing : • automatiser • prioriser • filtrer • spécifier les erreurs 14