# MaTeLo

MaTeLo (Markov Test Logic) est un outil de Model-based testing développé par l'éditeur All4tec, conçu pour augmenter la couverture des tests en boîte noire et la productivité des équipes, dans des domaines d'application comme l'automobile, les systèmes d'information ou la défense par exemple.
Le testeur dessine dans MaTeLo les environnements des systèmes sous test et leur comportement avec des états, transitions et conditions.
Selon la stratégie de test, le testeur choisit parmi plusieurs algorithmes , lui offrant différentes couvertures de test pour générer l'ensemble du référentiel de test afin d'assurer la conformité du produit avec les spécifications fonctionnelles et détecter le maximum de Bugs.
MaTeLo génère automatiquement les cas de test composés de pas de test, assemblés dans des suites de test, les données de test et la variabilité des stimulations et résultats attendus (Oracle de Test), les scripts de test pour l'automatisation des bancs de test, et la traçabilité des tests avec les exigences.
Avec la fonction Model-Based Testing Online, et ses fonctions d'automatisation intégrées, MaTeLo réalise la campagne en orchestrant les tests sur différentes plates-formes comme les navigateurs Web, les clients lourds, services Web, consoles, mobiles, simulateurs 3D, etc. et lui permet le calcul du verdict de la campagne.
MaTeLo est connecté avec un large écosystème comme les principaux ALM, bancs de test et outils de simulation permettant l'échange des exigences, données et cas de test, scripts, etc.

## Historique

