---
title: "Tests logiciels pour les automates finis"
date: "2011-04-05"
categories: 
  - "software"
tags: 
  - "agile-development"
  - "software-modeling"
  - "software-tools"
  - "uml"
  - "uml-tool"
  - "umodel"
  - "v2011r2"
description: Découvrez comment améliorer la qualité des logiciels grâce à des tests précoces des diagrammes d'automates d'états UML, en utilisant Altova UModel. Explorez des techniques de test pratiques et des exemples concrets.
---
Status: #blog

Tags:  #agile-development #software-modeling #software-tools #uml #uml-tool #umodel #v2011r2

Categories: [development](/blog/fr/category/development.md) [uml](/blog/fr/category/uml.md)
# Tests logiciels pour les automates finis

De nombreuses méthodes de test logiciel ont gagné en importance, les développeurs cherchant des moyens d'améliorer la qualité et de respecter les délais des projets : revue de code, tests unitaires, tests de régression, tests bêta, développement piloté par les tests, et bien d'autres. Quel que soit l'objectif d'un projet ou le langage de code source utilisé, il est largement admis que plus un défaut est détecté tôt, plus il est facile, économique et rapide à corriger.

La [génération de code](https://www.altova.com/fr/umodel/uml-code-generation.html) à partir de [diagrammes d'automates d'états UML](https://www.altova.com/fr/umodel/state-diagrams.html), une nouvelle fonctionnalité introduite dans la version 2 d'[Altova UModel 2011](https://www.altova.com/fr/umodel.html), peut être utilisée pour valider la logique conceptuelle très tôt dans le cycle de développement du projet. 

**Conception pratique représentée dans un diagramme d'état** 

Un exemple fourni avec UModel présente un diagramme d'automate d'état simple et réaliste, accompagné d'une petite application de test que vous pouvez exécuter pour constater par vous-même à quel point il est facile de tester la logique d'une conception. Le diagramme d'automate d'état du projet AirCondition.ump, situé dans le dossier des exemples d'UModel 2011, décrit le fonctionnement d'un système de chauffage et de climatisation typique. 

[![Diagramme d'état dans Altova UModel ](https://lh5.ggpht.com/_REdrfeVqYdU/TZsY4ceg5yI/AAAAAAAAAXU/EvHaGDO0_sw/Snap1_state_diagram_LR5.png?imgmax=800 "State machine diagram in Altova UModel ")](https://www.altova.com/umodel.html) 

Le système comprend un bouton d'alimentation situé sur le côté gauche, qui permet de passer de l'état éteint à l'état allumé, une fonction modeSelect qui permet de choisir entre le chauffage et la climatisation, une fonction speedSelect pour le ventilateur, et un bouton de veille qui met le système en mode veille, comme indiqué sur le côté droit. Le dossier de projet exemple contient tout le code généré pour le diagramme par UModel, en Java, C# et Visual Basic. Pour essayer la version Java, il suffit d'utiliser la commande **javac STMTester.java** pour compiler le code et **java STMTester** pour l'exécuter. L'application de test affiche un panneau de contrôle simulé avec des fenêtres d'informations sur l'unité de chauffage et de climatisation. Les boutons de commande apparaissent en haut, l'état actuel est décrit dans la première fenêtre, et les messages de sortie générés par les modifications du système apparaissent dans la deuxième fenêtre.

[![Panneau de contrôle des tests pour le code d'automates à états généré par Altova UModel](https://lh4.ggpht.com/_REdrfeVqYdU/TZsY4k3SX7I/AAAAAAAAAXY/BbrYrNG5nTQ/clip_image0043.jpg?imgmax=800 "Test control panel for state machine code generated by Altova UModel")](https://www.altova.com/umodel/state-diagrams.html) 

Comme indiqué ci-dessus, le système démarre à l'état "éteint", le mode est réglé sur "chauffage" et le ventilateur est désactivé. Avant de faire fonctionner le système, vous pouvez éventuellement redimensionner le panneau de contrôle et le diagramme d'état pour suivre les actions de l'application de test directement dans le diagramme, comme illustré dans l'image de taille réduite ci-dessous. 

[![Diagramme d'état de la machine UModel et panneau de contrôle des tests pour le code généré](https://lh3.ggpht.com/_REdrfeVqYdU/TZsY5AeHLzI/AAAAAAAAAXc/oNqgojYQqZw/Snap3_combinedimage_LR5.png?imgmax=800 "UModel state machine diagram and test control panel for generated code")](https://www.altova.com/umodel.html) 

**Fonctionnement de la machine à états** 

Lorsque nous cliquons sur le bouton d'alimentation, la fenêtre d'état actuel est mise à jour, et une description détaillée des opérations qui se sont produites est affichée sous forme d'événement 1 dans la fenêtre des messages de débogage. 

[![Panneau de contrôle des tests pour le code d'automates à états généré par Altova UModel](https://lh5.ggpht.com/_REdrfeVqYdU/TZsY5d6YGOI/AAAAAAAAAXg/GPAgI00JHWo/clip_image0084.jpg?imgmax=800 "Test control panel for state machine code generated by Altova UModel")](https://www.altova.com/umodel.html) 

S'il fait chaud, nous pourrions vouloir modifier le mode pour qu'il soit en mode refroidissement et augmenter la vitesse du ventilateur. Pour cela, nous pouvons cliquer sur les boutons "modeSelect" et "speedSelect". La fenêtre "État actuel" se met à jour à chaque clic, et les événements 2 et 3 sont ajoutés à la fenêtre des messages de sortie. 

[![Panneau de contrôle des tests pour le code d'automates à états généré par Altova UModel](https://lh6.ggpht.com/_REdrfeVqYdU/TZsY6EeKdOI/AAAAAAAAAXk/hIxBihKj4-Y/clip_image0103.jpg?imgmax=800 "Test control panel for state machine code generated by Altova UModel")](https://www.altova.com/umodel.html) 

Maintenant, nous pouvons constater comment l'application de test nous permet de tester en profondeur la logique de notre diagramme d'automate d'état en cliquant sur chaque séquence possible de sélections de boutons, afin de vérifier si elles produisent les résultats attendus. Par exemple, si nous mettons l'appareil en mode veille (Événement 4 ci-dessous), puis que nous appuyons sur le bouton "speedSelect", nous constatons dans les messages de sortie pour l'Événement 5 qu'aucun changement d'état ne se produit dans le sous-état nommé "RegionSpeed". Comparez l'Événement 5 à l'Événement 3 dans la fenêtre des messages de sortie, comme illustré ci-dessous. 

[![Panneau de contrôle des tests pour le code d'automates à états généré par Altova UModel](https://lh5.ggpht.com/_REdrfeVqYdU/TZsY6T-8lBI/AAAAAAAAAXo/VDovIAt3cDs/clip_image0123.jpg?imgmax=800 "Test control panel for state machine code generated by Altova UModel")](https://www.altova.com/umodel.html) 

Maintenant que le système est en mode veille et que nous n'avons plus besoin de chauffage ou de climatisation, économisons de l'énergie en appuyant sur le bouton d'alimentation pour l'éteindre. 

[![Panneau de contrôle des tests pour le code d'automates à états généré par Altova UModel](https://lh4.ggpht.com/_REdrfeVqYdU/TZsY66RZsKI/AAAAAAAAAXs/v6FK67nFMVI/clip_image0143.jpg?imgmax=800 "Test control panel for state machine code generated by Altova UModel")](https://www.altova.com/umodel.html) 

Attendez une seconde, il semble que rien ne se soit passé. Aucune transition n'a eu lieu dans l'événement 6, et l'état actuel affiché dans la fenêtre supérieure est toujours "En veille" ! En examinant le diagramme de l'automate d'état, on constate que la seule façon de sortir du mode veille est de presser à nouveau le bouton "Veille". Est-ce vraiment le comportement que l'utilisateur moyen pourrait attendre ? Le bouton d'alimentation ne devrait-il pas éteindre le système lorsqu'il est en mode veille ? 

[![Extrait d'un diagramme d'automate d'état créé avec Altova UModel](https://lh6.ggpht.com/_REdrfeVqYdU/TZsY7RcFpgI/AAAAAAAAAXw/1oWwcxTveBE/clip_image0163.jpg?imgmax=800 "Portion of a state machine diagram created with Altova UModel")](https://www.altova.com/umodel.html) 

Imaginez à quel point il pourrait être coûteux de résoudre ce problème si celui-ci n'avait été détecté que beaucoup plus tard, lors du développement du produit, alors que le prototype était testé par un organisme de réglementation ! Voici un défi que nous lançons à nos lecteurs : comment concevriez-vous une autre voie, plus directe, pour passer de l'état de veille à l'état d'arrêt ? 

**Tester vos propres automates** 

Vous pouvez utiliser les exemples de projets de génération de code pour les automates à états UModel comme modèles pour créer des applications de test pour vos propres conceptions. Vous voudrez profiter de la fonctionnalité UModel qui crée automatiquement des opérations dans une classe lorsque vous ajoutez des noms d'opérations aux transitions de votre automate à états. 

[![Bouton de la barre d'outils Altova UModel pour la création automatique d'opérations dans les classes](https://lh6.ggpht.com/_REdrfeVqYdU/TZsY7mEsVhI/AAAAAAAAAX0/FDDlekHpIgk/clip_image0183.jpg?imgmax=800 "Altova UModel toolbar button for automatic creation of operations in classes")](https://www.altova.com/umodel.html) 

De plus, le système d'aide de UModel contient des informations détaillées sur la génération de code à partir de diagrammes d'automates d'états, et utilise également le fichier de projet AirCondition.ump comme exemple. 

**Découvrez par vous-même comment vous pouvez améliorer le développement de vos projets en testant la logique de vos propres diagrammes d'automates finis avec Altova UModel –** [**téléchargez dès aujourd'hui une version d'essai gratuite de 30 jours**](https://www.altova.com/fr/download/umodel/uml_tool_enterprise.html)**!**
