introduction au test logiciel/version imprimable — wikilivres · pdf fileun livre de...

Click here to load reader

Post on 25-Dec-2018

213 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

Un livre de Wikilivres.

Une version jour et ditable de ce livre est disponible sur Wikilivres,une bibliothque de livres pdagogiques, l'URL :

http://fr.wikibooks.org/wiki/Introduction_au_test_logiciel

Vous avez la permission de copier, distribuer et/ou modifier ce documentselon les termes de la Licence de documentation libre GNU, version 1.2ou plus rcente publie par la Free Software Foundation ; sans sectionsinaltrables, sans texte de premire page de couverture et sans Texte dedernire page de couverture. Une copie de cette licence est inclue dans

l'annexe nomme Licence de documentation libre GNU .

IntroductionAvant d'entrer dans le vif du sujet, revenons la notion de qualit logicielle pour dtourer quels aspects decelle-ci nous allons traiter. Voyons ensuite les symptmes du dveloppeur qui ne teste pas ou teste mal.Enfin, nous expliquerons pourquoi ce livre devrait susciter l'intrt du lecteur concern.

La qualit logicielle ?

Une notion subjective

Selon les points de vue, la qualit logicielle n'a pas la mme dfinition.

Pour le dveloppeur, il s'agit d'abord de voir la qualit du code-source : celui-ci est-il modulaire,gnrique, comprhensible, document ?Pour le responsable du systme d'information un logiciel doit plutt tre facile administrer et ne pascorrompre la scurit globale du SI.L'utilisateur, lui, s'attend plutt ce qu'un logiciel remplisse d'abord son besoin sans tre trop coteux, entant si possible ergonomique voire esthtique.Pour le financier, il s'agit plutt de savoir si le logiciel se vend bien, s'il permet de faire du profit ou s'ilpermet d'amliorer la comptitivit d'une structure.

Autant de proccupations diffrentes pour un mme produit. Dans ce qui suit, nous allons plutt nous

Introduction au test logiciel/Version imprimable Wikilivres https://fr.wikibooks.org/w/index.php?title=Introduction_au_test_logici...

1 sur 40 14/07/2015 22:43

intresser la qualit du logiciel telle qu'elle est perue par le dveloppeur.

La ncessit d'assurer un suivi de la qualit logicielle

Pour vous convaincre de la ncessit d'intgrer dans toute dmarche de dveloppement (qu'elle se fasse dansle cadre d'une entreprise, d'un projet institutionnel, d'une ralisation bnvole en logiciel libre) une approcheraisonnable de la qualit logicielle, nous pourrions lister les plus fameuses dfaillances de l'histoire del'informatique et d'autres domaines de l'ingnierie.

Sans nous lancer dans le rcit exhaustif de ces grandes catastrophes techniques dont les plus fameuses ontcot des vies humaines tandis que d'autres ont gaspill des milliards de budget, citons tout de mmequelques cas o une dfaillance informatique s'est avre responsable au moins en partie d'unecatastrophe[1] :

la sonde Mariner 1 dont l'explosion a t dclench 294,5 secondes aprs son dcollage en raison d'unedfaillance des commandes de guidage ;le satellite Mars Climate Orbiter a rat sa mise en orbite autour de la plante Mars pour s'craser sur laplante rouge : certains paramtres avaient t calculs en units de mesure anglo-saxonnes et transmises l'quipe de navigation qui attendait ces donnes en units du systme mtrique. Cot total du projet : 327,6million de $ ;Therac-25 est une machine de radiothrapie qui cota la vie plusieurs patients ;Le projet Virtual Case File est un fiasco : le dveloppement, command par le FBI, fut entirementabandonn au bout de 5 ans et 100 millions de $ ;Le vol 501 de la fuse Ariane 5 : elle explosa lors de son premier vol, 40 secondes aprs son dcollage,emportant avec elle les 370 millions de dollars investis dans le projet et les satellites qu'elle devaittransporter.

Ces projets sont bien sr hors du commun et sont bien diffrents de ceux que chaque entreprise, ingnieur oudveloppeur rencontrera dans sa carrire. Souvent, le risque caus par une panne est plus limit. Toutefois,de nombreux projets ncessitent un haut niveau de suret de fonctionnement :

