Qu’est-ce que le test unitaire ?

Vos besoins_TU
Le test unitaire est un processus de vérification d’une unique unité de logiciel, elle-même définie comme étant la plus petite partie non divisible d’un code source. Par exemple, dans le cadre d’un développement en langage C, il est communément admis que l’unité de logiciel est une fonction de code. Ainsi, le test unitaire revient à tester une seule et unique fonction de code source à la fois, isolément des autres fonctions du projet.
Le but du test unitaire est de confronter une fonction de code aux exigences de conception correspondantes, et donc de s’assurer qu’elle fonctionne correctement en toutes circonstances. Les tests unitaires jouent un rôle clé dans l’amélioration de la qualité des logiciels, en permettant de détecter les erreurs rapidement (particulièrement lorsqu’ils sont effectués durant le développement), notamment dans le cadre de la méthode Test Driven Development), de diminuer les erreurs en phase de maintenance (les tests unitaires faisant par la suite office de tests de non-régression), d’améliorer la documentation du code source (la lecture de tests unitaires étant souvent très instructive pour comprendre le fonctionnement d’une fonction de code). Enfin, les tests unitaires, bonne pratique d’Assurance Qualité Logiciel, sont exigés dans de nombreuses normes de Sureté de Fonctionnement Logiciel comme la DO-178, l’IEC 61508, l’IEC 62304, l’ISO 26262, l’EN 50128, …

Cependant, la réalisation d’un test unitaire sans outil, ou au travers d’un environnement gratuit type xUnit, implique de développer le harnais de test, c’est-à-dire du code d’encapsulation de la fonction testée (déclaration et instanciation des variables, …), ainsi que de remplacer les éventuelles fonctions appelées par la fonction testée par des bouchons (« stub » en anglais). Ainsi, il est nécessaire de maintenir à jour un code de taille non négligeable uniquement dans un but de test, ce qui est rarement effectué en pratique…


Vos besoins_TU2
Générer un harnais de test à la main peut nécessiter un code source plus important que la fonction à tester…