- 许多需求用状态机的方式来描述,状态机的测试主要关注在测试状态转移的正确性上面。对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,可能不可能产生非法的状态转移等
- 通过构造能导致状态迁移的事件来测试状态之间的转换,常用于协调测试
- 用这种方法可以设计逆向的测试用例,如状态和事件的非法组合
状态机:指系统所有可能的状态以及状态相互跳转的条件。
状态:指对象在其生命周期中的一种状况,处于某一个特定状态中的对象必然会满足的某些条件,执行的某些动作或者是耨写事件。(动作和行为的表现))
触发条件:引起状态的变迁,促使状态从一种状态转换到另外一种状态。(动作、行为)
一、 状态迁移图法的使用步骤
设计用例步骤:
- 画出状态迁移图
- 列出状态事件表
- 从状态转化树推导出测试路径
- 根据测试路径编写合法测试用例
- 编写非法测试用例
二、 状态迁移图法的使用
某打印机的打印功能如下:
打印机初始处于就绪的状态下,可以接收打印的任务,进入打印状态,开始打印;
在打印的过程中,如果打印机出现故障,打印机将处于故障状态,等待修复故障;
故障修复后,打印机会恢复打印状态,继续打印原来的文档;
在打印的过程中,如果纸张用完,打印机将暂停打印,处于缺纸状态,当放入打印纸后,打印机会自动检测,恢复打印状态,继续开始打印;
打印任务完成,打印机恢复就绪状态
(1)分析需求片段,找出所有的状态以及状态之间的跳转条件;
状态:①就绪;②打印;③故障;④缺纸
跳转条件:①打印指令;②出现故障;③故障修复;④缺纸;⑤放入纸张;⑥打印完毕
(2)设定初始状态,画出状态迁移图
(3)生成状态事件表
(4)生成状态转换树
(5)测试路径
①就绪–》打印–》故障–》打印
②就绪–》打印–》缺纸–》打印
③就绪–》打印–》就绪
(6)根据测试路径编写测试用例
(7)添加非法的测试用例
如:就绪–》故障
就绪–》缺纸
电梯
状态:停在一楼;上升;下降;空闲;直达一楼
状态迁移图:
测试路径:
①停在一层
②停在一层–》上升–》空闲–》上升
③停在一层–》上升–》空闲–》空闲
④停在一层–》上升–》空闲–》下降–》空闲
⑤停在一层–》上升–》空闲–》直达一楼