Introduction au test logiciel/Tests unitaires

Un livre de Wikilivres.
Aller à : navigation, rechercher

Dans ce chapitre, nous allons voir ce qu'est un « test unitaire ». Il s'agit du test le plus couramment utilisé et le plus important. Nous verrons comment créer des tests unitaires pour votre code et comment les utiliser. Nous verrons enfin les limitations de ces tests.

Introduction aux tests unitaires[modifier | modifier le wikicode]

L'objectif d'un test unitaire est de permettre au développeur de s'assurer qu'une unité de code ne comporte pas d'erreur de programmation. C'est un test, donc les vérifications sont faites en exécutant une petite partie (une « unité ») de code. En programmation orientée objet, l'unité est la classe[1]. Un test est donc un programme qui exécute le code d'une classe pour s'assurer que celle-ci est correcte, c'est-à-dire que ses résultats correspondent à ce qui est attendu dans des assertions prédéfinies (ex : Addition(1,2) = 1 + 2 doit être vrai).

Concrètement, un test, c'est du code. À chaque classe d'une application, on associe une autre classe qui la teste.

Les frameworks de type xUnit[modifier | modifier le wikicode]

Pour écrire des tests unitaires, vous avez à votre disposition des frameworks qui vont vous faciliter l'écriture des tests. Vous n'aurez plus qu'à écrire les classes de tests et c'est le framework qui se chargera de les trouver, de les lancer et de vous donner les résultats ou les erreurs qui ont été détectées.

En Java 
JUnit est le framework de type xUnit le plus utilisé pour Java. Il est tellement utilisé qu'il est livré avec la plupart des IDE. C'est ce framework sur lequel nous allons nous appuyer pour l'exemple ci-après.
En C++ 
Cutter, Google propose Google C++ Testing Framework, la fameuse bibliothèque Boost comprend la Boost Test Library.
En Python 
la distribution de base de Python intègre unittest[2] mais il existe aussi PyUnit.
En PHP 
les développeurs PHP utilisent PHPUnit (ex : Zend Framework, Drupal V8[3]) ; SimpleTest (ex : Drupal V7[4]) qui possède une documentation en français ; Atoum.
En Ruby 
Ruby intègre Test::Unit.
En D 
le langage intègre nativement le mot-clé unittest.
En Groovy 
voir Unit Testing
En JavaScript 
le framework jQuery utilise qunit, Jarvis, jfUnit, google-js-test
Dans d'autres langages 
il existe des frameworks équivalents dans la plupart des langages : vous pouvez les découvrir dans l'article « List of unit testing frameworks » sur Wikipedia anglophone.

Références[modifier | modifier le wikicode]

  1. Dans d'autres paradigmes, c'est plutôt la fonction ou la procédure qui peuvent être considérés comme l'unité testée
  2. http://docs.python.org/library/unittest.html
  3. https://www.drupal.org/project/testing
  4. http://drupal.org/simpletest


Voir aussi[modifier | modifier le wikicode]