Introduction au test logiciel/Tests unitaires
Dans ce chapitre, nous allons voir ce qu'est un "test unitaire" (ou "TU"). 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
modifierL'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 différences entre un test unitaire et un test fonctionnel sont que le TU[2] :
- Ne communique pas avec une base de données ou par le réseau.
- Ne génère ni ne modifie de fichiers (mais il peut en lire).
- Peut-être lancé en même temps que d'autres TU.
- Ne nécessite pas d'éditer une configuration à chaque lancement.
Les frameworks de type xUnit
modifierPour é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[3] mais il existe aussi PyUnit.
- En PHP
- les développeurs PHP utilisent PHPUnit (ex : Zend Framework, Drupal V8[4]) ; SimpleTest (ex : Drupal V7[5]) 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- ↑ 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
- ↑ https://matthiasnoback.nl/2020/05/ddd-and-your-database/
- ↑ http://docs.python.org/library/unittest.html
- ↑ https://www.drupal.org/project/testing
- ↑ http://drupal.org/simpletest
Voir aussi
modifier- SPARQL_Protocol_and_RDF_Query_Language/Travail_pratique/Initiation_à_PHPUnit sur Wikiversité
- https://github.com/derptest/phpmachinist pour tester les bases de données