MBT : Model Based Testing

Présentation

Définition

Le Model Based Testing consiste en la génération de tests depuis un modèle représentant l'application à tester. Plusieurs questions se posent quant à l'utilisation du Model Based Testing. En effet, les tests générés sont fonctionnels. Dans une logique proche du MDD, il est recommandé de définir le modèle avant les phases de conception. Ainsi, l'étude au préalable devient d'une importance primordiale car il est nécessaire de définir les fonctionnalités du système avant son développement, sans quoi le modèle sera remis en question régulièrement et son coût croîtra avec un facteur 2 minimum (en cas d'imbrication de fonctionnalités du système sous test, il est possible d'avoir une augmentation exponentielle du coût d'élaboration du modèle).

Le modèle, représentation abstraite du logiciel, est considéré comme une boîte noire. Une boîte noire est un système que l'on désire tester mais dont on ne connait pas l'implémentation.

Architecture

Après une définition du Model Based Testing, voyons l'architecture de cette validation orientée modèle. Ci-dessous, une représentation de l'environnement MBT et la place du système sous test.

Le modèle décrit la totalité ou une partie du système. A partir du modèle sont dérivés les tests abstraits qui sont la base des tests exécutables qui vont tester la boîte noire, nommée système. Les tests abstraits sont comme le modèle, indépendants de la plate-forme utilisée. Ils sont une interface commune aux tests exécutables qui seront générés; ils représentent un cheminement dans l'utilisation du système.

Intégration du modèle

Le modèle doit être pensé pour correspondre au mieux au système sous test. Il doit s'intégrer au système réel de la même manière que le système sous test.

Le schéma ci-dessous.

Ce modèle va se substituer à la boîte noire et prendre la place du composant lors de la génération des tests. Les caractéristiques de modèle doivent être semblables au système avec un point en plus : un comportement parfait. En effet, le modèle doit renvoyer les informations demandées tel que le système réel devra pouvoir le faire lorsqu'il sera développé. Mais aussi accepter des modifications qu'un utilisateur est susceptible d'effectuer sur le système.

Voyons maintenant ces étapes de plus près.