---
title: "Pruebas de software para máquinas de estados"
date: "2011-04-05"
categories: 
  - "software"
tags: 
  - "agile-development"
  - "software-modeling"
  - "software-tools"
  - "uml"
  - "uml-tool"
  - "umodel"
  - "v2011r2"
description: Descubra cómo mejorar la calidad del software mediante la realización de pruebas tempranas de los diagramas de máquinas de estados UML, utilizando Altova UModel. Explore técnicas de prueba prácticas y ejemplos.
---
Status: #blog

Tags:  #agile-development #software-modeling #software-tools #uml #uml-tool #umodel #v2011r2

Categories: [development](/blog/es/category/development.md) [uml](/blog/es/category/uml.md)
# Pruebas de software para máquinas de estados

Muchas variedades de pruebas de software han ganado importancia a medida que los desarrolladores buscan formas de mejorar la calidad y cumplir con los plazos de los proyectos: revisión de código, pruebas unitarias, pruebas de regresión, pruebas beta, desarrollo impulsado por pruebas, entre otras. Independientemente de los objetivos de un proyecto o del lenguaje de código fuente utilizado, es ampliamente aceptado que cuanto antes se detecte un defecto, más fácil, económico y rápido será corregirlo. [Generación de código](https://www.altova.com/es/umodel/uml-code-generation.html) de [Diagramas de máquinas de estados UML](https://www.altova.com/es/umodel/state-diagrams.html), una nueva función introducida en [Altova UModel 2011](https://www.altova.com/es/umodel.html) La versión 2 puede utilizarse para validar la lógica conceptual en las primeras etapas del desarrollo del proyecto. 

**Diseño práctico representado en un diagrama de máquina de estados** 

Un ejemplo incluido con UModel proporciona un diagrama de máquina de estados simple y realista, junto con una pequeña aplicación de prueba que puede ejecutar para comprobar por sí mismo lo fácil que puede ser probar la lógica de un diseño. El diagrama de máquina de estados del proyecto AirCondition.ump, que se encuentra en la carpeta de ejemplos de UModel 2011, describe el funcionamiento de un sistema de calefacción y aire acondicionado típico. 

[![Diagrama de máquina de estados en 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) 

El sistema incluye un botón de encendido que se muestra en el lado izquierdo durante la transición desde el estado de apagado, una función "modeSelect" que permite seleccionar entre calefacción y refrigeración, una función "speedSelect" para controlar la velocidad del ventilador, y un botón de "standby" que pone el sistema en modo de espera, como se muestra en el lado derecho. La carpeta del proyecto de ejemplo incluye todo el código generado para el diagrama por UModel en Java, C# y Visual Basic. Para probar la versión en Java, solo necesitamos usar el comando **javac STMTester.java** para compilar el código y **java STMTester** para ejecutarlo. La aplicación de prueba muestra un panel de control simulado con ventanas de información sobre la unidad de calefacción y aire acondicionado. Los botones de funcionamiento aparecen en la parte superior, el estado actual se describe en la primera ventana, y los mensajes de salida generados por los cambios en el sistema aparecen en la segunda ventana.

[![Panel de control para pruebas del código de máquina de estados generado por 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) 

Como se muestra anteriormente, el sistema se inicializa en estado "apagado", el modo se establece en "calefacción" y el ventilador está desactivado. Antes de utilizar el sistema, es posible que desee ajustar el tamaño del panel de control y el diagrama de máquina de estados para poder seguir las acciones de la aplicación de prueba en el propio diagrama, como se muestra en la imagen de tamaño reducido que se muestra a continuación. 

[![Diagrama de máquina de estados de UModel y panel de control de pruebas para el código generado](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) 

**Funcionamiento de la máquina de estados** 

Cuando hacemos clic en el botón de encendido, la ventana de estado actual se actualiza y una descripción detallada de las operaciones que se llevaron a cabo se muestra como "Evento 1" en la ventana de mensajes de depuración. 

[![Panel de control para pruebas del código de máquina de estados generado por 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) 

Si hace calor, quizás queramos cambiar el modo a "refrigeración" y aumentar la velocidad del ventilador, lo cual podemos hacer pulsando los botones "modo" y "velocidad". La ventana de "estado actual" se actualiza con cada pulsación, y los eventos 2 y 3 se añaden a la ventana de mensajes de salida. 

[![Panel de control para pruebas del código de máquina de estados generado por 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) 

Ahora podemos ver cómo la aplicación de prueba nos permite verificar completamente la lógica de nuestro diagrama de máquina de estados, haciendo clic en cada posible secuencia de selecciones de botones para comprobar si producen los resultados esperados. Por ejemplo, si ponemos el dispositivo en modo de espera (Evento 4 a continuación) y luego presionamos "speedSelect", observamos en los mensajes de salida del Evento 5 que no se produce ningún cambio de estado en el subestado denominado "RegionSpeed". Compare el Evento 5 con el Evento 3 en la ventana de mensajes de salida, como se muestra a continuación. 

[![Panel de control para pruebas del código de máquina de estados generado por 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) 

Ahora que el sistema está en modo de espera y no necesitamos calefacción ni refrigeración, ahorremos energía pulsando el botón de encendido para apagarlo. 

[![Panel de control para pruebas del código de máquina de estados generado por 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) 

Espere un momento, parece que no ha ocurrido nada. No se ha producido ninguna transición en el evento 6, y el estado actual en la ventana superior sigue siendo "En espera". Si volvemos a mirar el diagrama de la máquina de estados, podemos ver que la única forma de salir del modo "En espera" es volver a presionar el botón de "En espera". ¿Es realmente este el comportamiento que un usuario promedio esperaría? ¿Que el botón de encendido no apague el sistema desde el modo "En espera"? 

[![Porción de un diagrama de máquina de estados creado con 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) 

Imaginen lo costoso que podría ser solucionar este problema si se hubiera detectado mucho más tarde, durante el desarrollo del producto, cuando el prototipo estuviera siendo evaluado por una agencia reguladora. Aquí tienen un desafío que proponemos a nuestros lectores: ¿cómo diseñarían una ruta más directa desde el estado de espera al estado de apagado? 

**Probar sus propios autómatas de estados** 

Puede utilizar los proyectos de ejemplo de generación de código de máquinas de estados de UModel como plantillas para crear aplicaciones de prueba para sus propios diseños. Le resultará útil aprovechar la función de UModel que crea automáticamente operaciones en una clase a medida que añade nombres de operaciones a las transiciones en su máquina de estados. 

[![Botón de la barra de herramientas de Altova UModel para la creación automática de operaciones en las clases](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) 

Además, el sistema de ayuda de UModel incluye información detallada sobre la generación de código a partir de diagramas de máquinas de estados, y también utiliza el archivo de proyecto "AirCondition.ump" como ejemplo. 

**Descubra por sí mismo cómo puede mejorar el desarrollo de proyectos probando la lógica de sus propios diagramas de máquinas de estados con Altova UModel** [**¡Descargue hoy mismo una versión de prueba gratuita de 30 días!**](https://www.altova.com/es/download/umodel/uml_tool_enterprise.html)**¡**
