LES tests d'acceptation



Documents pareils
INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

INF2015 Développement de logiciels dans un environnement Agile Examen final hiver 2015

Agilitéet qualité logicielle: une mutation enmarche

Méthodologies SCRUM Présentation et mise en oeuvre

Modèle de changement d organisation. Leanpizza.net présente. Petit Guide Rapide du jeu de cartes Modèle de Changement d Organisation

Agile 360 Product Owner Scrum Master

Christophe Leroy Marc Lainez. L Agilité est-elle soluble dans la culture francophone?

Le Product Owner Clé de voute d un projet agile réussi

Testeur Agile Niveau Fondation Bertrand Cornanguer, Vice-chair Agile tester WG

Alignement avec les métiers par le test fonctionnel et d acceptation en projets agiles

Comment faire plus d'argent cet été!

Service de réplication des données HP pour la gamme de disques Continuous Access P9000 XP

GROUPE DE SPECIALISTES SUR UNE JUSTICE ADAPTEE AUX ENFANTS (CJ-S-CH) QUESTIONNAIRE POUR LES ENFANTS ET LES JEUNES SUR UNE JUSTICE ADAPTEE AUX ENFANTS

L'agilité appliquée à nous-mêmes. Philippe Krief, PhD Development Manager IBM France Lab

ISTQB Agile Tester en quelques mots ISTQB Marketing Working Group

Les mécanismes d'assurance et de contrôle de la qualité dans un

Développement itératif, évolutif et agile

Conduite de projets SI. Les méthodes «Agiles» N QUAL/1995/3660e ORESYS

Certification Scrum Master

Simulation EIS. Changement et Innovation. Les Défis du Management

Scrum et l'agilité des équipes de développement

Critères de choix pour la

Méthodes agiles. CONSEIL & DÉVELOPPEMENT DE SOLUTIONS E-BUSINESS. Jean-Louis Bénard jlb@businessinteractif.

Isabelle Nicolas

Scrum/XP adapté au BI/DW

Processus d Informatisation

Les méthodes Agiles Introduction. Intervenant : Tremeur Balbous tremeur@agilegardener.com 04/09/2008

CINEMATIQUE DE FICHIERS

backlog du produit Product Owner

GESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET

La solution IBM Rational pour une ALM Agile

Encourager les comportements éthiques en ligne

AdWords Guide de survie

Les Bonnes PRATIQUES DU TEST LOGICIEL

TÉMOIGNAGES de participantes et de participants dans des groupes d alphabétisation populaire

Méthodes Agiles et gestion de projets

Topologie du web - Valentin Bourgoin - Méthodes agiles & SCRUM

Le génie logiciel. maintenance de logiciels.

Développement d'un projet informatique

ITIL V2. La gestion des changements

25/12/2012

Chapitre 1 I:\ Soyez courageux!

FOIRE AUX QUESTIONS PAIEMENT PAR INTERNET. Nom de fichier : Monetico_Paiement_Foire_aux_Questions_v1.7 Numéro de version : 1.7 Date :

Gestion de la Relation Client (GRC)

Lorsqu une personne chère vit avec la SLA. Guide à l intention des enfants

2- Relation entre Writer et Calc dans le mailing

Fiche méthodologique Rédiger un cahier des charges

Editeurs de logiciels. Votre guide SMS

Chapitre 1 : Introduction aux bases de données

Églantine et les Ouinedoziens

Scrum. ... pour des projets informatiques agiles. Pascal Lando Certified Scrum product owner

Gestion de Projet Agile

Lisez ATTENTIVEMENT ce qui suit, votre avenir financier en dépend grandement...

Gestion de projet Agile. STS IRIS Module «Gérer et organiser un projet informatique»

Programmation Agile Mise en oeuvre via Scrum et l'extreme Programming (XP)

Scrum. Description. Traduit en langue française par Bruno Sbille et Fabrice Aimetti - Avril Trad FR v1.1

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

ManageEngine IT360 : Gestion de l'informatique de l'entreprise

Quelques éléments de compilation en C et makefiles

EXAMEN MODULE. «U4 Le client au cœur de la stratégie des entreprises» Jeudi 5 septembre h30 11h30. Durée 2 heures

ENVOYER une PIECE JOINTE

1 Actuate Corporation de données. + d analyses. + d utilisateurs.

Organisation de dispositifs pour tous les apprenants : la question de l'évaluation inclusive

Les méthodes Agiles. Introduc)on aux méthodes Agiles Exemple : Scrum

Scrum + Drupal = Julien Dubois

Comment Utiliser les Versions, les Modification, les Comparaisons, Dans les Documents

