Je vais essayer dans cet article de vous donner un aperçu des tests logiciels le plus succintement possible. Je pense que certaines hiérarchies hésitent de le mettre en place soit parce que cela demande beaucoup de ressources ou alors minimisent son importance.
Mais une fois le « process » mis en place et « rodé », c’est que du bonheur et de l’efficacité.
Quelques évènements:
Entre 1985 et 1987, plusieurs patients sont décédés ou ont été gravement atteints dans leur santé suite à un bug de dosage d’un appareil médical de radiothérapie. L’appareil, le Therac-25, permet d’envoyer des faisceaux d’électrons, de rayons X ou de lumière (pour éclairer le patient). La puissance d’émission du faisceau d’électrons est 100 fois plus élevée que celle des rayons X.
Le bug de l’an 2000, aussi appelé bug du millénaire : un ou plusieurs bugs dans un logiciel qui manipule des dates provoquent des dysfonctionnements lorsque les dates sont postérieures au 31 décembre 1999. Une des causes est que les calculs sur les dates se font avec uniquement sur les deux derniers chiffres de l’année.
Le test logiciel:
Je tiens à dire qu’il n’existe pas de logiciel « zéro-faute » même si la question fait l’objet de plusieurs recherches de nos jours.
Le but principal étant de minimiser les risques liés au bugs – ha ce mot bug qui a fait trembler le monde entier en 2000 - car certaines « fautes » peuvent faire perdre beaucoup d’argent ou faire une vie.
La construction d’un test logiciel respecte souvent le cycle en V(vé) comme ci-dessous:
Les types de tests:
- Tests unitaires
Ils consistent à tester un module indépendamment du reste du système pour s’assurer de son bon fonctionnement. Souvent couplés avec des outils de couverture de code afin de vérifier que le test prend en compte tous les cas possibles.
On distingue dans les tests unitaires:
- Les tests logiques: recherche d’erreurs, vérification de l’enchaînement correct des branches parcourues);
- Les tests de cacul: vérification des résultats des calculs, des performances, de l’exactitude des algorithmes.
- Les tests de comportements anormaux ou encore tests de robustesse
- Les tests de données se situant dans les limites de spécifications
- Tests d’intégration
Ce test s’exécute après les tests unitaires. Il permet de tester l’ensemble des différents modules du logiciel afin de s’assurer de son bon fonctionnement. Ils portent principalement sur la vérification des enchaînements entre modules, la circulation des données, les aspects dynamiques, les séquences d’événements prévus et les reprises en cas d’interruption.
- Tests de non régression
Ils permettent de s’assurer que les dernières modifications n’ont pas apportées de nouveaux bug.
- Tests de validation
Ces tests permettent de vérifier que le programme est conforme aux spécifications, ils testent le comportement du logiciel du point de vue externe.
Quelques outils de tests:
- Subversion: Gestion des codes sources
- JUnit /DbUnit: pour les tests unitaires en Java
- Cobertura : Outils de couverture de test, permettant de s’assurer qu’un test couvrent toute les lignes de code (java).
- Clover: Un autre outils java de couverture de test.
- Selenium: Tests fonctionnels
- Checkstyle : Contrôle de la qualité du code source java
- Ant : Automatisation des tache répétitive comme la compilation des sources en java.
- Testlink : Outils de suivi et de gestion des tests
- Hudson : Outils d’intégration continue
- Redmine : Gestion de projet
Certains outils cités ci-dessus peuvent être intégrés dans hudson de manière à exécuter les tests automatiquement et régulièrement.
Pour allez plus loin dans le contrôle de qualité de vos codes sources, il y a également un outils interessant que vous pouvez tester: code collaborator
Notez qu’il est possible d’intégrer tous ces outils dans Hudson pour une intégration continue.
Il serait ainsi possible d’exécuter automatiquement et à intervalles réguliers tous les tests unitaires, de couverture et qualité de code puis générer des graphiques et rapports d’erreurs.
Voilà !!! prenez donc votre courage et essayez de convaincre votre hiérarchie des bienfaits des tests.
Pour plus d’informations :
N’hésitez donc pas à poster vos commentaires!
Pour plus d’informations:
AndroMDA: gestion de modèles, vous trouverez un bon tutoriel ici
Maven: construction de projets
Jira: Bug tracking
MbUnit: test unitaire
Eclipse: environnement de développement

