Model-based testing
# Model-based testing

Le model-based testing (MBT) est une activité qui permet de concevoir et de dériver (de manière automatique ou non) des cas de tests à partir d'un modèle abstrait et haut niveau du système sous test (SUT). Le modèle est dit abstrait car il offre bien souvent une vue partielle et discrète des comportements attendus d'un logiciel ou d'un système.

Sur la base de modèles abstraits, des cas de test peuvent être dérivées sous la forme de suites de tests. Ces suites de tests ne sont pas directement exécutables, car elles n'ont pas le même niveau d'abstraction que le code exécutable. Cela demande souvent une intervention manuelle de la part d'un ingénieur de test qui doit concevoir une couche d'adaptation permettant de passer d'une suite de tests abstraites en suite de tests exécutables. Cette étape est généralement appelée étape de concrétisation.

Une fois les cas de tests exécutés, une comparaison est possible entre le comportement réel du logiciel (le logiciel développé) et le comportement attendu (décrit dans le modèle). La comparaison entre ce qui est attendue et ce qui se passe réellement permet d'assigner un verdict de test. Un test est dit non-passant lorsque le comportement réel du logiciel, ou du système, diffère du comportement attendu.

## Avantages et inconvénients du Model Based Testing

L'intégration d'un processus de validation MBT prend du temps et demande des formations pour les ingénieurs afin d'acquérir de nouvelles compétences, surtout lorsqu'ils développent et testent encore « manuellement ». La mise en place d'un outil MBT demande un certain investissement de la part des entreprises, notamment pour celles qui n'utilisent pas encore la modélisation graphique (UML) pour leur développement (MBD) et/ou test (MBT) de logiciels. L'utilisation d'outils MBT entraîne une modification des pratiques déjà mises en place au sein de l'entreprise.

Par ailleurs, la modélisation graphique atteint rapidement ses limites en termes d'expressivité, et il n'est pas rare de devoir rajouter manuellement des annotations et/ou de s'aider d'une notation ou d'un langage (comme OCL, par exemple) pour rajouter de la sémantique au modèle. La dérive la plus fréquente est de non pas modéliser le SUT, mais de finir par modéliser les tests eux-mêmes.

Cependant, certains utilisateurs affirment que l'utilisation des MBT peut être un réel retour sur investissement avec un gain de productivité et une qualité augmentée.

En effet, l’automatisation des tests a des avantages directs pour les équipes responsables des tests :

* Si le modèle est bien fait, évite des cas de test mal conçus, défectueux ou manquants, du même coup, accroît la couverture de test
* Réduit les coûts pour les tests (tests de non régression)
* Améliore la qualité du processus de test
* Réduction des délais d’exécution des tests

et également des avantages indirects pour les utilisateurs du système d’information :

* Diminue les efforts de maintenance des jeux de tests
* Renforce la qualité de la documentation des exigences
* Crée une plateforme commune pour les designers et les testeurs

L’automatisation permet d’exécuter des tests à un coût marginal très faible, après un investissement initial significatif et en conception ou maintenance.

## Outils Model Based Testing

Les outils MBT sont des outils qui peuvent automatiser le design des tests fonctionnels (tests boîte noire). Des exemples de ces outils sont les logiciels MaTeLo, PragmaDev Studio ou Time Partition Testing .

