7.5 流程图/场景法
流程图法是将软件系统的某个流程看成路径,用路径分析的方法来设计测试用例。根据流程的顺序依次进行组合,使得流程的各个分支都能走到。是从白盒测试中路径覆盖分析法推广到黑盒测试中来的测试分析方法。
例如:
在这个图中,有一个基本流(或主流程)和四个备选流(分支流)。
- 基本流:采用直黑线表示,是最简单的路径(无任何差错,程序从开始直接执行到结束)。通常选做冒烟测试用。
- 备选流:采用不同颜色表示,一个备选流可能从基本流开始,在某个特定条件下执行,然后重新加入基本流中,也可以起源于另一个备选流,或终止用例,不再加入到基本流中(例如各种错误情况)。
每个可能路径,可以确定不同的用例场景。从基本流开始,再将基本流和备选流结合起来,可以确定以下用例场景:
- 场景 1: 开始--基本流--结束
- 场景 2: 开始--基本流--备选流1--基本流--结束
- 场景 3: 开始--基本流--备选流1--备选流2--结束
- 场景 4: 开始--基本流--备选流3--基本流--结束
- 场景 5: 开始--基本流--备选流3--基本流--备选流1--基本流--结束
- 场景 6: 开始--基本流--备选流3--基本流--备选流1--备选流2--结束
- 场景 7: 开始--基本流--备选流3--基本流--备选流4--结束
- 场景 8: 开始--基本流--备选流4--结束
7.5.1 使用场景
存在多种不同的输出域测试点;
模拟用户操作软件时的场景,不同的操作过程会导致不同的操作结果;
要得到最终结果,前期步骤比较多,并且关心顺序。
7.5.2 步骤
流程图法设计用例步骤为:
- 需求分析
- 绘制流程图
- 设置功能路径优先级
- 确定测试路径
- 选取测试数据
- 构造测试用例
绘制流程图
常用符号:
- 开始节点:椭圆形或圆角矩形。
- 动作节点:矩形。
- 判断节点:菱形。
- 输出节点:平行四边形。
- 结束节点:椭圆形。
- 连接线:带方向箭头的连线。
确定测试路径
如果将程序的结束限定为一个节点,那么可以使用环路复杂度来标明程序的复杂程度,流程图中区域的数量对应于环路复杂度。
或给定流程图G的圈复杂度V(G)=E-N+2,其中E是流程图中边的数量,N是流程图中结点的数量。
从程序的环路复杂性可以导出程序基本路径中的独立路径条数,独立路径是指包括一组以前没有处理的语句或条件的一条路径。
如果程序的结束有多个节点,那么按照程序的走向,以走到每一个结束节点为一条独立路径。
设计独立路径时的原则是:确保程序中的每个可执行语句至少执行一次,每个条件的取真和取假分支也能得到测试。在设计路径时先以最简单的一个路径开始,每次引入一个新的边,同时只引入一个新的分支。
7.5.3 练习
1.针对数据发送功能,使用流程图法设计测试用例,业务描述:
- 启动主程序,如果没有空闲发送缓冲区,则进入等待状态。
- 进入等待状态后,每10秒检查一次发送缓冲区,如果没有空闲则继续等待,如果第3次检查仍然没有空闲,则返回结果:启动发送失败。
- 如果有空闲缓冲区,将数据写入空闲发送缓冲区。如果写入不成功,则返回结果:写入失败。
- 如果写入成功,则发送数据。
- 如果发送成功,则返回结果:发送成功,如果发送失败,则返回结果:发送失败。
2.针对杀猩猩王游戏任务,使用流程图法设计测试用例,业务描述:
- 需要在接任务后的20分钟内找到猩猩王,否则任务失败。
- 找到猩猩王后,需要和猩猩王战斗,如果玩家死亡,那么任务失败。
- 在战斗中,当猩猩王血量低于30%时,会召唤5个小猩猩。
- 在1分钟内杀光所有的小猩猩,就继续和猩猩王战斗。如果玩家杀死猩猩王,可以获得击杀奖励:10000经验值、护甲、单手锤。
- 如果没有在1分钟内杀光所有的小猩猩,猩猩王就会逃跑,那么继续和小猩猩战斗,杀死所有的小猩猩,获得击败奖励:5000经验值、戒指。