Solution au défi des tests logiciels utilisant des automates à états

Le mois dernier, dans notre article de blog sur les tests logiciels pour les automates à états utilisant Altova UModel, nous avons constaté un comportement inattendu dans notre modèle d'un système de climatisation et nous avons invité nos lecteurs à améliorer la conception. Cet article décrit une solution possible. Lorsque nous avons exécuté l'application de test pour notre modèle, nous avons constaté que l'interrupteur d'alimentation ne coupait pas le système lorsqu'il était en mode veille. Dans le schéma de l'automate à états de notre modèle initial, le seul moyen d'entrer en mode veille depuis le mode de fonctionnement est via le bouton de veille, et le seul moyen de sortir du mode veille est de presser à nouveau le bouton de veille, comme le montre le détail ci-dessous.

Nous pouvons créer une sortie alternative pour éteindre le système depuis l'état de veille en ajoutant simplement une nouvelle ligne de transition allant de l'état de veille à l'état d'arrêt, et en attribuant la fonction powerButton() comme l'événement qui déclenche cette transition. UModel facilite cette opération en proposant une fenêtre contextuelle qui liste les événements déjà définis dans le modèle.

Voici à quoi ressemble la version modifiée du modèle, intégrant la nouvelle transition entre les modes "veille" et "arrêt" :

Après avoir régénéré le code Java et compilé la nouvelle version, nous pouvons relancer l'application Tester. La fenêtre de sortie du débogueur indique que le système est entré en mode veille lors de l'événement 3. L'événement 4, l'activation du bouton d'alimentation, met désormais l'état sur "éteint".

Découvrez par vous-même comment vous pouvez améliorer la logique de vos propres diagrammes d'automates finis grâce à Altova UModel – téléchargez une version d'essai gratuite de 30 jours aujourd'hui !