Initialement issu de besoins utilisateurs pour des projets spatiaux menés par Thales Alenia Space, le consortium international MaTeLo a été créé avec les industriels Thales Alenia Space, Israel Aerospace Industries , NEC, et Magneti Marelli, ainsi que les organismes de recherche Université Friedrich-Alexander d'Erlangen-Nuremberg et Université de Lund qui ont défini le fondement théorique et scientifique.
MaTeLo s'est rapidement élargi aux secteurs de l'aéronautique, des télécommunications et de l'automobile, ainsi qu'aux systèmes informatiques de grande échelle.
La description des fonctionnalités et les bénéfices attendus de l'outil MaTeLo ont été rédigés par Thales Alenia Space (anciennement Alespazio) dans l'article "MaTeLo : Validation des logiciels par des suites de test automatisées" paru dans la revue scientifique "Proceedings of DASIA 2003 (ESA SP-532). 2-6 June 2003, Prague, Czech Republic. Editor: R.A. Harris. Published on CDROM., id.30.1". Cette description de MaTeLo est référencée dans le système des données astrophysiques de la SAO/NASA, et son contenu est garanti par la NASA (National Aeronautics and Space Administration).
La société française All4tec, anciennement Alitec, a été le porteur du consortium MaTeLo et a contribué à l'apport des technologies avec la société allemande Danet acquise par Devoteam en 2009.
Le projet européen MaTeLo a démarré en janvier 2002, avec une première version en juin 2003. La première conférence internationale scientifique évoquant les travaux en relation à MaTeLo s'est tenue à Paris le 5 décembre 2002 concernant le test d'usage statistique pour la validation des systèmes, pour la 15e Conférence internationale : Ingénierie des logiciels et des systèmes et leurs applications (ICSSEA), présenté par Alitec devenue All4tec$^,$.
Le 19 septembre 2003 à Amsterdam, a eu lieu la première conférence de l'Institute of Electrical and Electronics Engineers présentant MaTeLo et concernant des expériences pratiques avec le test d'usage présentée lors du Onzième atelier international annuel sur la technologie logicielle et la pratique du génie logiciel.
Le 7 novembre 2003 à Dallas lors de la 3e Conférence en qualité logicielle, a été présenté MaTeLo - test d'utilisation statistique par diagrammes de séquence annotés, chaînes de Markov et TTCN-3.
Le 16 novembre 2003 à Xi'an en Chine lors du Test Symposium 2003, a été présentée la génération automatisée de cas de test TTCN-3 au moyen de diagrammes de séquence UML et de chaînes de Markov avec MaTeLo.
Le 2 novembre 2004 à Saint-Malo a été publiée l'estimation de la fiabilité pour les tests statistiques d'utilisation des chaînes de Markov avec MaTeLo, lors du 15e Symposium international sur l'ingénierie de la fiabilité des logiciels.
Le 8 novembre 2004 à Xiamen a été présentée une méthodologie de test du système basée sur le modèle d'utilisation de la chaîne de Markov et MaTeLo lors de la 8th International Conference on Cooperative Work in Computer-Aided Design.
En 2013 à l'Université d'Angers a été déposé le rapport de projet sur l'Identification des contraintes DO-178C pour l'outil MaTeLo.
Le 1er juillet 2013 à Zagreb a été publiée une méthode pour créer le profil opérationnel d'un dispositif TV/STB à utiliser pour des tests statistiques avec MaTeLo lors de Eurocon 2013.
En juin 2014 a été publiée l'extension du model-based testing pour la prise en compte de la variabilité dans les systèmes complexes aveclMaTeLo.
Le 4 août 2014 à Tianjin a été publiée la dérivation des variantes de modèle d'utilisation pour les tests basés sur des modèles : Une étude de cas industriel avec MaTeLo lors de la 19e Conférence internationale sur l'ingénierie des systèmes informatiques complexes.
Le 15 septembre 2014 à Florence a été publié le MPLM - Gestionnaire de la gamme de produits dans MaTeLo : Relier la modélisation de la variabilité et les tests basés sur des modèles, lors du SPLC '14 Proceedings of the 18th International Software Product Line.
Le 16 septembre 2013 à Opatija a été présentée l'amélioration de la navigation automatique dans le menu DTV/STB pour la vérification fonctionnelle avec MaTeLo à la 36e Convention internationale sur les technologies de l'information et de la communication, l'électronique et la microélectronique (MIPRO).
En 2015 a été publié l'ouvrage Advances in Computers Volume 98, 2015, Pages 89-140 dont le chapitre 3 concerne le Model-Based Testing dont l'outil MaTeLo.
En novembre 2016 a été publié dans l'ouvrage Microprocessors and Microsystems Volume 47, Part B, November 2016, Pages 252-261 le projet EQUITAS : Chaîne d'outils pour l'amélioration de la sécurité fonctionnelle et de la fiabilité des systèmes automobiles utilisant MaTeLo pour la génération des tests.
En octobre 2018 a été publié l'article "Accroître l'efficacité des tests par des tests basés sur des modèles axés sur les risques" dans le Journal of Systems and Software Volume 144, October 2018, Pages 356-365 ou MaTeLo est utilisé comme outil de Model-Based Testing.

## Édition des modèles MaTeLo

La description détaillée de l'outil de Model-based testing MaTeLo est consultable dans plusieurs ouvrages de références$^,$$^,$$^,$$^,$.

### Modèle état-transition-condition

Le modèle graphique de MaTeLo est basé sur les chaînes de Markov pour permettre la conception de modèles. Un ensemble de transitions, chacune séparée par des états, est utilisé pour représenter le système et son environnement en termes d'exigences fonctionnelles (et/ou non fonctionnelles). Chaque élément du modèle comporte une courte zone de texte qui lui est associée, décrivant brièvement l'état ou l'action effectuée sur le système à un point spécifique. Certaines transitions sont conditionnelles et aiguillent les parcours en fonction des classes d'équivalences tirées précédemment selon des règles de gestion du système.
Le modèle MaTeLo peut représenter les actions et vérifications pour tester un système, vues comme un utilisateur d'un site Web ou d'un régulateur de vitesse par exemple. Le modèle peut être aussi une représentation graphique de la combinatoire possible entre les classes d'équivalences des variables, où chaque état représente, une classe d'équivalence, et où ses transitions indiquent les possibles dépendances et probabilités avec d'autres classes d'équivalences. Cette dernière représentation est utile pour modéliser les stimulations d'un environnement complexe composées de multiples paramètres et classes d'équivalence liées, comme celui des véhicules autonomes ou bien de transactions bancaires par exemple, afin de pouvoir générer un ensemble de combinatoires cohérent.
Les états peuvent se transformer en macro états où sont associés des macro chaînes représentant un sous processus lui-même composé d'états, macro état, transitions et conditions.Cette représentation hiérarchique participe à la réutilisation et à la lisibilité du modèle.

