业务逻辑分类
- 流程控制性的逻辑
- 具体的字段数据约束逻辑
避免遗漏流程控制性的逻辑
通过状态迁移图找到所有流程
涉及业务实体状态转换的流程,则通过测试分析方式中的状态迁移图找出所有流程
- 分析需求,获取节点、状态信息
- 画状态迁移图(各个节点是如何流转的)

- 画状态迁移树(根据迁移图画出迁移树)

- 抽取规则,每个起始点的连线就是一条流程,共计 4 个流程
- 预定-已取消
- 预定-已支付-已取消
- 预定-已支付-已出票-已取消
- 预定-已支付-已出票-已使用
19 用例设计方法-状态迁移 - wsh1995 - 博客园 (cnblogs.com)
通过流程图找到所有流程
对于复杂的需求描述,可以通过将需求描述转换为流程图,然后找出所有流程
需求描述

流程分析图

20 测试用例设计 流程分析 - wsh1995 - 博客园 (cnblogs.com)
通过判定树或判定表找到所有流程
对于复杂的需求描述或业务逻辑,可以通过将需求描述转换为判定表或判定树,然后找出所有流程
需求描述
订购单的检查:
如果金额 > 500, 又未过期,发批准单和提货单
如果金额 > 500, 但过期了,则不发批准单
如果金额 < 500,不论是否过期,都发批准单和提货单,在过期的情况下,还需要发出通知单。
根据需求描述归纳为判定表

判定表法有个注意点是,如何列出所有条件的组合,一种是自己计算所有的排列组合,一种是正交表计算
自己计算所有排列组合示例:
js
let ageArr = ['少年','中年','老年']
let hobbyArr = ['打篮球','踢足球','打羽毛球']
let maleArr = ['男','女']
const arrArr = []
for(let age of ageArr){
for(let hobby of hobbyArr){
for(let male of maleArr){
arrArr.push([age,hobby,male])
}
}
}
console.log(arrArr.length)
console.log(arrArr.join('\n'))

通过Allpairs工具,计算所有正交组合
学会Allpairs工具,让用例设计变得简单高效 - 知乎 (zhihu.com)

根据需求描述归纳为判定树

16 用例设计方法-判定表 - wsh1995 - 博客园 (cnblogs.com)
测试用例设计方法六脉神剑------第四剑:石破天惊,功能图法攻阵| 京东物流技术团队 - 掘金 (juejin.cn)
避免遗漏具体的字段数据约束逻辑
用思维导图描述每个字段的约束
