软件测试中使用状态机的挑战解决方案
上个月,在我们的博客中 状态机软件测试 与 Altova UModel 我们在空调系统的模型中发现了一些意想不到的行为,并邀请读者们改进设计。这篇文章描述了一种可能的解决方案。当我们运行针对该模型的测试程序时,我们发现,即使系统处于待机状态,电源开关并没有将其关闭。在 状态机图 在我们的最初设计中,从工作模式进入待机模式的唯一途径是通过待机按钮,而退出待机状态的唯一方法也是再次按下待机按钮,具体情况请参见以下说明。

我们可以通过在状态图中添加一条新的转换线,从“待机”状态直接连接到“关闭”状态,从而创建一个备用退出方式,用于在待机状态下关闭系统。将 powerButton() 函数指定为触发该转换的事件即可。UModel 通过提供一个弹出窗口,列出模型中已定义的事件,从而简化了事件的指定过程。

我们对该模型进行的改进,特别是从待机状态到关闭状态的转换,效果如下:
![]()
在重新生成 Java 代码并编译新版本后,我们可以再次运行测试应用程序。调试输出消息窗口显示,系统在事件 3 中进入了待机状态。现在,事件 4,即按下电源按钮,会将状态设置为关闭。
![]()
通过 Altova UModel,您可以亲身体验如何提升您自己的状态机图的逻辑性 立即下载免费的 30 天试用版 !