Acquia Digital Lifecycle Management

Rapport de certification

Plan d action SMB d une Approche Agile de la BITM Pour les PME

Jeux mathématiques en maternelle. Activités clés. Jeu des maisons et des jardins (Yvette Denny PEMF)

Le Processus RUP. H. Kadima. Tester. Analyst. Performance Engineer. Database Administrator. Release Engineer. Project Leader. Designer / Developer

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

SCRUM chez BWIN : implémentation d une méthode agile dans Focalpoint Spasija Taseva et Corinne Bacle

Accélérez la transition vers le cloud

webanalyste Boostez les performances de votre site Web grâce aux conseils du webanalyste

Stratégies favorisant ma réussite au cégep

Télécom Nancy Année

FAQ RENOUVELLEMENT QUESTIONS ESSENTIELLES AU RENOUVELLEMENT :

Les 10 pratiques pour adopter une démarche DevOps efficace

Développement guidé par les tests d acceptation (ATDD/BDD) au Ministère de la défense nationale

AVERTISSEMENT. Ce texte a été téléchargé depuis le site. Ce texte est protégé par les droits d auteur.

CONNAISSEZ-VOUS LES GISEMENTS INEXPLOITES DE VOTRE POTENTIEL?

Guide de l'utilisateur

Lire-Écrire un courriel / Pièces jointes

Méthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.

Les ordinateurs pour apprendre à lire et écrire à l âge adulte : L opinion de ceux qui apprennent à lire et écrire en Ontario

UML est-il soluble dans les méthodes agiles?

Créer et partager des fichiers

PREMIERE UTILISATION D IS-LOG

IBM Rational Application Developer pour WebSphere Software V8.5 accélère le développement d'applications de haute qualité.

SOCIAL CRM: DE LA PAROLE À L ACTION

MÉDECINE PSYCHANALYSE DROIT JURISPRUDENCE QUESTIONS À FRANÇOIS-RÉGIS DUPOND MUZART. première partie

Manuel v. 6sV Simplement surfer. Simplement cliquer. Simplement bloguer.

INTRODUCTION À LA GESTION DE PROJET AGILE (BACKLOG, TABLEAUX DE BORD, BURNDOWN, PLANIFICATION D ITERATIONS)

L enfant sensible. Un enfant trop sensible vit des sentiments d impuissance et. d échec. La pire attitude que son parent peut adopter avec lui est

Est-ce que les parents ont toujours raison? Épisode 49

Quels sont les espaces disponibles sur l ordinateur pour stocker ses documents et comment accéder facilement au dossier «My Documents»?

Méthodes de développement

Introduction Les architectes Les utilisateurs expérimentés Les créateurs de contenu Les chefs de projet Les documentalistes

Transcription:

dans la série : b.d. agile! Idée et dessins par Anis berejeb : www.berejeb.com LES tests d'acceptation reflexions, experimentations... réussites et échecs... apprentissage et amelioration. à Partager avec vos équipes sans problème si vous aimez! à jeter dans la corbeille sinon!

LES tests d'acceptation 1. la définition du done Si je peux donner un nom à l'année 2014 professionnellement parlant, c'est l'année des "Tests d'acceptation"! Au cours de cette année nous avons beaucoup de discussions, expérimentations, de réussites et d'échecs, et je pense que cela vaut la peine d'en partager quelques unes! Le terme "Tests d'acceptation" est un terme ambigu et souvent mal utilisé... Ce sont les tests que les utilisateurs exécuteraient avant d'accepter un release Ce sont tous les tests que j'exécute!... Ce sont tout simplement mes tests unitaires! Product Owner Analyste QA Développeur La définition à Laquelle j'aborde personnellement est plutôt celle qui dit que : LES TESTS D'acceptation définissent Quand est ce le requis est fait (DONE)! Ah la D.O.D! La Definition de done!... Heu.. quand un développeur dit que sa story est done, que veut-t-il dire au juste?... Des fois c'est Je suis prêt à déployer. D'autres fois je veux dire : Je suis prêt pour le QA.. et d'autres fois je veux plutôt dire : J'ai fini le développement, je commencer à écrire mes tests unitaires..