### Gestionnaire de données de test

MaTeLo gère nativement un dictionnaire de données permettant de stimuler ou calculer l'Oracle de Test (en) système sous test. Les données sont décomposables en Classe d'équivalence numériques avec différents intervalles numériques, ou bien en classes discrètes représentant les possibles sous-états d'une variable. Les données sont associées sur les transitions du modèle par glissé-déplacé où elles sont instanciées et valorisées par l'utilisateur. Les valorisations peuvent être numériques, textuelles, gaussiennes, distribuées aléatoirement selon les fréquences d'usages ou de risques, ou bien calculées par les fonctions de traitements.

### Fonction de traitement

Afin de calculer dynamiquement les stimulations ou les résultats attendus en fonction de données précédemment tirées sur une transition, MaTeLo propose un ensemble de fonction de traitement des données. Les fonctions peuvent être mathématiques, de traitement de caractère, ou bien utilisant directement la syntaxe des formules Microsoft Excel.
Les fonctions de traitement instanciées proposent un ensemble dynamique de tableaux de données de test pouvant être créés, triés, calculés, filtrés, enregistrés, etc. tout le long de la vie de la suite de test. Ces tableaux peuvent être aussi chargés depuis des bases de données existantes comme Microsoft Excel, Oracle Database, IBM Db2, etc.
Grâce à ces fonctions de traitement glissées-déposées sur les modèles, il est possible de créer à la volée tout jeu de données avec oracle de test complexe comme des ordres de bourses, des données d'environnement d'un véhicule autonome, ou bien des transactions de terminaux de paiements ou plus simplement toutes données d'un formulaire d'une application.

### Gestionnaire et traçabilité des exigences

Les exigences sont gérées sous formes d'arborescence, dossier et groupes conformément au format Requirements Interchange Format (en). Les exigences sont associables au modèle au niveau de leur transition, stimulation, vérification, input, output, attribut, ou classe d'équivalence. Lors des générations, des indicateurs donnent le pourcentage de couverture des exigences vis-à-vis des suites de test générées. Des rapports de couverture sont générés montrant la matrice des exigences vers les suites de test, ou inversement les suites de test vers les exigences.

### Opération de test off-line

Ces opérations sont dédiées à la génération off-line de scripts pour l'automatisation. Des plates-formes de test peuvent être créées afin de transformer les suites de test générées en ensemble de fichiers pouvant automatiser les automates de test. Le format de sortie est configurable par l'utilisateur et permet de créer tout type de script, ou code exécutable, comme du Selenium, Java, Eggplant, UFT, python, XML, etc. Les opérations de test représentent une partie du script à générer ou un mot clé action, et sont paramétrables avec les données du modèle MaTeLo.

### Fonction d'automatisation on-line

MaTeLo permet d’exécuter directement les campagnes de test sans avoir recours à des technologies d'automatisation tierces. Des fonctions de traitements sont dédiées à l'automatisation on-line. Ces fonctions insérées dans le modèle, permettent pendant la génération des suites de test d'exécuter la campagne de test directement sur le système à tester et d'adapter les chemins ou données de test en fonction de l'état du système sous test. Il n'y a ni code ni script pour manipuler ces fonctions. Les librairies d'automatisation fournies en standard avec MaTeLo sont :
* SeleniumRunner, qui permet d'automatiser tout navigateur Web depuis tout OS
* GUIRunner, technologie à base de reconnaissance d'images et de caractère qui permet d'automatiser toute application client lourd, léger, application console, sur tout OS ou smartphone
* RestRunner, qui permet d'automatiser les Web services Rest
* SoapRunner, qui permet d'automatiser les Web services Soap
* SCANeR Runner, qui permet d'automatiser l'outil de simulation 3D AV Simulation SCANeR pour le test des véhicules autonomes
En intégrant plusieurs de ces technologies dans un même modèle, il devient possible de réaliser des tests de bout en bout qui mettent en œuvre des systèmes d'information répartis sur plusieurs technologies.