Contrle de centrale nuclaire,metteur de tlcommunication/tlvision (niveau d'mission des ondes),En gnral, tout logiciel qui peut contrler un quipement lectrique/lectronique utilisant une puissancelectrique potentiellement dangereuse,De faon gnrale, tous les logiciels contrlant des quipements impliquant des tres vivants (mdical,transport, ...).

Nanmoins, mme pour les projets ne requrant aucun niveau de scurit, la prsence de bogues provoquantla dfaillance d'un systme peut engendrer des cot imprvus voire mener l'chec d'un projet, ce qui estdplaisant pour tous les intervenants. En 2002, une tude commande par le National Institute of Standardsand Technology conclue que les bogues et les erreurs logiciels cotent chaque anne 59 billions de $ l'conomie amricaine soit 0,6 % du PIB.

Les mauvaises pratiques ou qui s'adresse ce livre ?

Si, lorsque que vous constatez l'apparition d'un bogue dans un programme que vous tes en train dedvelopper, vous adoptez le comportement suivant :

Placer des appels d'affichage[2] un peu partout.1. Lancer le programme pour valuer l'affichage produit en esprant trouver des informations permettantd'isoler la zone d'o le bogue provient.

2.

Introduction au test logiciel/Version imprimable Wikilivres https://fr.wikibooks.org/w/index.php?title=Introduction_au_test_logici...

2 sur 40 14/07/2015 22:43

Corriger le bogue en modifiant et relanant le programme autant de fois que ncessaire.3. Effacer tous les appels d'affichage qui polluent le code pour revenir un code propre.4. Recommencer chaque fois qu'un bogue apparat ou rapparat.5.

Cette dmarche, en plus d'tre coteuse en temps, est inefficace. Elle est difficile mettre en uvre dans unegrande base de code lorsqu'on ne sait pas d'o le bogue peut venir. De plus, tout ce travail est perdu tantdonn que si un bogue similaire rapparat, il faudra remettre les traces dans le code en esprant ne pas avoirdj oubli comment le bogue tait apparu, et comment il avait t corrig. Si c'est ainsi que vous procdez,ce livre est fait pour vous !

Si lorsque votre code atteint une complexit suffisamment grande, vous commencez craindre de faire desmodifications sur des portions de code que vous avez crite il y a longtemps parce que vous ne savez pas sivos modifications risquent de casser quelque-chose sans que vous vous en rendiez compte ; si vous en avezmarre de passer 20 % de votre temps dvelopper et 80 % de temps chasser les bogues ; si vous perdez del'argent parce que pour un produit donn, vous passez plus de temps corriger des bogues gratuitement lorsde la priode de garantie que de temps dvelopper le produit en tant pay, alors ce livre est pour vous.

Pour un dveloppeur, pratiquer des tests et vrifications permet de relire le code source, reprer les erreurs etapprendre les viter.

Pourquoi vrifier et tester ?

La vrification et les tests sont deux disciplines de la qualit logicielle. Ces techniques, si elles sont adopteset appliques rigoureusement et avec intelligence ds le dbut d'un projet peuvent amliorersignificativement la qualit logicielle.

L'adoption d'une pratique de test systmatique apportent de multiples avantages :

Un dveloppeur peut travailler plus sereinement. Si une modification introduit un bogue dans le code, ledveloppeur en sera tout de suite inform. Les erreurs sont corriges en amont : on vite ainsi lessurprises ;En vitant ainsi les surprises, on a une meilleure visibilit sur le temps consacrer pour le reste dudveloppement. Ainsi, le gestionnaire ne verra pas ses ressources rquisitionnes par la dcouverte, lelendemain de la mise en production, de nombreux bogues qui auraient pu tre corrigs plus tt.Le produit final est de meilleure qualit, cela est apprci par l'utilisateur final. On rduit ainsi le cot dela garantie.

Ce livre s'adresse donc aux dveloppeurs qui ignorent les aspects techniques d'une dmarche de test logicielintgre au processus de dveloppement. C'est une initiation ces pratiques qui est propose tout au long decet ouvrage.

Aprs la lecture de ce livre, vous serez en mesure :

de choisir, en fonction des technologies que vous utilisez, les outils qui vous permettront de tester et devrifier le code que vous crivez ;d'crire vos propres tests pour vrifier la qualit de votre code ;de concevoir vos applications de manire les rendre testables ;de vrifier la qualit de vos tests ;d'intgrer ces lments dans votre dmarche globale de dveloppement.

Remarquons que ces deux disciplines peuvent ne pas tre suffisantes et tre compltes par d'autressolutions adquates visant assurer la qualit logicielle. Remarquons enfin que si la qualit d'un logiciel ausens o nous la traitons ici peut jouer un rle, elle n'est en rien garante du succs commercial d'un projet.

Introduction au test logiciel/Version imprimable Wikilivres https://fr.wikibooks.org/w/index.php?title=Introduction_au_test_logici...

3 sur 40 14/07/2015 22:43

Quels sont les pr-requis ?

La lecture de ce livre ncessite d'avoir tout de mme une exprience mme courte du dveloppement enutilisant la programmation oriente objet. Il est bon d'avoir une exprience sur un projet suffisammentcomplexe pour avoir peru ce qui est voqu plus haut.

Rfrences

Les plus curieux d'entre vous pourront trouver d'autres cas dans l'article 20 famous softwaredisasters publi sur devtopics.com (http://www.devtopics.com/20-famous-software-disasters/) [archive] pour ce qui concerne l'informatique. Pour l'ingnierie en gnral, voir la catgoriecatgorie Engineering failures .

1.

System.out.println(), echo, printf etc.2.

Tests unitairesDans ce chapitre, nous allons voir ce qu'est un test unitaire . Il s'agit du test le plus couramment utilis etle plus important. Nous verrons comment crer des tests unitaires pour votre code et comment les utiliser.Nous verrons enfin les limit