Combien de fois avez vous entendu l'expression : c'est pas encore "donedone"? Serieusement! :o) il y'avait la blague, mais derrière la blague il y'avait toujours une situation réelle. À mon avis, toute définition de done acceptable doit absolument contenir: Tout le code est écrit + Tous les tests passent + Le client (p.o.) a accepté la fonctionnalité = DONE. Fini. DONE. Mais comment faire pour arriver a avoir ce niveau tout en faisant du progrès de sprint en sprint? Vous automatisez des tests qui, quand ils passent, ils répondent a Tous les critères d'acceptation que vous aurez définis avec l'equipe Client. Quand les tests d'acceptation passent, c'est done! Ceci veut dire un truc : Vous considérez que ces tests sont les spécifications du requis Les développeurs professionnels partent de ces spécifications pour coder des tests d'acceptation automatisées. ils travaillent en collaboration avec les QA et le client pour s'assurer que les tests automatisées soient une spécification complète du Done.

Ce n'est pas plus de travail!... Ce qui implique un niveau de précision assez grand. On le sait pertinemment, nous programmeurs, que nous avons besoin de ce niveau de détails! La spécificication au niveau de precision que celui des tests est le seul moyen pour nous, les programmeurs, de savoir ce que voudrait dire le mot "Done". La specification jusqu'a ce niveau de precision est le seul moyen pour le client de savoir que le système qu'il vont payer pour fait ce qu'ils ont besoin. Specifier jusqu'a ce niveau de detail est le seul moyen pour écrire des tests automatisées avec succès. Au lieu de voir ces tests comme de l'extra travail, voyez les donc plutôt comme moyen pour sauver du temps et de l'argent. Ces tests vont vous protéger afin de ne pas écrire le mauvais système et vont vous permettre de savoir quand est ce que votre travail est fini.

LES tests d'acceptation 2. La Communication L'un des sujets les plus difficiles en termes de communication entre les développeurs et la business sont les requis. Généralement, Les gens d'affaire disent ce qu'ils ont besoin, et par la suite les développeurs codent ce qu'ils pensent que la business a décrit. La réalité est que la communication des requis est extrêmement difficile et que le processus est bordé d'erreurs. Alors voici ce que nous voulons avoir comme fonctionnalités : bla bla bla.. OK, je vais tout de suite commencer le développement! Es tu sur que tout est clair Oui oui, je comprends parfaitement ce que vous dites. pas la peine de perdre plus de temps Le rôle de développeur est aussi bien un rôle de communication qu'un rôle de développement. De la meme facon qu'il s'assure que son code est lisible et comprehensible par ses collègues développeurs, quand il construit le logiciel, il s'assure aussi de bien communiquer ce que fait ce dernier à la business et aux autres membres de l'équipe tel que les analystes d'affaires et les analystes QA. Alors voici ce que nous voulons avoir comme fonctionnalités : bla bla bla.. Ok, nous aurons besoin de spécifier ceci. Veux tu dire retourner aux longs documents d'analyses?! Non! je voulais plutôt dire que nous aurons besoin de plus de précision sur le comportement du système. nous allons utiliser les tests comme médium de comprennesion commune de ces comportements. L'objectif des tests d'acceptation est la communication, la clarté et la précision. En s'accordant la dessus, les developpeurs, le client et les testeurs comprennent tous le plan pour le comportement du systeme. Il est de la responsabilité de toutes les parties d'atteindre ce degré de clarté. Chaque developpeur doit considerer que ce c'est de sa responsabilité de travailler avec le client et les QA pour s'assurer que touts les parties sachent ce qui va etre developpé.

LES TESTS D'acceptation Nous permettent à nous les développeurs, avec les experts du domaine, de comprendre et s'entendre sur quoi nous allons bâtir par la suite. nous les utilisons aussi pour nous assurer que nous n'avons pas cassé d'autres fonctionnalités existantes en cours de développement.

LES tests d'acceptation 3. les tests d'acceptation et les tests unitaires Les auteurs de l'excellent livre "Growing Oriented Object Software Guided By Tests" (Une référence que tout développeur devrait lire, à mon avis) décrivent les tests d'acceptation comme des tests qui exercent le système de bout-en-bout sans appeler son code interne. Un test de bout-en-bout interagit avec le système uniquement de l'externe, via l'interface utilisateur, en lui envoyant des messages comme une tierce partie, en appelant un webservice, etc. Le comportement Global du système inclut son interaction avec l'environnement externe. Ceci est souvent l'aspect le plus risqué, le plus difficile, mais aussi le plus souvent ignoré. Les auteurs expliquent qu'il faut essayer d'éviter les tests d'acceptation qui exercent uniquement des objets internes du système. Au depart du projet J'ai juste a determiner quele classe est responsable de ce test. avec un ensemble de tests unitaires je vais arriver a une couverture complete anyways. Tout va bien durant le développement et les rapports de tests sont au vert mes tests sont rapides et automatisées, de plus mon système est très facile à changer. Ma stratégie marche. Juste avant la livraison, et après avoir "signé off" les fonctionnalités... on vient de se rendre compte que le point d'entree du système contient un commentaire : //todo: implement this?!!#! @#$!

