L’émergence des outils de tests basés sur les modèles dans les environnements agile

Le MBT, Model Based Testing, Tests basés sur les modèles est une avancée significative en terme d’industrialisation du processus de tests. Alors que son déploiement augmente progressivement, la question se pose de le mettre en œuvre dans les environnements agile.

N’y a-t-il pas contradiction entre industrialisation, synonyme parfois d’exhaustivité d’information, et agilité, pour certains souplesse et communication orale ?

État de l’art des tests et de  l’automatisation dans les environnements agile

Les cycles de développement itératifs et incrémentaux impliquent de réaliser régulièrement des tests de non régression. En effet, si à chaque livraison d’une itération, un logiciel à valeur ajoutée est livré, il est nécessaire de vérifier que les parties développées précédemment n’ont pas été malencontreusement modifiées. Pour cela, suivant les technologies, différents outils permettent de créer un référentiel de tests de non régression au niveau des tests unitaires, des tests d’intégration, des tests systèmes fonctionnels, reproduisant le comportement des utilisateurs.
Les tests sont basés sur les exigences

Quel que soit son type, la méthodologie mise en œuvre fait appel aux exigences pour définir l’objectif du test. 
Ainsi
  • l’Acceptance Test Driven Development (Développement piloté par les tests d’acceptation) se base sur les exigences métier. Elles peuvent être définies par des exemples d’utilisation du logiciel : « En tant que client, je veux voir l’état de tous mes comptes sur l’écran de façon à avoir une vision globale de mes avoirs ». Si prévus dans la définition « Done*», des tests sont attachés à chaque User Story de façon à les valider. Ils sont automatisés par les testeurs et rejouables si possible sur d’autres environnements que ceux de développement.
  • Les tests de Behavior Driven Developpement sont basés sur des exigences fonctionnelles qui sont programmées et testables par le développeur sur son environnement de développement.
  • Le Test Driven Development demande au développeur de créer les tests de ses classes d’objets avant le code, donc sur des exigences détaillées. 
Que ce soit TDD, BDD ou ATDD, la philosophie est de définir les exigences et les tests avant de coder. Le testeur développe jusqu’au moment où le test passe.
Les concepts agile demandent que les activités soient nécessaires et suffisantes. Cela s’applique également aux tests. La méthodologie du « test basé sur les risques » est mise en œuvre pour définir l’effort de tests.

Ce qu’est le MBT

1) En phase de conception, les tests basés sur les modèles permettent
  • de collecter les exigences,
  • de modéliser les exigences de comportement du logiciel sous la forme de diagrammes,
  • de définir les tests basés sur ces modèles.
2) En phase d’implémentation, de générer les librairies de tests automatisés.
3) En phase de maintenance du logiciel produit
  • de faire une analyse d’impacts à partir de la modification des modèles et de mettre à jour la traçabilité avec les exigences,
  • d’identifier et de faire modifier les tests concernés par les évolutions,
  • de lancer les tests et de détecter les régressions.

Les exigences : point d’entrée des modèles

Modéliser les exigences sous la forme de modèles permet de les éliciter. Dans le cadre d’un environnement agile Scrum*, partir d’une User Story basée sur l’exemple, simplifie l’étape d’élicitation des exigences. « En tant que client, je veux voir l’état de tous mes comptes de façon à avoir une vision globale de mes avoirs ».
La modélisation MBT concerne le comportement du logiciel et donc va modéliser la user story. Pour cela, les outils de MBT utilisent également un langage qui permet d’expliciter le comportement du modèle comme l’OCL*. Il est possible de ne modéliser que les comportements critiques de l’application.
Ces outils de MBT se rapprochent des outils d’ATDD utilisés dans les environnements agiles.

Il existe différents outils de MBT. Certains se servent de la modélisation de conception comme base de départ. Dès lors, ce type d’outil lance les méthodes des classes développées et se rapproche des outils de Behavior Driven Development.
Dans les environnements agile, l’outillage de test est un élément important pour effectuer les tests de non régression. En ATDD comme en Model Based Testing (MBT), les comportements essentiels de l’application seront modélisés. Le MBT peut être mis en œuvre en parallèle d’une équipe agile et intégré dans une PIC*, ou directement mis en œuvre par deux membres d’un groupe agile.
Cela permettra de faire converger développement en environnement agile et industrialisation.
 
------------------------------------
Done : Définition de l’état fini d’un développement.
Scrum : Méthode agile dédiée à la gestion de projets.
OCL : Object Constraint Language.
PIC : Plateforme d’intégration continue.