Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Les 22 & 23 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !

Quelques rappels

Introduction

Ce chapitre propose quelques rappels approfondis sur :

  • l’agilité ;

  • les principes et les différentes organisations agiles ;

  • les principes et techniques du test selon l’ISTQB.

Ainsi, si vous êtes déjà familier avec ces points, n’hésitez pas à passer cette partie du livre ; cependant, si vous passez un peu de temps à revoir ces « basiques », vous pourrez peut-être redécouvrir certains points qui approfondiront votre vision de l’agilité et du test...

Les quatre valeurs de l’agile - Rappel du manifeste agile

Le manifeste agile propose les valeurs suivantes [Beck 2001] :

images/IMG-CH1-02.png

Figure I-1 : Les quatre valeurs de l’agile

Ces éléments sont des préférences guidées par la notion de valeur ajoutée et les exemples suivants illustrent ce qu’il faut comprendre :

  • De façon générale, l’équipe privilégie toujours une bonne interaction entre ses membres plutôt que la formalisation d’un processus qui viendrait gérer une activité ; en revanche, il peut être vital pour l’organisation de capitaliser les informations produites aux différentes étapes d’un processus complexe : la valeur ajoutée des documents vient justifier leur présence.

  • Intrinsèquement, une belle documentation qui accompagne un logiciel qui ne fonctionne pas n’a jamais satisfait un client ; cependant, les personnes chargées de répondre à la hotline doivent disposer d’un minimum de documentation partagée avec les utilisateurs.

  • Le terme « contrat » peut être perçu comme un document légal ou une spécification « digne de ce nom », voire une US. Cependant, l’usage est souvent légèrement différent, car il est toujours plus simple d’adapter...

Les sept principes du test - Rappel ISTQB

L’ISTQB (International Software Testing Qualifications Board - Comité international de qualification du test logiciel) fournit les sept principes du test :

images/IMG-CH1-01.png

Figure I-2 : Les sept principes du test selon l’ISTQB

1. Principe du test #1 - Les tests montrent la présence de défauts, et non l’absence de défauts

Ce principe vient d’une citation d’Edsger Dijkstra lors d’une conférence faite à Rome en octobre 1969 au Comité des Sciences de l’OTAN [Meerts 2012] :

« Les tests montrent la présence de défauts, pas leur absence » - [Dijkstra 1969]

L’activité de test montre seulement la présence de défauts, ce qui veut dire qu’elle n’en démontre pas l’absence, mais son déroulement permet de réduire la probabilité de leur présence.

Bien qu’un proverbe danois dit que « tant qu’on ne sait pas que son lit est dur, on dort bien », appliquer la politique de l’autruche en ignorant les problèmes qui pourraient survenir aboutira tôt ou tard à une plainte d’un client. Pour éviter que cette situation ne se produise, ce principe est une invitation à chercher, car tester est le seul moyen qui pourrait montrer l’anomalie.

Dans certains cas comme la Méthode B (voir chapitre Versant technique du test), le code est démontré, ce qui est bien plus fort que toute une batterie de tests en boîte blanche. Cependant, la preuve n’est pas pour autant exempte d’erreurs. Ainsi, trouver des situations qui viennent alors démontrer que la preuve est fausse ou refaire la démonstration est une démarche indispensable au test.

2. Principe du test #2 - Le test exhaustif est impossible

De nos jours, les systèmes conçus sont d’une complexité telle qu’il est impossible de vérifier toutes les combinaisons qui permettraient de contôler une éventuelle absence de défaut.

images/I-icone.png

Les limites de notre imagination

La formulation péremptoire de cette impossibilité est à porter au regard du contexte : sur une situation simple, il sera évidemment facile de tout tester, mais cette apparence cache potentiellement des axes de qualité...

Techniques de base du test

1. Partitionnement de classes d’équivalences et valeurs limites

Lorsqu’une variable influence le comportement de l’application par palier, cette technique peut être utilisée pour identifier tous les tests qui seraient à réaliser.

images/I-icone.png

Définition d’une Partition en mathématiques