Les niveaux de tests La question des niveaux de tests est un sujet en soi, et plusieurs auteurs ont plusieurs definitions. En voici une version que je trouve assez simple et claire : Tests d'acceptation : est ce que le système marche, dans sa totalité? TESTS d'integration : est ce que notre code marche avec un code que nous ne pouvons pas changer? tests unitaires : est ce que nos objets font la bonne affaire? est ce que c'est facile de travailler avec? Qualité externe et qualité interne Nous pouvons faire la distinction entre deux types de qualité dans un système La qualité externe : qui décrit comment le système répond au besoins des clients et utilisateurs. Il fonctionne, il est fiable, disponible etc. Le cas de la qualité externe est simple à comprendre, ca fait partie du contrat a livrer. La qualité interne : qui décrit comment le système répond aux besoin de ses développeurs et administrateurs. il est facile à comprendre, facile à changer etc. Le cas de la qualité interne est plus subtile, il a plutôt rapport avec l'anticipation du continuel changement. Maintenir la qualité interne nous permet de modifier le comportement du système en toute sécurité. De plus, elle nous permet une sorte de "prédictabilité" puisqu'elle minimise le risque qu'un changement nous oblige à retravailler une majeure partie du système

Le graphique ci-dessous expose l'apport de chaque niveau de tests sur deux axes : la quantité de feedback et l'évolutivité quantité de feedback Qualité externe Qualité interne niveau unitaire niveau integration niveau bout-en-bout évolutivité Les tests de bout-en-bout nous exposent la qualité externe du système. Les écrire nous permet de determiner a quel point nous, en tant qu'équipe, comprenons le domaine. D'autre part, les tests de bout-en-bout ne nous disent rien quand à la qualité de notre code. Ecrire des tests unitaires nous donne beaucoup de feedback sur la qualité du code, et les rouler nous permet de savoir si nous avons cassé des classes. Ceci ne nous donne pas une confidence complete que le système marche en totalité. Les tests unitaires se trouvent au milieu. Ne me comprenez pas mal, je ne veux pas diminuer l'apport des tests unitaires ici. Je veux toutefois porter le point que les tests d'acceptation sont généralement ceux qui nous informent plus sur la qualité externe du système.

C'est quoi Le point? Le point est que les tests d'acceptation ne sont pas des tests unitaires. Les tests unitaires sont écrits par les programmeurs pour les programmeurs. Ce sont des documents de design qui décrivent la structure de bas niveau du logiciel, et le comportement du code. Je répète, l'audience des tests unitaires sont le programmeurs et non la business. Les tests d'acceptation sont écrits par la business (ce qui pourrait vous inclure des fois, cher programmeur). Ce sont des documents formels de requis qui spécifient le comportement du système d'un point de vue business. L'audience de ces tests est la business et les programmeurs. C'est La même chose.. écrite deux fois Il est souvent temptant d'essayer d'éliminer l'extra-travail en assumant que ces deux types de tests sont redondants. Malgré que c'est vrai que les tests unitaires et les tests d'acceptation testent souvent les memes choses, ils ne sont toutefois pas redondants du tout! Donc non. Non. Ce n'est pas la même chose. Et ce n'est pas du travail en double. Pourquoi? 1. les chemins sont différents Premièrement, Malgré qu'ils testent souvent la meme chose, ils le font via des chemins et des mécanismes différents. Les tests unitaires s'enfoncent dans les entrailles du système en appelant des méthodes particulières de classes particulières. Les tests d'acceptation, d'autre part, invoquent le système de plus loin, au niveau de l'api ou encore au niveau du UI. Les chemins d'execution que ces tests prennent sont très différents.

2. La vraie raison Mais la vraie raison qu'ils ne sont pas redondants est que leur première fonction n'est pas de tester! Le fait que ce sont des tests est un incident. Les tests d'acceptation et les tests unitaires sont avant tout des documents, et deuxièmement des tests. Leur objectif principal est de documenter le design, la structure et le comportement du système. Le fait qu'ils vérifient automatiquement le design, le comportement et la structure est très utile, mais la Spécification est leur objectif premier! Vous aimez cette bande dessinée? Retrouvez en d'autres sur mon blogue : www.berejeb.com. L'agilité et le développement vous intéresse? Vous avez une question, une idée ou un projet, n'hésitez pas à me laisser un message sur anis.berejeb@gmail.com Telechargez gratuitement et partagez avec votre équipe la bande dessinée pas très drôle : Nous sommes des développeurs Professionnels!