- 状态迁移法是抽象出待测系统的若干状态以及状态之间的转换条件和转换路径,然后从状态迁移路径覆盖的角度设计测试用例。状态迁移法的目标是设计足够多的测试用例覆盖系统的状态、状态--条件的组合、状态迁移的路径。
- 状态迁移法怎么用
- 绘制状态迁移图
- 分析系统有哪些状态以及各个状态之间的迁移关系
- 用圆圈表示状态,箭头表示迁移方向,绘制状态迁移图。在箭头旁边绘制迁移条件。
- 定义状态--条件表
- 分析各个状态,不同输入导致的状态迁移和输出。
- 根据状态迁移图决定测试路径
- 从初始节点开始(可以选择多个初始节点),根据广度优点原则遍历状态迁移图,遍历到结束节点或已经遍历过的节点结束,由此可以得到测试路径。
- 选取测试路径,达到规定的测试覆盖率。针对每条路径设计一个或多个测试用例。
- 用了更好的遍历,可以借助状态转移树。确定一个根节点然后向后延伸,知道所有的状态都包含在转移树中。从根节点到每一个叶子节点的路径就是测试路径。
- 构造测试用例
- 选择测试路径,结合等价类划分法、边界值分析法编写测试用例。
- 绘制状态迁移图
- 状态迁移图法的核心是通过状态转换树将不同状态之间的转换(修改、改变)连接起来进行测试。设计到改变的地方都可以考虑状态迁移法。
- 示例(对栈设计测试用例)
- 状态迁移图
- 状态--事件表
- 状态转换树
- 根据状态转换树可以得到测试路径
- 1、空->空
- 2、空->半满->空
- 3、空->半满->半满
- 4、空->半满->满->半满
- 5、空->半满->满->满
- 根据测试路径设计测试用例
- 针对第一条路径:建立一个长度为2的栈,出一个数,预期是栈仍然是空且抛出异常
- 针对第二条路径:新建一个长度为2的栈,进一个数,预期栈变成半满,出一个数,预期栈变成空
- 针对第三条路径:新建一个长度为3的栈,进一个数,预期栈变成半满,再进一个数,预期栈的状态还是半满
- 针对第四条路径:新建一个长度为2的栈,进一个数,预期栈变成半满,再进一个数,预期栈的状态变成满,出一个数,预期栈的状态变成半满
- 针对第四条路径:新建一个长度为2的栈,进一个数,预期栈变成半满,在进一个数,预期栈的状态变成满,再进一个数,预期栈的状态仍然是满且抛出异常
- 状态迁移图
欢迎扫码关注微信公众号「一朵儿的软件测试之旅」一起学习交流