bloc3:testsunitaires
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| bloc3:testsunitaires [2023/03/29 15:03] – créée admin | bloc3:testsunitaires [2023/04/04 11:40] (Version actuelle) – [Exemples d’environnements de tests unitaires] admin | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Tests unitaires ====== | ====== Tests unitaires ====== | ||
| + | ===== Principes ===== | ||
| + | Le concept de tests n'est pas une nouveauté. Depuis toujours, tester le code fait partie intégrante de l' | ||
| + | |||
| + | Dans un certain nombre de contextes de développement aujourd’hui, | ||
| + | * Concevoir le test d'un service, avant même d' | ||
| + | * Plus un bogue est détecté tôt, plus facile sera sa correction et moins il coûtera ; | ||
| + | * Disponibilité d' | ||
| + | * Bonne intégration de ces outils dans les ateliers de génie logiciel (ex. Win’Design) ; | ||
| + | * Qualité générale du code développé. Facile à maintenir et à tester ; | ||
| + | * Possibilité de concevoir des batteries de tests que l’on peut rejouer à la demande ou automatiquement (intégration continue), ce qui participe d’une démarche « industrielle ». | ||
| + | ===== Typologie des tests ===== | ||
| + | **Tests unitaires** : destinés à vérifier la conformité des unités élémentaires de programme (procédures, | ||
| + | |||
| + | **Tests de non-régression** : lorsqu’on intervient sur un code qui passait positivement une batterie de tests auparavant, il faut nécessairement s’assurer que cette même batterie de tests continue de produire un résultat positif après intervention. C’est ce qu’on appelle des tests de non-régression car, en effet, parfois on pourrait corriger une anomalie ou améliorer une fonctionnalité avec succès mais au prix d’un changement notable dans le comportement de détail. Ce qui ne serait pas tolérable. | ||
| + | |||
| + | **Tests d’intégration** : destinés à vérifier la conformité de composants distincts que l’on vient d’assembler entre eux. Au préalable, ces composants auront été testés séparément via des tests unitaires. Ici, c’est la bonne communication ou coopération entre ces composants qui est visée, essentiellement. | ||
| + | |||
| + | **Tests fonctionnels** : destinés à vérifier la conformité d’un ensemble de composants en référence à un ou plusieurs cas d’utilisation. Ici, on ne soucie pas de l’implémentation technique sous-jacente, | ||
| + | |||
| + | **Tests de charge** : destinés à vérifier la capacité d’une application à supporter une charge supplémentaire. Il pourra s’agir d’une charge d’utilisateurs ou de données qui auront un impact sur les performances et la volumétrie du stockage. | ||
| + | |||
| + | **Tests de vulnérabilité** : tests destinés à vérifier le niveau de sécurité d’un composant ou d’une application. | ||
| + | |||
| + | ===== Tests unitaires ===== | ||
| + | Un test unitaire est un programme qui vérifie le bon fonctionnement d’une unité fonctionnelle élémentaire (une procédure, une fonction ou une méthode) au travers de situations déduites des spécifications de l’unité testée : à partir de données particulières en entrée, le test sollicite l’unité et confronte les données réellement obtenues avec celles théoriquement attendues. Il en déduit alors un état de succès ou d' | ||
| + | |||
| + | La **couverture des tests** désigne le rapport entre le nombre de situations testées et le nombre de situations possibles. Par principe, la couverture des tests n'est jamais complète car il n’est pas raisonnable, | ||
| + | |||
| + | ===== Prudence ===== | ||
| + | **<color blue> | ||
| + | |||
| + | On essaye cependant, avec rigueur mais assez empiriquement, | ||
| + | * Couverture en __points de programme__ : chaque point de programme doit avoir été testé au moins une fois ; | ||
| + | * Couverture en __chemins de programme__ : chaque séquence de points de programme possible dans une exécution doit avoir été testée au moins une fois (impossible en général) ; | ||
| + | * Couverture __fonctionnelle__ : chaque fonctionnalité doit être vérifiée par au moins un cas de test. | ||
| + | |||
| + | Selon la complexité du logiciel, des séquences de vérification globale peuvent s' | ||
| + | ===== Exemples d’environnements de tests unitaires ===== | ||
| + | * PHP : PHPUnit, Atoum, SimpleTest | ||
| + | * JAVA : [[bloc3: | ||
| + | * .NET : NUnit | ||
bloc3/testsunitaires.1680094983.txt.gz · Dernière modification : 2023/03/29 15:03 de admin
