测试用例设计方法
一、术语
1、动态测试(dynamic testing):通过运行软件的组成或系统来测试软件
如:行驶中的汽车
2、静态测试(static testing):对组件的规格说明书进行评审,对静态代码进行走查
如:展厅的汽车
3、评审过程及需求文档的一种特定评审
如:用例评审,组内评审,交叉评审
4、度量(metric):测量所使用的方法或标准
如:性能测试,登录时间少于3s
5、评审员(reviewer):参与评审的人
6、记录员(scribe):记录评审会议纪要
7、技术评审(Technical Review):同时间对技术进行的评审,目的是技术实现达成共识
如:交叉评审
8、走查(Walkthrough):由文档作者逐步陈述文档内容,以收集信息并对内容达成一致
如:走访那,调查
9、复杂性(complexity):系统或组件的设计或内部结构比较复杂, 导致难以理解,维护或验证的程度
10、 圈复杂度(Cycloramic complexity):程序中独立路径的数量。可 以衡量一个组件模块的判定结构的复杂程度。
11、控制流(Control Flow):执行组件或系统的一系列顺序的路径
12、数据流(Data Flow):表示数据对象的顺利或状态发生变化的过程
比如:待支付已支付待签
13、计算圈复杂度三个公式:
(1)圈复杂度= 区域数
5块区域 包括 外面区域
(2)圈复杂度=边数-节点数+2
10-7+2=5
(3)圈复杂度=判定节点+1
4+1=5
二、设计用例方法
(一)设计用例方法的主要设计用例
(1)等价类 、边界值 主要针对单个场景功能用例
(2)判定表、正交表、因果图 设计方法 适合组合功能的用例
(3)场景法 适合主流程,
(4)状态迁移 适合:状态的变更用例
(5)错误推测法、异常分析法、随机测试法:在根据经验测试方法进行测试 ,补充用例
1、黑盒测试用例方法
(1)等价类
指某个输入域的集合,在集合中各个输入的条件都是等效的。
(1.1)等价类划分为2种情况
a.有效等价类:对程序规划说明有意义的,合理的输入数据;
例:卡正常、密码正确、余额充足
b.无效等价类:对程序规格说明无意义的、不合理的输入数据
例:银行卡取钱:跨行,、消磁卡、折断卡、
(1.2)等价设计思路
a.找输入条件;
b.为每个输入条件找有效、无效等价类;
c.为每个等价类编号;
d.用最少的用例覆盖最多的有效等价类;
e.每一个无效等价类都是一个用例;
f.并非所有有效等价类都是无效;
g.等价类的覆盖可以重复覆盖(覆盖有效等价)
(1.3)常见的能够划分等价类的地方:
a.数值范围
如:输入QQ账号:5-13位
有效:输入8位
无效:大于13,小于8位
b.重复次数
如:密码错误3次
c.字符串长度
如:用户名输入框:20mm
d.字符串组中字符的个数
如:用户名输入只能输入8个汉字
e.文件命名
如:txt,word,xlsx只能上传这三种
f.文件大小
如:文件小于2m
g.屏幕的颜色种类
如:黑,红,绿,蓝等
h.超出时间
如:支付倒计时
(1.4)等价类的优缺点
优点:是考虑了单个输入域的各类情况,避免了盲目或随机选取输入数据的不完整性和覆盖的不稳定性;
缺点:方法虽然简单易用,但是没有对组合情况进行充分的考虑。需要结合其他测试用例设计的方法进行补充。
(2)边界值
定义:边界上的点;
上点:边界上的点;
离点:离上点最近的点(即上点左右两边最邻近的点)
内点:在域范围内的点
(2.1)边界值分析原则
a.如果输入(输出)条件规定了取值范围,则应该以该范围的边界内及边界附近的值作为测试用例。
如:5-13范围
(2.2)如果输入(输出)条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。
如:输入框1-8个字符
(2.3)如果程序规格说明中提到的输入或输出是一个有序集合,应该注意选取有序集合的第一个和最后一个元素作为测试数据。
如:学历选择,100个或1000个选项
重点:
边界值是发现bug能力最强的一种测试方法。
(3)场景法(*)
(3.1)拿一个系统:梳理场景
例:淘宝:注册》登录》搜索商品》查看商品详情》加入购物车(或立即购买)》提交确认订单》跳转支付界面》支付完成》发货》签收》待评价》交易完成
(3.2)场景法定义:
场景法主要是针对测试场景类型的,也称为场景流程分析法。流程分析是将软件系统的某个流程看成路径,用路径分析的方法来设计测试用例。根据流程的顺序依次进行组合,使得流程的各个分支都能走到。
(3.3)流程分析步骤:
a.画出业务流程图
注意:描述正常流程和异常流程
b.确认条件分支(功能路径)
注意:设计路径的优先级)
c.确认测试路径
注意:考虑路径覆盖率
d.选择数据构造用例
注意:选数据要结合等价类边界值分析
(4)判定法
(4.1)判定表四个组成部分:
条件桩,条件项,动作桩,动作项
(4.2)判定表是对组合情况设计用例的;
(4.3)判定思路:
找出条件桩,动作桩;
根据条件计算有多少种组合条件;
设计一张初始判定表:条件桩,动作桩填写,填写条件项对应的动作项
简写判定表;
根据判定表输出用例;
(5)状态迁移法
定义:通过描绘系统的状态及引起系统状态转换的事件,来表达系统的行为。
(5.1)状态迁移图设计测试用例步骤:
a.根据需求画出状态迁移图;
b.通过状态迁移图画出状态转换树;
c.从状态转换树推导出测试路径;
d.根据测试路径编写合法(正常)测试用例或非法(异常)测试用例;
注意:保证从状态转换树的根节点到每个叶节点的每一条路径都至少设计出一个测试用例。
例:订单状态:商家端;客户端;平台端
商家端:等待买家付款,买家已付款、卖家待发货,卖方已发货,买家已签收,交易失败,交易完成
客户端:待支付、取消支付,已支付,待发货, 发货中,待签收,已签收、待评价,已评价,已完成
平台端:监测订单,确认订单,收到投诉,解决投诉
(6)因果图(了解)
(6.1)因果图提供了一个把规格转化为判定表的系统化方法,从该图中可以产生测试数据。
其中,原因是表示输入条件,结果是对输入执行的一系列计算后得到的输出。
因果图方法最终生成的就是判定表。(重要)
它适合于检查软件输入条件的各种组合情况(作用)
最终结果是:生成判定表
(6.2)因果图中的约束 在实际问题中输入状态相互之间、输出状态相互之间可能存在某些依赖关系,称为“约 束”
。对于输入条件的约束有E、I、O、R四种约束,对于输出条件的约束只有M约束。
E约束(异):a和b中最多有一个可能为1,即a和b不能同时为1。
例如:一个橙汁按钮、一啤酒按钮 ,只能选择一个按钮
I 约束(或):a、b、c中至少有一个必须为1,即a、b、c不能同时为0。
例如:两个人有2条路有2条路 :1号路线,2号路线,
你可以选1号路线
你可以选1号路线,2号路线两条路线
O约束(唯一):a和b必须有一个且仅有一个为1。
例如:两个人有2条路 :1号路线,2号路线,
只能选择一条路线,不能不选
R约束(要求):a是1时,b必须是1,即a为1时,b不能为0。
例如:两个人有2条路 :1号路线,2号路线
我选择1号路线,你也只能选择1号路线
M约束(强制):若结果a为1,则结果b强制为0。
例如:两个人有2条路 :1号路线,2号路线
我选择1号路线,你也只能选择2号路线
(6.3)因果图中的4种基本关系在因果图的基本符号中,
https://img2024.cnblogs.com/blog/3786519/202604/3786519-20260415095116279-1136892083.png
图中的左结点ci 表示输入状态(或称原因),右结点ei表示输出状态(或称结果)。ci与ei取值0或1,0表示某 状态不出现,1则表示某状态出现。
恒等:若 c1 是1,则 e1 也为1,否则e1 为0。
例如:有钱富豪
非:若 c1 是1,则 e1 为0,否则e1为1。
例如:有钱穷人
或(符号:v):若 c1 或 c2 或 c3 是1,则e1 为1,否则e1为0
例如:有钱人== 有车或有房或存款
与():若 c1 和 c2 都是1,则e1 为1,否则e1为0。
例如:有钱人== 有车、有房、存款(同是满足)
(6.4)因果图的步骤:
1.把大的系统规格划分解成可以测试的规格片段
2.分析分解后待测的系统规格,找出哪些是原因,哪些是结果
3.画出因果图
4.把因果图转换成判定表
5.简化判定表
6.用判定表中的每一列生成测试用例
(6.5)因果图转换判定表的方法:
- 将因果图中的所有条件(因)填入判定表 的条件桩中
- 将因果图中的所有动作(果)填入判定表 的动作桩中;
- 根据因果图确定各个条件组合对应的动作,并且确定判定表中各个规则的条件项和动作项,在需要时优化判定表
(6.6)因果图的优点/缺点
优点:
- 测试的颗粒度细
- 测试用例多
- 考虑组合情况
缺点: - 规格需求的因果关系多,难以提取
- 因果关系复杂
(7)正交表(了解)
(7.1)正交实验设计法,是从大量实验点中挑选出适量的,有代表性的点,应用依据迦罗瓦理论导出的“正交表”,合理的安排试验的一种科学的试验设计方法。
(7.2)正交常用的术语
指标:通常把判断试验结果优劣的标准叫做试验的指标
因子:所有影响试验指标的条件
水平值:影响试验因子的取值
案例: 姓名、身份证、手机号
3个条件是指因子
填或不填是两个水平值 2
2的3次方 总的8种实验方法
正交表算法:4种实验方法
计算公式:实验数=因子(水平数-1)+1
4=3(2-1)+1
案例2:7*(2-1)+1=8种实验方法
(3)正交表特点:
1》整齐可比性
在同一张正交表中,每个因素的每个水平出现的次数是完全相同的。由于在试验中每个因素的每个水平与其它因素的每个水平参与试验的机率是完全相同的,这就保证在各个水平中最大程度的排除了其它因素水平的干扰。
2》均衡分散性
在同一张正交表中,任意两列(两个因素)的水平搭配(横向形成的数字对)是完全相同的。这样就保证了试验条件均衡地分散在因素水平的完全组合之中,因而具有很强的代表性,容易得到好的试验条件。
(4)
用正交表设计测试用例的步骤:
(1)有哪些因素(变量或条件)
(2) 每个因素有哪几个水平(变量或条件的取值)
(3) 为了满足整齐可比性,选择一个合适的正交表
(4) 把变量的值映射到表中(建议第1行是全真或全假)
(5) 把每一行的各因素水平的组合做为一个测试用例
(6) 加上你认为可疑且没有在表中出现的组合
正交的原则:两两组合
正交表也是为了设计组合用例的一种方法
2、经验测试方法
(1)错误推测法
也叫错误猜测法,就是根据经验猜想,已有的缺陷,测试经验和失败数据等可能有什么问题并依此设计测试用例
(2)异常分析法
系统异常分析法就是针对系统有可能存在的异常操作、软硬件缺陷引起的故障进行分析,依此设计测试用例。(主要针对系统的容错能力、故障恢复能力进行测试。)
(3)随机测试法
随机测试随机测试指的是测试中的所有的输入数据都是随机生成的,其目标是模拟用户的操作。(真实环境中,尤其是软件刚刚发布时,会有成千上万的人在上面乱敲乱试;因此在发布软件前,用模拟用户的随机测试就可能发现其它方式漏掉的软件缺陷)
例:
a、没有事前写好用例或者准备,没有经验的人,随机去测试份方法
b、一个领导测试视察软件,点击软件功能
3、白盒测试方法
定义:白盒测试技术也叫代码测试,结构测试,逻辑测试,透明测试,检查程序内部结构及路径是否符合规格说明,是否符合其代码规范
测试方法:
(1)路径覆盖
a.独立路径覆盖
b.z径覆盖(循环)
(2)判断覆盖
(3)条件覆盖
(4)判断、条件覆盖
(5)条件组合覆盖
(6)语句覆盖
3、详解每种设计用例方法
(1)语句覆盖;
语句覆盖:指设计若干个测试用例,使得程序运行时,每个可执行语句至少被执行一次。
(2)判断覆盖(也称“分支覆盖”);
判断覆盖:指设计若干个测试用例,使得程序运行时,每个判断条件的真假分支至少被执行一次。
(3) 条件覆盖;
条件覆盖:指设计若干个测试用例,使得程序运行时,每个判断条件中的每个判断式的真、假值至少被执行一次。
(4)判断、条件覆盖;
指设计若干个测试用例,使得程序运行时,每个判断条件中真、假值分支至少被执行一次,且每个判断条件的内部判断式的真、假值至少被执行一次
(5) 条件组合覆盖;
条件组合覆盖:指设计若干个测试用例,使得程序运行时,每个判断条件的内部判断式的各种真假组合都至少被执行一次;是逻辑覆盖测试中“覆盖能力”最强的。
(6)路径覆盖
A:独立路径覆盖
即覆盖所有的独立路径的测试,所谓独立路径应至少包含一条在其它路径中从未有过的语句。
B:Z路径覆盖
是一种将实际项目中复杂的程序减少其循环次数的路径覆盖方法,即:不考虑循环体实际需要执行多少次,只考虑通过循环体0次和1次这两种情况。
白盒测试优缺点:
优点:
1.深入程序内部,测试粒度较细。
2.是测试用例设计方法的组成部分,也是黑盒测试方法的有力补充。
3.为自动化测试与性能测试奠定基础。
缺点:
1.过分关注代码本身,容易偏离SRS实际需求
2.对相应的编程语言要求较高
3.人力成本较大
(二)、使用各种测试方法思路
1、使用场景法先将测试主流程和次要流程用例写出来 (xmind图,发红包流程)
2、根据每个节点使用等价类、边界值进行设计用例 (金额:0.01 ,200)
3、遇到组合情况用:判定表、因果图、正交表来设计用例 (金额、个数、祝福语、封面 )
4、在将状态的变化使用状态迁移法设计用例(发红中、发送失败、发送成功)
5、再根据自己的经验追加测试用例,考虑异常测试用例
(三)用例分类:测试
功能测试用例、
边界值测试用例
状态转换的测试用例
异常测试测试用例
性能测试用例
安全测试用例
(四)优化测试用例:
利用设计测试用例的10种方法不断的对测试用例进行分解与合并

浙公网安备 33010602011771号