Principes et conseils : Test unitaire
Rubriques
Le test unitaire est implémenté sur les plus petits éléments testables (unités) du logiciel, et implique de tester la structure interne comme la logique et le flux des données, ainsi que le fonctionnement de l'unité et les comportements observables. La conception et l'implémentation de tests centrés sur la structure interne de l'unité reposent sur la connaissance de l'implémentation de l'unité (approche structurelle). La conception et l'implémentation des tests pour vérifier que les fonctions et les comportements observables de l'unité ne reposent pas sur une connaissance de l'implémentation et par conséquent est connue sous le nom d'approche fonctionnelle.
Les deux approches sont utilisées pour concevoir et implémenter les différents types de tests (voir Concepts : Type de tests) nécessaires
pour tester complètement et avec succès des unités.
Voir aussi Principes et conseils : Cas de test pour obtenir des informations supplémentaires sur la dérivation de cas de test pour un test unitaire.
Une approche de test structurel doit être suivie pour vérifier la structure interne d'une unité. Théoriquement, on doit tester chaque chemin possible d'un bout à l'autre du code, mais ce n'est possible que pour des unités très simples. Vous devez tester chaque chemin interdécisionnel (chemin DD) au moins une fois parce que vous exécutez alors toutes les instructions au moins une fois. Une décision est habituellement une instruction si, et un chemin DD est un chemin entre deux décisions.
Pour obtenir ce niveau de couverture de test, il est recommandé que vous choisissiez les données de test de façon à ce que chaque décision soit évaluée de toutes les manières possibles.
Utilisez des outils de couverture de code pour identifier le code non testé par votre test structurel. Le test de fiabilité doit être réalisé en même temps que votre test structurel.
Voir Principes et conseils : Cas de test pour obtenir des informations supplémentaires
La finalité d'un test fonctionnel est de vérifier la fonction spécifiée et le comportement observable de l'unité sans savoir comment l'unité implémente cette fonction et ce comportement. Les tests fonctionnels sont centrés et reposent sur les entrées et les produits de l'unité.
La dérivation de tests unitaires à partir de l'approche fonctionnelle utilise les arguments d'entrée et de sortie des opérations de l'unité, et/ou l'état de sortie pour l'évaluation.
Par exemple, l'opération peut inclure un algorithme (qui nécessite deux valeurs comme entrée et renvoie une troisième comme sortie), ou amorcer un changement dans l'état d'un composant ou d'un objet (par exemple l'ajout ou la suppression d'un enregistrement de base de données). L'un et l'autre doivent être testés entièrement. Pour tester une opération, vous devez dériver suffisamment de cas de test pour vérifier les éléments suivants :
- pour chaque valeur valide utilisée en entrée, une valeur appropriée a été renvoyée par l'opération
- pour chaque valeur non valide utilisée en entrée, seule une valeur appropriée a été renvoyée par l'opération
- pour chaque état d'entrée valide, un état de sortie approprié se produit
- pour chaque état d'entrée non valide, un état de sortie approprié se produit
Utilisez les outils de couverture de code pour identifier le code qui n'a pas été testé par votre test structurel. Le test de fiabilité doit être effectué en même temps que votre test fonctionnel.
Voir Principes et conseils : Cas de test pour obtenir des informations supplémentaires
|