Pour comprendre cette notion au nom à rallonge, il suffit de se rappeler ce qu’est une partition au sens mathématique du terme (https://tinyurl.com/partition-maths) : c’est un découpage d’un ensemble (E) en parties (P d’indice i) toutes disjointes deux à deux :

images/01DP04aN.PNG

et l’union de toutes les parties est égale à l’ensemble total :

images/01DP04N.png

Quant au terme « classe d’équivalence », il vient simplement du fait que, quelle que soit la valeur située sur un intervalle, le comportement restera le même.

images/01DP06.png

Figure I-7 : Exemple de partitionnement d’une variable

Le partitionnement de la variable x choisie pour exemple en figure I-7 donne les classes suivantes :

  • classe 1 : x < A1 (classe invalide : les valeurs donnent une erreur qui doit être prévue par le code) ;

  • classe 2 : A1 ≤ x ≤ A2 ;

  • classe 3 : A2 < x < A3 ;

  • classe 4 : A3 ≤ x < A4 (classe invalide) ;

  • classe 5 : A4 ≤ x < A5 ;

  • classe 6 : A5 ≥ x.

Chaque classe sera ainsi vérifiée par un test (ce sont les flèches du dessous sur la figure I-8).

En complément à ces vérifications, il faudra ajouter les tests de chaque valeur pivot (Ai). Pour assurer cette partie, vous disposez de deux tactiques en fonction de la criticité du test :

  • l’approche « 2 valeurs » avec un test juste avant le pivot (ou juste après) et un autre sur le pivot ;

  • l’approche « 3 valeurs » avec un test juste avant, un test juste après, et un autre test sur le pivot.

Le choix du nombre de tests autour des valeurs pivots dépendra de la criticité ou du niveau de confiance.

La figure I-8 montre les tests de valeurs pivots, les flèches du dessus. Sur notre exemple, il faudra 6 tests pour les différentes classes d’équivalences et 3*5 tests pour les 5 valeurs pivots, ce qui nous fait...

Le cycle de vie logiciel

1. Projet à l’échelle d’une seule équipe Scrum

images/I-icone.png

Pourquoi Scrum ?

Depuis plusieurs années, Scrum domine le marché de l’agilité au niveau de l’équipe [VersionOne 2016]. Naturellement, Scrum n’est pas l’agilité, mais en raison de sa représentativité, ce sera peu ou prou votre contexte. En revanche, parce qu’il n’y a pas deux équipes identiques, vous ne trouverez pas parfaitement la même mise en pratique de Scrum partout ; bien entendu, celles qui seront présentées ici tenteront de donner un éclairage qui reviendra régulièrement sur les fondamentaux de l’agilité afin de vous permettre de recentrer la pratique pour l’appliquer à votre propre contexte plutôt qu’être assujetti à l’effet « Cargo Cult » vu dans l’avant-propos.

Pour Scrum, il n’y a pas d’équipe dans l’équipe. Scrum ne reconnaît donc pas la présence d’une équipe de test dans l’équipe de réalisation ; en d’autres termes, le test est idéalement confié à tous, chacun à son niveau de compétence, au même titre que d’autres activités telles que l’architecture.

images/I-icone.png

Les origines de Scrum et organisations de type A, B et C

Jeff Sutherland, le co-fondateur de Scrum a partagé sa vision en 2011 sur le futur de Scrum [Sutherland 2011]. Ce papier reprend les trois types d’organisations identifiées par Takeuchi et Nonaka qui fut en grande partie à l’origine de Scrum  [Takeuchi 1986] :

  • type A : une étape après l’autre -> chaque étape est duement validée en créant des « silos » organisationnels ;

  • type B : les étapes se chevauchent légèrement -> similaire au principe du développement « sashimi » - voir figure I-18 ;

  • type C : toutes les étapes se chevauchent comme dans une mêlée au rugby (en anglais : « Scrum »).

 

images/01DP37.png

Figure I-17 : Séquentialité vs recouvrement des activités de développement

Pour Sutherland, cet enchevêtrement...