课程大纲
1、定义
状态转换法又叫状态迁移法。
状态:系统(或系统内的对象)在特定条件下所处的情况或模式。
迁移:状态之间的转换过程,通常由特定的事件或操作触发。
对于一个有限状态机,通过测试验证其在给定的条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,是否可能产生非法的状态转移等。
通过构造能导致状态迁移的事件,来测试状态之间的转换。
状态迁移图法侧重于分析和测试系统中存在的各种状态以及它们之间的迁移关系,主要关注状态转移的正确性。
状态迁移图法不保证单个功能的正确性,只考虑状态之间的转化是否和需求保持一致。
2、应用场景
适合功能的状态比较多的情况下,需测试各种状态的转换,且这些状态转换的测试在实际工作中容易被遗漏。
(需要对业务逻辑清晰熟练掌握)
举例:交易订单状态、播放器播放状态、审批流程状态……
3、优点
1、能全面覆盖系统的状态和状态转换逻辑。
2、帮助测试人员更好地理解系统的行为和工作流程。
3、对于复杂的状态机系统特别有效。
4、缺点
1、构建状态迁移图可能较为繁琐,尤其是对于非常复杂的系统
2、可能会遗漏一些隐藏的或不太常见的状态和迁移情况。
5、状态转换图转状态转换树步骤
5.1状态转换图例
5.2 N-Switch
N-Switch是由TSUN S. CHOW在1978年提出的,他将N-Switch定义为程序图中长度为n+1的连续的边或弧线(弧线通常在状态图中表示循环)的序列。所以单独的一条边(或者转换)就是一个0-Switch,两条连续的边的序列就是1-Switch。
N-Switch即为路径覆盖策略:
0-Switch意为没有重复路径,每个路径都执行一次; 1-Switch意为重复路径1次。
5.3转换步骤
5.3.1状态转换图转0-switch状态转换树
step1.将初始状态或者开始状态作为状态转换树的根,根在整个状态转换树中的层次是1。
step2.从左到右检查当前层次上的节点,将该节点对应的所有下一个可能的状态作为它的子节点,状态之间的转换作为两个状态的边。
step3.重复步骤2,直到以下2种情况,结束节点的延伸:
1、状态无循环路径:节点的状态是结束状态,不需要针对该节点继续进行状态转换;
2、状态有循环路径,节点重复出现1次:最大层次的节点与上方层次节点重复,那么这个节点就成为最终的叶节点,而无需继续生成其子节点。
举例:
5.3.2状态转换图转1-switch状态转换树
前提:
1、有状态循环路径-节点自身循环
2、有状态循环路径-不同节点间循环
3、中心节点有2个及以上父节点。
满足以上任一条件,状态转换图有1-switch状态转换树。
操作步骤:
在0-switch基础上再加一层即可,以此类推。(一般测试最多到1-switch,或者看具体需求)
例1:节点自身循环
例2:不同节点间循环
例3:中心节点有2个及以上父节点
6、设计步骤
step1.列出所有状态。
step2.画出状态转换(/迁移)图。
step3.状态转换(/迁移)图转状态转换(/迁移)树(即测试路径)。(转换方法见章节5.3)
step4.状态转换树(即测试路径)转测试用例。
下方以2个例子展示状态转换法设计测试用例,具体操作步骤:
附:课程完整思维导图
参考文章:
1.《N-Switch在状态转换测试中的应用》
https://blog.csdn.net/iteye_13411/article/details/82159296
2.《测试方法解析——n-switch\路径分析》
https://blog.csdn.net/wshlp123456/article/details/79926843
3.《黑盒测试之状态转换测试法》
https://www.yisu.com/jc/112833.html
4.《状态迁移法你还不会?看看这篇文章》
https://blog.csdn.net/qishuzdh/article/details/126734352
5.《状态迁移法》
https://blog.csdn.net/drift_yu/article/details/120427538
6.《测试用例设计方法-状态迁移图法》
https://blog.csdn.net/xiangxi1204/article/details/138665541
7.《运用状态转换图设计测试用例-软件测试技术实战(5)》
http://www.51testing.com/html/60/n-3719560-2.html