Dans le cadre d’un développement logiciel, la phase de test est une phase cruciale qui mobilise énormément de ressources. Si les outils permettant d’automatiser l’exécution des tests sont généralement bien maîtrisés dans les entreprises, la réutilisation des tests d’un projet à un autre est souvent très peu systématisée. Au départ d’un besoin industriel de STMicroelectronics Belgique relativement aux tests sur cartes à puces, le CETIC a développé et validé une méthodologie outillée permettant de capturer les pratiques de test et de les réutiliser de manière effective.
Date: 2 novembre 2011
Expertises:
Ingénierie des systèmes IT complexes ⊕
Pour une entreprise de développement logiciel, les projets successifs sont à la fois semblables et différents. Différents parce que les fonctionnalités demandées changent à chaque projet, rendant difficile la réutilisation au niveau des tests. Semblables parce que ces projets restent généralement ancrés dans un même domaine métier, c’est-à-dire ancré sur des mêmes concepts. Tant au niveau d’exigences fonctionnelles telles que les protocoles de communications ou non-fonctionnelles en matière de performance, d’utilisabilité ou de sécurité. En fin de compte, la réutilisation concerne donc plus le know-how associé aux processus que les artefacts de tests eux-mêmes.
Ce constat s’applique par exemple dans le domaine des cartes à puces où les projets consistent à développer différentes applications d’identification ou de paiement. Ces applications ont beaucoup de similarités car elles utilisent tout un ensemble de commandes envoyées via un protocole spécifique (APDU) entre la carte et le lecteur. Les contraintes dans ce domaine sont très fortes en matière de fiabilité et de sécurité. En effet, une erreur non détectée peut avoir de graves conséquences pour le client. Cela peut entrainer des coûts énormes de correction voire de rappel des cartes avec une atteinte conséquente à la réputation de l’émetteur de la carte. Dans ce domaine, le processus de test est donc particulièrement poussé et couteux et le besoin en matière de réutilisation d’autant plus grand.
Sur base d’une analyse des pratiques actuelles, il est vite apparu que la réutilisation stricte de scripts de test était illusoire. Outre les différences de spécifications entre projets, les testeurs disposent de certaines libertés dans la manière de développer leurs tests. Il est cependant apparu que les testeurs présentaient de larges similarités qui gagnaient à être mises en commun. Les connaissances et l’expérience peuvent être partagées entre projets et entre testeurs. La forme pratique utilisée pour capturer et structurer la connaissance s’appuie sur la notion de pattern. Les patterns ont souvent été mis en œuvre avec succès en matière de réutilisation en développement logiciel, notamment pour la programmation orientée-objet (design patterns). En matière de tests, une forme spécifique de patterns a été utilisée : les Questioning Patterns ou QPattern. Les principaux éléments définissant un QPattern sont : l’identifiant, le nom, l’intention (décrivant l’aspect à tester), les questions (permettant de capturer l’information sur l’aspect), les règles (permettant d’identifier des patterns plus fins à invoquer), des tests associés (répartis en plusieurs catégories : nominaux, d’exceptions, …).
Leur mise en œuvre permet d’aboutir à une bibliothèque structurée et outillée des pratiques de tests répondant aux besoins industriels suivants exprimés par STMicroelectronics Belgique.
Le processus de développement de la bibliothèque est illustré à la figure suivante. Nous le détaillons sur le cas concret du domaine des cartes à puces.
La méthodologie développée est largement réutilisable dans d’autres domaines, même moins critiques et structurés.
Outre la meilleure efficacité et l’homogénéité des pratiques, la base de connaissance constituée permet d’accélérer la phase d’apprentissage des nouveaux testeurs et de réduire les risques de pertes de savoir lors du turn-over.
L’outillage développé possède une base générique qui peut évoluer vers du support plus spécifique permettant notamment d’envisager des générateurs spécifiques au domaine pour des classes de tests ayant un caractère systématique et volumineux où la machine est plus efficace que l’humain. Ceci permet à l’intelligence du testeur de se concentrer sur des aspects critiques plus spécifiques de l’application.
N’hésitez pas à nous contacter si vous désirez en savoir plus en la matière.
Pour en savoir plus sur les pratiques de réutilisation dans le contexte plus large du développement, consultez également le projet NAPLES