1. Le génie logiciel et le test. - Exercices corriges

Les répercutions de l'automatisation des tests dans le génie logiciel. ...
Introduction. PARTIE I : Présentation de la phase test au sein du génie logiciel. 1.

Part of the document

Les répercutions de l'automatisation des tests dans le génie logiciel. A2T2 : Automated Audio Test Tool Présenté par Matthieu Tardivel Directeurs de recherches :
Ecole : Nathalie Camus, Laurent Leger
Entreprise : Nisrine Fajaj
Une fausse erreur n'est pas forcément une vraie vérité.
Pierre Dac, Les pensées
Remerciements J'ai tiré une grande satisfaction de ce stage effectué au sein de
Genesys, ceci grâce à la qualité du travail qui m'a été proposé et aux
relations humaines constructives que j'ai pu établir.
Je souhaite remercier François Legros de m'avoir accueilli dans son
entreprise. Je tiens à remercier Nisrine Fajaj, ma responsable de stage,
qui m'a accompagnée tout au long de ce projet.
J'adresse un remerciement tout particulier à Julien Allègre pour
l'aide efficace qu'il m'a apportée. Enfin, mes remerciements s'adressent également à l'ensemble des
membres de mon service, particulièrement Fabienne Montgaillard, Nicolas
Quoyer, Benoît Matthys, Didier Cellier et Fabrice Richard pour leur soutien
et leur sympathie. Sommaire
Introduction 1 PARTIE I : Présentation de la phase test au sein du génie logiciel 8
1. Le génie logiciel et le test. 9
1.1 Rappel du cycle de développement 9
1.2 Le modèle en V 10
1.3 Le service de test au sein d'une entreprise 12
1.4 Les enjeux de la qualité logicielle 13
1.5 Les critères de qualité 16
1.6 L'externalisation (sous-traitance) 18
2. Les différentes formes de test 20
2.1 Les tests unitaires : 20
2.2 Les tests d'intégration : 20
2.3 Tests de validation 21
2.4 Test de régression 21
3. Les tests automatiques 22
3.1 Présentation 22
3.2 Le test et l'automatisation du test sont différents 22
4. Le service System Engineering and Testing (SET) de Genesys
Conferencing 25 PARTIE II : Le processus d'automatisation des tests 31
1. Le choix de l'automatisation 32
1.1 Définition des besoins 32
1.2 Evaluation des coûts et délais 33
2. La démarche de l'automatisation 34
2.1 Construction du test 35
2.2 L'automatisation du test 37
3. Les outils de test 41
4. Les développements spécifiques. 45
4.1 Les conditions du développement spécifique 45
4.2 L'évaluation du budget 46
4.3 Mise en place de l'architecture 47
4.4 Développement de l'applicatif 47
4.5 Cas Pratique : A2T2, ma réalisation au sein de Genesys 48 PARTIE III : Les répercutions de l'automatisation dans le génie logiciel.
64
1. Les métriques de l'automatisation 65
2. Les bénéfices de l'automatisation des tests 67
2.1 Le répercutions sur la qualité 67
2.2 Les répercutions économiques 68
2.3 Les répercutions sur les ressources humaines 69
3. Les problèmes courants liés à l'automatisation des tests 70
3.1 Les répercutions sur la qualité 70
3.2 Les conséquences économiques 71
4. L'avenir de l'automatisation dans le génie logiciel 72
4.1 Une communauté active 72
4.2 Les outils de mesure des performances applicatives 73
4.3 Les répercutions de l'automatisation à Genesys Conferencing 75
4.4 La régression : première motivation de l'automatisation 75 Conclusion 78 Bibliographie 82 Netographie 83 Table des figures 84 Glossaire 85 Annexes Error! Bookmark not defined.
1. Plan de test Access-Disconnection 88
2. Documentation de A2T2 91
3. Extrait des rapports XML et feuille de style XSL 95 Introduction
La réalisation de ce mémoire vient clore mon cursus de formation en
ingénierie informatique effectué à l'EPSI. Au cours de mes années d'études,
je me suis intéressé plus particulièrement au domaine du génie logiciel. Ce
dernier a beaucoup évolué tout au long de son existence et particulièrement
ces cinq dernières années. Mes recherches, qui sont rapportées dans ce
document, sont centrées sur une composante bien particulière du génie
logiciel à savoir le test. L'histoire contemporaine du génie logiciel
regorge d'exemples d'erreurs ayant entrainé des incidents majeurs et
parfois des catastrophes. Dans les années 60, la NASA avait fait les frais
d'une erreur survenue dans le programme de pilotage de la sonde Mariner. En
effet un point s'était glissé à la place d'une virgule dans le code du
programme et la sonde fut déroutée de sa trajectoire, puis perdue dans
l'espace avec les millions de dollars que l'on y avait investi. Plus
récemment, la fusée Ariane 5 avait explosée après quelques secondes de vol.
Il est apparu que cet incident avait pour origine une simple fonction de
conversion défectueuse dans le programme de navigation. Ces exemples ne
sont qu'une infime partie de l'énorme quantité de disfonctionnements issus
d'erreurs humaines.
L'informatique se positionne dans tous les domaines de nos jours,
aussi bien dans le quotidien de tout un chacun que dans des activités très
spécifiques. Ce qui sous-entend que les domaines les plus sensibles ont
recours aux systèmes informatiques. Or, tout système peut potentiellement
être défaillant, et plus le système est complexe plus le risque est grand.
On comprend aisément que lorsqu'il s'agit d'une application dédiée au
pilotage d'une centrale nucléaire ou à la navigation d'un avion, l'on
souhaite minimiser voir essayer de supprimer les défaillances techniques.
Pour ce faire, il est nécessaire d'adopter une démarche rigoureuse.
Les démarches relatives à la conception du Système d'Information (SI)
sont multiples. Cependant, elles disposent toutes de points communs,
notamment une chronologie découpée en phases. Parmi ces dernières on
retrouvera la phase d'analyse, de conception, de développement et enfin de
test. Pourquoi le test est-il une partie intégrante de ces démarches ?
Instinctivement, il paraît évident que lorsque l'on est consommateur final,
on ne souhaite pas être des testeurs du produit ou service que l'on a
acheté. Prenons l'exemple des attractions dans les parcs de loisirs, qui
sont généralement contrôlées par des applications logicielles. Qui
souhaiterait s'asseoir à bord de l'une d'elles sachant qu'on ne les a
jamais testées ? Cette question permet d'entrevoir un objectif de la phase
de test : la fiabilité. La fiabilité peut se définir par l'absence de défaillance. Pour qu'un
logiciel soit correct il ne doit pas être affecté pas des défauts (bugs).
Un défaut peut survenir lorsque le concepteur du système y introduit une
erreur involontaire. Comme dit le dicton « l'erreur est humaine », on
pourrait également ajouter à ce dernier que plus le système est complexe et
volumineux plus le risque d'erreur est grand. Réduire ces erreurs permet
d'obtenir un produit de qualité. Qu'est ce que la qualité ? La qualité peut se définir comme
« l'Aptitude d'un ensemble de caractéristiques intrinsèques à satisfaire
des exigences » (définition ISO 9000, 2000). En effet, la qualité dispose
d'une place centrale dans l'ensemble des dispositifs de conception des SI.
Elle permet d'assurer un niveau de sécurité minimal et un prix
correspondant à ce niveau. Ce qui ne veut pas forcement dire qu'un prix
élevé implique obligatoirement un produit de qualité, ni même qu'un produit
à faible coût n'est pas de qualité. Commercialement, la qualité est une
forme de garantie de la satisfaction des utilisateurs finaux. Ce qui nous
amène à la notion d'Assurance qualité, c'est à dire l'ensemble des
démarches permettant d'obtenir des produits et services de qualité. Il
apparaît à présent évident que les notions de qualité, fiabilité et de test
sont étroitement liées
Le test est omniprésent dans l'ensemble du processus informatique de
développement. Qu'est que le test ? C'est une activité du génie logiciel
ayant pour objectif de déceler pendant toute la durée de vie du système les
failles ou anomalies de celui-ci. En effet, le logiciel « zéro défaut »
n'existe pas. La présence de fautes logicielles systématiques, introduites
à la conception d'un dispositif programmé, doit être considérée avec
beaucoup d'attention, en particulier lorsque les conséquences de ces fautes
peuvent influer sur la sécurité d'un dispositif complexe. Le test est donc
l'activité fer de lance de la qualité, et les entreprises qui investissent
dans cette activité observent systématiquement des améliorations quant à la
qualité de leurs produits ou services informatiques. Le test a également
pour objectif de valider le passage en production d'un produit, ce qui
implique une responsabilité importante de l'équipe qui effectue cette
activité. Pour ne pas faillir à cette tâche, le test est devenu une
démarche rigoureuse s'accompagnant de procédés prédéfinis. Parmi ces
derniers on pourra relever l'élaboration d'un Plan de Test, ayant pour but
de valider une ou plusieurs fonctionnalités de l'application. Il va de soit
que plus un système est vaste plus il paraît difficile, voir impossible, de
tester de manière exhaustive l'ensemble des fonctionnalités. C'est
d'ailleurs toute la difficulté de l'activité du test au sein d'une
entreprise : déterminer le seuil de tolérance pour la validation
d'application.
Une enquête publiée fin septembre 2005 par une s