MBT : Model Based Testing
Introduction
Historique
Depuis le début du développement industriel, l'homme a toujours tenté d'automatiser le plus de tâches possibles. Il a également appliqué ce principe au développement informatique, en cherchant à automatiser les phases de développement et les phases de tests logiciel.
Les tests logiciels permettent de vérifier le bon fonctionnement d'une application. A l'origine, ces tests étaient exécutés manuellement. Le début de l'automatisation des processus de conception logicielle coincide avec l'augmentation de la qualité demandée par les clients. Pour réaliser cela, les tests logiciels informatiques sont apparus. Il s'agit de codes informatiques testant un autre code. Il faut savoir que les tests représentent environ 50% du coût d'un projet, sachant qu'il y a donc un intérêt croissant pour les techniques de réduction des coûts, il ya donc un fort engoument pour automatiser les tâches. En effet, suivant des études récentes, l'exécution des tests manuels génère un coût linéaire; tandis que les tests automatiques sont plus coûteux au départ mais le coût de maintenance augmente très faiblement.
Les tests sont de plus en plus automatisés; qu'ils soient unitaires, c'est à dire qu'ils testent les fonctions d'un système; fonctionnels, qui testent des fonctionnalités d'un système; ou encore d'intégration, qui vont vérifier la fusion de différentes parties d'un logiciel. Les frameworks de tests utilisés aujourd'hui sont du type JUnit ou TestNG pour valider du Java, Quick Test Pro pour des interfaces graphiques, et bien d'autres encore (série des xUnit).
Une technique de développement appelée modélisation est apparue au début des années 70. Il s'agissait de représenter le système par un modèle. A partir de là, est apparu le MDE, Model Driven Engeneering au début des années 80. Le Model Driven Engeneering est une modélisation d'une application avec un haut niveau d'abstraction, qui est basé sur un paradigme de modélisation qui considère le MDE si le modèle a du sens d'un point de vue utilisateur et qu'il peut servir de base à l'implémentation du système.
Puis, le MDD, Model Driven Development, une extension du MDE, est apparue au début du 21ème siècle. Le MDD est une approche des logiciels de conception destinée au développement d'applications. En fait, MDD est une conception logiciel à partir de son modèle indépendamment de la plate-forme utilisée.
Et le MBT dans tout ça ? Il s'agit de la partie modélisation côté validation.
Depuis la diffusion massive des langages objets, plusieurs éditeurs ont tenté de modéliser les applications qu'ils allaient développer pour gagner du temps et par conséquent de l'argent. Dans la plupart des entreprises de développement logiciel, plusieurs équipes travaillent en collaboration, qu'elles soient orientées développement, intégration, architecte ou autre. Mais les équipes de validation et de développement travaillent sur les revues de spécification transmises par le client ou un service interne, généralement marketing. Les revues de spécification traduisent littéralement une architecture et des fonctionnalités qui seraient souhaitables dans l'application.
L'objectif des équipes de développement et de validation est de fournir une application la plus fiable possible.
Le Model Based Testing
Comme vu précédemment, le MDD permet de générer le squelette de l'architecture du logiciel, et le MBT permet de créer des tests pour vérifier le bon fonctionnement de celle-ci, c'est à dire des tests fonctionnels. La génération de tests est elle aussi indépendante de la plate-forme utilisée.
Le MBT est donc un model des fonctionnalités disponibles sur une application. Nous sommes alors passés d'un testeur qui effectue les tests un par un, à un testeur qui conçoit un modèle qui élabore les tests.
Pour définir le modèle de l'application, des logiciels existent. Ils génèrent les tests à partir du modèle, mais le nombre de tests créés est dépendant de plusieurs paramètres qui sont évoqués dans les pages suivantes.
On peut en déduire que le MBT, qui produit un squelette de tests, est une extension du MDE et du MDD qui conçoit une architecture logicielle.
Enfin, nous verrons que ce langage peut s'utiliser pour d'autres développements que le développement de pages web.