设计用例的方法总结
一、软件测试中术语
1.动态测试(dynamic testing):通过运行软件的组件或 系统来测试软件
例如:一辆汽车发动并行使测试
2.静态测试(static testing):对组件的规格说明书进行 评审,对静态代码进行走查
例如:一辆汽车为发动未行驶,查看外观、颜色、组成部分
3.正式评审(formal review):对评审过程及需求文档的 一种特定评审,比如:用例评审
a、组内评审(项目组中的成员:产品,开发,测试)
b、交叉评审(测试同事成员:测试a、测试b,测试c)
4、评审员(reviewer):参与评审的人
5、度量:测量所使用的方法或标准 (准入,准出)
6.记录员:记录评审会议上的会议纪要
7.技术评审(Technical Review):同行间对技术进行的评审,目的是技术实现达成共识
8.走查(Walkthrough):由文档作者逐步陈述文档内容,以收集信 息并对内容达成一致
9.复杂性(complexity):系统或组件的设计或内部结构比较复杂, 导致难以理解,维护或验证的程度
10.圈复杂度(Cycloramic complexity):程序中独立路径的数量。可 以衡量一个组件模块的判定结构的复杂程度。
例如:软件复杂程度
11.控制流(Control Flow):执行组件或系统的一系列顺序的路径
12.数据流(Data Flow):表示数据对象的顺利或状态发生变化的过程
例如:状态变法:待支付》已支付,代发货》已发货,代签收
13.控制流图
控制流图(CFG,Controlflowgraph)也叫控制流程图,是一个过程或程序的抽象表现。
14.圈复杂度
程序中独立路径的数量,可以衡量 一个组件模块的判定结构的复杂程 度。
三种计算方式:
a.圈复杂=区域数
b.圈复杂度=边数-节点数+2
c.圈复杂度=判定节点+1
案例:
if (x>100&&y>500) then
score=score+1
else if (x>=1000||z>5000)then
score=score+2
讲解:
a.圈复杂=区域数
v=3 (两块区域+1块外面区域)
b.圈复杂度=边数-节点数+2
v=7-6+2=3
c.圈复杂度=判定节点+1
v=2+1=3
案例:
a.圈复杂=区域数
b.圈复杂度=边数-节点数+2
c.圈复杂度=判定节点+1
比较:
if (x>100&&y>500) then
score=score+1
else if (x>=1000||z>5000) then
score=score+2
else
score=score+3
end if
黑盒设计测试用例方法
1、等价类,边界值,判定表,因果图,正交表,场景 法,状态迁移法
2、错误推测法,异常分析法,随机测试
白盒测试设计用例方法
1、语句覆盖
2、判断覆盖
3、条件覆盖
4、判断条件覆盖
5、路径覆盖(独立路径覆盖,z路径)
等价类:
定义:指某个输入域的集合,在集合中各个输 入的条件都是等效的。(空格,不输入,0是三个等价类)
有效等价类:对程序规格说明有意义的、合理 的输入数据
无效等价类:对程序规格说明无意义的、不合 理的输入数据
等价类设计用例覆盖的原则:
(1)每个用例尽可能多的覆盖多个有效的等价类
(2)每个用例只能覆盖一个无效等价类
等价类划分的设计用例思路:
找输入条件
为每个输入条件找有效、无效等价类
为每个等价类编号
用最少的用例覆盖最多的有效等价类
每一个无效等价类都是一个用例
并非所有有效等价类都有无效
等价类的覆盖可以重复覆盖
常见的能够划分等价类的地方:
数值范围
重复次数
字符串长度
字符串组中字符的个数
文件命名
文件大小
屏幕的颜色种类
超时时间
等价类的优缺点
优点:是考虑了单个输入域的各类情况, 避免了盲目或随机选取输入数据的不完整 性和覆盖的不稳定性。
缺点:方法虽然简单易用,但是没有对组 合情况进行充分的考虑。需要结合其他测 试用例设
计的方法进行补充。比如边界值
边界值
一、边界点定义:
(1)边界上的点
(2)离点:离上点最近的点(即上点左右两边最邻近的点)
(3)内点:在域范围内的点:
(4)
边界条件分析:
输入条件明确了一个值的取值范围,或规定了值的个数
输入条件明确了一个有序集合
(5)
边界值分析原则
如果输入(输出)条件规定了取值范围,则应该 以该范围的边界内及边界附近的值作为测试用例
如果输入(输出)条件规定了值的个数,则用最 大个数,最小个数,比最小个数少一,比大个 数多一的数作为测试数据
如果程序规格说明中提到的输入或输出是一个有 序集合,应该注意选取有序集合的第一个和最后 一个元素作为测试数据
备注:边界值是发现bug能力最强的一种测试方法
判定表
1、判定表定义:分析和表达多逻辑条件下的执行不同操作的情况
2、作用:对组合情况设计用例
利用判定表将复杂的问题按照各种可能的 情况全部列举出来,能针对不同逻辑条件 的组合值,
分别执行不同的操作。
3、组成部分:
1)条件桩(condition stub):列出问题的 所有条件(通常条件次序无关紧要)。
2)条件项(condition entry):列出针对 它条件的取值(所有情况下的真假值)
3)动作桩(action stub):列出问题规定 可采取的动作(顺序无约束)。
4)动作项(action entry):列出条件各种情况的应采取的 动作
创建步骤:
1)确定规则的个数:若有N个条件,每一个条件下有2个值,则有2^n种规则。
2)列出所有条件桩与动作桩。
3)输入条件项。
4)输入动作项得到初始判定表。
5)简化(合并相似规则)。
6)编写测试用例
判定表的作用:
利用判定表将复杂的问题按照各种可能的 情况全部列举出来,能针对不同逻辑条件 的组合值,分别执行不同的操作。
场景法
(1)定义:场景法主要是针对测试场景类型的,顾也称场景流程分析法
(2)流程分析:是将软件系统的某个流程看成路径,用路径分析的方法来设计测试用例。根据流程的顺序依次进行组合,使得流程的各个分支都能走到
状态迁移法:
(1)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为
(2)状态迁移图设计测试用例步骤:
1.画出状态迁移图
2.通过状态迁移图出状态转换树
3.从状态转换树推导出测试路径
4.根据测试路径编写合法(正常)测试用例或非法
(异常)测试用例
注意:保证从状态转换树的根节点到每个叶节点的每
一条路径都至少设计出一个测试用例
正交试验(仅作了解)
(1)定义:
正交试验设计法,是从大量的试验点中挑选出适量的、有代表性的点,应用依据迦罗瓦理论导出的“正交表”,合理的安排试验的一种科学的试验设计方法。
正交表特点:
1》整齐可比性
在同一张正交表中,每个因素的每个水平出现的次数是完全相同的。由于在试验中每个因素的每个水平与其它因素的每个水平参与试验的机率是完全相同的,这就保证在各个水平中最大程度的排除了其它因素水平的干扰。
2》均衡分散性
在同一张正交表中,任意两列(两个因素)的水平搭配(横向形成的数字对)是完全相同的。这样就保证了试验条件均衡地分散在因素水平的完全组合之中,,因而具有很强的代表性,容易得到好的试验条件
用正交表设计测试用例的步骤:
(1)有哪些因素(变量或条件)
(2) 每个因素有哪几个水平(变量或条件的取值)
(3) 为了满足整齐可比性,选择一个合适的正交表
(4) 把变量的值映射到表中(建议第1行是全真或全假)
(5) 把每一行的各因素水平的组合做为一个测试用例
(6) 加上你认为可疑且没有在表中出现的组合
正交的原则:两两组合
因果图:(仅作了解)
(1)定义:
因果图提供了一个把规格转化为判定表的系统化方法,从该图中可以产生测试数据。其 中,
原因是表示输入条件,结果是对输入执 行的一系列计算后得到的输出
(2)作用:
因果图方法最终生成的就是判定表。它适合于检查软件输入条件的各种组合情况
因果图的优点/缺点
优点:
等价类法尽管各个输入条件可能出错的情况都考虑 到了,但是多个输入条件组合起来出错的情况却被 忽略了
因果图法能够帮助我们按照一定步骤,高效的选择 测试用例,设计多个输入条件组合用例
因果图分析还能为我们指出,程序规格说明描述中 存在什么问题
缺点:
输入条件与输出结果的因果关系,有时难以从软件 需求规格说明书得到
即使得到了这些因果关系,也会因为因果关系复杂 导致因果图非常庞大,测试用例数目及其庞大
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步