## Algorithmes de génération des suites de test

Le choix de l’algorithme de génération dépend de sa stratégie de test (en).

### Minimum Arc Coverage

Cet algorithme génère de façon déterministe le chemin le plus court afin de parcourir l'ensemble des transitions et conditions du modèle. Sa base mathématique repose sur le problème du postier chinois.

### User Oriented

Algorithme de test statistique qui permet de générer les tests avec des parcours et combinatoires correspondant aux fréquences d'usage ou de risques des transitions et classes d'équivalence saisies dans le modèle.

### User Oriented filtered

Algorithme user oriented permettant de filtrer les nouvelles suites de test générées qui n'apportent pas de gain en termes de nouvelle transition couverte, classe d'équivalence, ou nouveau chemin. Cet algorithme permet d'éliminer les doublons et de converger rapidement vers un objectif de test.

### Most Probable

Algorithme déterministe qui génère en priorité les transitions et classes d'équivalence avec le chemin le plus probable, puis déduit un taux de décroissance sur la classe d'équivalence ou transition courante pour l'ajouter sur les autres transitions et classes d'équivalence afin d'avoir plus de chance d'accéder aux autres parties du modèle. Les suites de test générées sont les plus probables en premier, puis les moins probables.

### Path Coverage

Algorithme qui permet de générer tous les chemins du modèle.

### Échantillonneur de Gibbs

Pattern de modèle mettant en œuvre l'échantillonnage de Gibbs pouvant être couplé à d'autres algorithmes de génération permettant de générer un échantillon de combinatoires convergeant géométriquement vers la distribution stationnaire du système et limitant le nombre de doublons.

## Production du référentiel de test
### Génération des cas de test

Les Cas de Test (en) représentent l'entité de séquence de pas de test réutilisable au sein des suites de test. À chaque modèle MaTeLo correspond un ensemble de Cas de Test (en) mis à jour et nommé automatiquement pendant l'édition du modèle. Les Cas de Test (en) sont composés de pas de tests, eux-mêmes décomposés en stimulations et vérification valorisées.

### Génération des suites de test

Les suites de test (en) sont générées grâce aux Algorithmes de génération. Elles sont composées des cas de test et décrivent un parcours applicatif appelé aussi scenario de test (en). Les Cas de Test (en) sont visualisables graphiquement et exportables en html, pdf, Microsoft Word, Microsoft Excel.

### Génération des scripts de test

Les suites de test (en) sont transformables en scripts de test. Elles sont construites à partir des opérations de test présentes dans le modèle qui décrivent chacune une portion du script à générer. Ces scripts sont paramétrables avec les données du modèle. Ces scripts sont ensuite exécutés en dehors de MaTeLo dans un banc de test qui gère la campagne. C'est le mode off-line du Model-Based Testing. Les scripts générés peuvent être par exemple du XML, Selenium, CSV, Java, C#, Bash, TestStand, Canoe, etc.

### Exécution des campagnes de test

Le mode Model-Based Testing On-Line de MaTeLo permet grâce à ses fonctions d'automatisation incluses, d'exécuter la campagne, de calculer le verdict et de détecter automatiquement les anomalies du système sous test.

### Synchronisation avec les ALMs

MaTeLo dispose d'explorateurs temps réels permettant de synchroniser les modèles et le référentiel généré avec les principaux ALMs du marché. MaTeLo dispose de sa propre base de données permettant de partager les modèles et de faire du travail collaboratif au sein des organisations. Le référentiel synchronisé concerne les exigences, Cas de Test (en), suites de test (en), script, données de test, et résultat de campagne.