测试技术和技巧
![]()
一、术语:
动态测试: 通过运行软件的组件或 系统来测试软件 (软件在运行中测试)
静态测试:对组件的规格说明书进行 评审,对静态代码进行走查 (软件在静止:代码,文档)
![]()
正式评审:对文档的评审 (测试工作中最多就是“用例评审”)
度量:测量所使用的方法或标准 (达到要求衡量)
评审员:参加评审的人员
记录员:记录评审会议上的会议纪要
技术评审:同行间对技术进行的评审,目的是技术实现达成共识
走查:由文档作者逐步陈述文档内容,以收集信 息并对内容达成一致
复杂性:系统或组件的设计或内部结构比较复杂, 导致难以理解,维护或验证的程度 (可理解为:软件难不难)
圈复杂度(Cycloramic complexity):程序中独立路径的数量。可 以衡量一个组件模块的判定结构的复杂程度。(重点:衡量一个软件复杂度)
控制流(Control Flow):执行组件或系统的一系列顺序的路径
数据流(Data Flow):表示数据对象的顺利或状态发生变化的过程 (举例:选择商品(待支付),订单,确认订单,支付订(已支付)),待发货,已发货,签收订单(待签收))
控制流程图:也叫控制流程图,是一个过程或程序的抽象表现
圈复杂度:
程序中独立路径的数量,可以衡量 一个组件模块的判定结构的复杂程 度
三个公式:
1、圈复杂度=区域数
2、圈复杂度=判定节点+1 (具有判断功能的节点)
3、圈复杂度=边数-节点+2
----------------------------------------------------------------------------------------------------
用例设计方法:
黑盒测试方法:(10种)
![]()
白盒测试方法:(5种)
![]()
一、等价类设计用例方法:
等价类:指某个输入域的集合,在集合中各个输 入的条件都是等效的
通常等价类划分为2种情况:
有效等价类:对程序规格说明有意义的、合理 的输入数据 (qq登录成功:账号,密码,都正确)
无效等价类:对程序规格说明无意义的、不合 理的输入数据(登录不成功:1、密码错误,2
账号错误,3、账号和密码多错4、密码为空,5,账号为空)
等价类划分举例:
• 规定了输入值的范围或值的个数(如:0<a<100或输入6-10个字符)
• 输入值为布尔值(如:真或假)
• 规定了输入数据的一组值(如 文化程度:初中、高中、大学)
• 规定了输入规则时,可以划分出一个有效的等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
等价类划分的设计用例思路:
1. 找输入条件
2. 为每个输入条件找有效、无效等价类
3. 为每个等价类编号
4. 用最少的用例覆盖最多的有效等价类
5. 每一个无效等价类都是一个用例 (重点)
6. 并非所有有效等价类都有无效
7. 等价类的覆盖可以重复覆盖 (重点)
小结:等价类设计用例覆盖的原则:
1、每个用例尽可能多的覆盖多个有效的等价类
2、每个用例只能覆盖一个无效等价类
案例:
![]()
![]()
![]()
![]()
常见的能够划分等价类的地方:
1. 数值范围 (如:1990-2049年这是范围)
2. 重复次数 (密码错误次数3次)
3. 字符串长度 (6位数字)
4. 字符串组中字符的个数 (已输入最多输入8个汉字)
5. 文件命名(图片上图.png)
6. 文件大小 ( 微信上传100m,不能上传)
7. 屏幕的颜色种类(柔和,明亮,)
8. 超时时间 (外卖订单,支付倒计时)
![]()
边界值设计用例方法:
![]()
例如:
闭区间
设置密码2-8位 (上点:2 , 8)
内点:3,4,5,6,7
离点:1,9
开区间
设置密码2-8位 (上点:2 , 8)
内点:4,5,6
离点:3,7
![]()
边界条件分析:
1. 输入条件明确了一个值的取值范围,或规定了值的个数
2. 输入条件明确了一个有序集合
边界值分析原则
1. 如果输入(输出)条件规定了取值范围,则应该 以该范围的边界内及边界附近的值作为测试用例
2. 如果输入(输出)条件规定了值的个数,则用最 大个数,最小个数,比最小个数少一,比最大个 数多一的数作为测试数据
3. 如果程序规格说明中提到的输入或输出是一个有 序集合,应该注意选取有序集合的第一个和最后 一个元素作为测试数据
手机号11位: 上点11位, 10位(1~10),12位
输入金额:100~5000 上点(100,5000)内点(101-4999),离点(99,5001)
数据的小数点:保留两位小数(上点3.12)(离点3.122)(内点 :3.1)
判定表:(主要是组合情况进行设计用例)
![]()
![]()
对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理……”。这里假定,“维修记录不全”和“优先维修处理”均已在别处有更严格的定义;请建立判定表。
理解:1、 功率大于50马力的机器 和维修记录不全(优先)
2、已运行10年以上的机器(优先)
2**3=8种
![]()
![]()
因果图:
![]()
因果图最终转换成判定表
![]()
举例:恒等:没钱----穷 , 非:有钱-----穷
或:有车,有房,有存款, 随便满足一个条件 ,就是有钱
与:有车,有房,有存款 ,满足三个条件,才能算有钱
异E:有存款,有取款 ,两个选择任选一个选择项,只能选择1个
或i:有车,有房,有存款 ,最少有1个选择,不能同时为0
唯一:有存款,有取款 两个选择任选一个选择项,必须有一个选项为1
要求:有车,有房 ,可以理解为:有车就必须有房,有房必须有车,
强制:有车,有房 可以理解为:经济压力大的时,选择买车就不能买房,买房就不能买车
![]()
最主要把因果关系找出来
案例:
![]()
![]()
我们理解下:
![]()
![]()
![]()
理解:
比如:1、第一个条件都为1,是不存在的情况
2、条件:满足1,2,4 ,中间结果:满足11,12,13,14 ,结果:是23,24
![]()
![]()
重点:
![]()
案例:
某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。
解答:
1) 根据题意,原因和结果如下:
原因:
1——第一列字符是A;
2——第一列字符是B;
3——第二列字符是一数字。
结果:
21——修改文件;
22 ——给出信息L;
23——给出信息M。
2) 其对应的因果图如下:
11为中间节点;考虑到原因1和原因2不可能同时为1,因此在因果图上施加E约束。
![]()