一、认识基本术语
1、动态测试 :通过运行软件的组件或系统来测试软件
2、静态测试:对组件的规格说明书进行评审,对静态代码进行走查
3、正式评审:对评审过程及需求文档的一种特定评审
4、度量:测量所使用的方法或标准
5、评审员:参与评审的人
6、记录:参与评审的人
7、技术评审:同行间对技术进行的评审,目的是技术实现达成共识
8、走查:由文档作者逐步陈述文档内容,以收集信息并对内容达成一致
9、复杂性:
系统或组件的设计或内部结构比较复杂, 导致难以理解,维护或验证的程度
10、控制流:执行组件或系统的一系列顺序的路径
11、表示数据对象的顺利或状态发生变
化的过程
12、控制流图的概念
13、控制流图(CFG,Controlflowgraph)也叫控制流程图,是一个过程或程序的抽象表现
14、圈复杂度: 程序中独立路径的数量,可以衡量一个组件模块的判定结构的复杂程度
圈复杂度计算公司:
案例:
if (x>100&&y>500) then
score=score+1
else if (x>=1000||z>5000)then
score=score+2
圈复杂度
(1)圈复杂度=区域数
全复杂度:3
(2)圈复杂度=边数-节点数+2
7 -6+2=3
(3)圈复杂度=判定节点+1
2+1=3
=================================
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4ae94e7da8eaae8fd310d85fcb8463cb.png)
一、等价类:
(1)定义指某个输入域的集合,在集合个输入的条件都是等效。
(2)等价类划分为2种情况:
有效等价类:对程序规格说明有意义的、合理 的输入数据
无效等价类:对程序规格说明无意义的、不合 理的输入数
(3)小结:等价类设计用例覆盖的原则:
•每个用例尽可能多的覆盖多个有效的等价类
• 每个用例只能覆盖一个无效等价类
(4)等价类划分的设计用例思路:
- 找输入条件
- 为每个输入条件找有效、无效等价类
- 为每个等价类编号
- 用最少的用例覆盖最多的有效等价类
- 每一个无效等价类都是一个用例
- 并非所有有效等价类都有无效
- 等价类的覆盖可以重复覆
=======================================
案例-练习: 现有一个档案管理系统,容许用户通过输入年月对档案文件进行 检索,系统对查询条件年月的输入限定为1990年1
月~2049年12月,并规定:日期由6位数字字符组成,前4位表示年,后2位表示月
常见的能够划分等价类的地方: - 数值范围
- 重复次数
- 字符串长度
- 字符串组中字符的个数
- 文件命名
- 文件大小
- 屏幕的颜色种类
- 超时时
==================================
等价类的优缺点 优点:是考虑了单个输入域的各类情况, 避免了盲目或随机选取输入数据的不完整 性和覆盖的不稳定性。
缺点:方法虽然简单易用,但是没有对组 合情况进行充分的考虑。需要结合其他测 试用例设计的方法进行补充。比如边界
================================
atm机取款等价类
qq
8
1、7839453 有效
2、1234 无效 等价类 小于5位
3、134567890123456 无效等价类 大于13位
4、aabb1235 非纯数字 无效等价类
===========================================
边界值:
(1)在软件中边界值测试方法师发现错误能力最强的一种
(2)边界点大的讲解:
上点:边界上的点
离点:离上点最近的点u
内点:在域范围内的点
边界条件分析:
- 输入条件明确了一个值的取值范围,或规定了值的个数
- 输入条件明确了一个有序集合
- 边界值分析原则
- 如果输入(输出)条件规定了取值范围,则应该 以该范 围的边界内及边界附近的值作为测试用例
- 如果输入(输出)条件规定了值的个数,则用最 大个数,最小个数,比最小个数少一,比最大个 数多一的数作为 测试数据
- 如果程序规格说明中提到的输入或输出是一个有 序集合, 应该注意选取有序集合的第一个和最后 一个元素作为测 试数据
(1)测试11位手机号:
11位
10位(小于位)
12位(大于11位)
(2)花呗还款输入框100-5000金额
闭区间:
上点: 100 5000
内点:101-4999
离点: 99 5001
开区间:
上点: 100 5000
内点:102-4998
离点: 101 4999
根据实际情况设计用例
===========================================
判断表
(1)判定表定义:分析和表达
分析和表达多逻辑条件下的执行不同操作的情况
条件桩 条件项
动作桩 动作项
(2)结构:由4个部分组成
1)条件桩(condition stub):列出问题的 所有条件(通常条件次序无关紧要)。
2)条件项(condition entry):列出针对 它条件的取值(所有情况下的真假值)
3)动作桩(action stub):列出问题规定 可采取的动作(顺序无约束)。
4)动作项(action entry):列出条件各种情况的应采取的 动作
(3)创建步骤:
1)确定规则的个数:若有N个条件,每一个条件下有2个值,则有2^n种规则。
2)列出所有条件桩与动作桩。
3)输入条件项。
4)输入动作项得到初始判定表。
5)简化(合并相似规则)。
6)编写测试用例
案例:
案例2:
案例1:
对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理……”。
理解:1、 功率大于50马力的机器 和维修记录不全(优先)
2、已运行10年以上的机器(优先)
备注:条件3个 2的3次方=8次, 8次可以覆盖所有的组合情况
案例:
判定表的作用: 利用判定表将复杂的问题按照各种可能的 情况全部列举出来,能针对不同逻辑条件 的组合值,分别执行不同的操作
3、扫雷讲解
扫雷游戏:链接
网站1:(没有问号)http://www.minesweeper.cn/
网站2:https://saolei123.com/
===================================
场景法:
定义:场景法主要是针对测试场景类型的,顾也称场景流程分析法
举例说明:
1》人事考勤系统:离职流程有哪些?
2》网购商品流程有哪些?
流程分析步骤:
- 画出业务流程图
注:描述正常流程和异常流程 - 确定条件分支(功能路径)
注:设计路径的优先级 - 确认测试路径
注:考虑路径覆盖率 - 选择数据构造用例
注:选数据要结合等价类边界值分析
========================================================
作业1:(用xmind画图)
针对ATM机的取款流程进行测试
其基本流程如下: - 用户向ATM插卡,验证卡
- 输入密码,ATM机验证密码
- 输入金额,系统会验证金额
- 出钞,并且数据库将帐户中的金额减去
- 用户拿钱
- 选择退卡
- ATM机恢复初始状态
========================================================
状态迁移法:
定义:
通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为
订机票案例1:
l向航空公司打电话预定机票—>此时机票信息处于
“完成”状态
l顾客支付了机票费用后—>机票信息就变为“已支付”
状态
l旅行当天到达机场后,拿到机票后—>机票信息就变
为“已出票”状态
l登机检票后—>机票信息就变为“已使用”状态
l在登上飞机之前任何时间可以取消自己的订票信息,
如果已经支付了机票的费用,则还可以得到退款,取
消后—>订票信息处于“已被取消”状态
作业:
作业:
红-黄-红
红-黄-绿
红绿-红
红-绿-黄
================================================
因果图:
(1)定义:因果图提供了一个把规格转化为判定表的系统化方法,从该图中可以产生测试数据。其 中,原因是表示输入条件,结果是对输入执 行的一系]列计算后得到的输出。因果图方法最终生成的就是判定表。它适合于检查软件输入条件的各种组合情况。
(2)因果图中的4种基本关系
在因果图的基本符号中,图中的左结点ci 表示输入状态(或称原因),右结点ei表示输出 状态(或称结果)。ci与ei取值0或1,0表示某 状态不出现,1则表示某状态出现。
Ø恒等:若 c1 是1,则 e1 也为1,否则 e1 为0。
Ø非:若 c1 是1,则 e1 为0,否则e1为1。
Ø或:若 c1 或 c2 或 c3 是1,则 e1 为1,否则 e1 为0。
Ø与:若 c1 和 c2 都是1,则 e1 为1,否则 e1 为0。
(4)
因果图的优点/缺点 优点:
- 等价类法尽管各个输入条件可能出错的情况都考虑 到了,但是多个输入条件组合起来出错的情况却被 忽略了
- 因果图法能够帮助我们按照一定步骤,高效的选择 测试用例,设计多个输入条件组合用例
- 因果图分析还能为我们指出,程序规格说明描述中 存在什么问题
缺点: - 输入条件与输出结果的因果关系,有时难以从软件 需求规格说明书得到
- 即使得到了这些因果关系,也会因为因果关系复杂 导致因果图非常庞大,测试用例数目及其庞大
案例:
一个处理单价为5角钱的饮料的自 动售货机。
其规格说明如下:
若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。
若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。
因果图:
案例2:
例;
某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。
解答:
根据题意,原因和结果如下:
原因:
1——第一列字符是A;
2——第一列字符是B;
3——第二列字符是一个数字。
结果:
21——修改文件;
22 ——给出信息L;
23——给出信息M。
其对应的因果图如下:
11为中间节点;考虑到原因1和原因2不可能同时为1,因此在因果图上施加E约束。
案例:
因果图转换判定表的方法:
6. 将因果图中的所有条件(因)填入判定表 的条件桩中;
7. 将因果图中的所有动作(果)填入判定表 的动作桩中;
8. 根据因果图确定各个条件组合对应的动作, 并且确定判定表中各个规则的条件项和动 作项,在需要时优化判定表。
==========================================
正交试验法:
定义:正交试验设计法,是从大量的试验点中挑选出适量的、有代表性的点,应用依据迦罗瓦
理论导出的“正交表”,合理的安排试验的一种科学的试验设计方法。
(2)正交常用的术语
指标:通常把判断试验结果优劣的标准叫做试验的指标
因子:所有影响试验指标的条件
水平值:影响试验因子的取值
(3)案例:
因子 :3个
水平值:2个
2的3次方 =222=8种方法
实验法:
公式: 实验数=因子*(水平数-1)+1
4 =3*(2-1)+1
实验法:7*(2-1)+1=8
(4)
正交表特点:
1》整齐可比性
在同一张正交表中,每个因素的每个水平出现的次数是完全相同的。由于在试验中每个因素的每个水平与其它因素的每个水平参与试验的机率是完全相同的,这就保证在各个水平中最大程度的排除了其它因素水平的干扰。
2》均衡分散性
在同一张正交表中,任意两列(两个因素)的水平搭配(横向形成的数字对)是完全相同的。这样就保证了试验条件均衡地分散在因素水平的完全组合之中,,因而具有很强的代表性,容易得到好的试验条件。
(5)
用正交表设计测试用例的步骤:
(1)有哪些因素(变量或条件)
(2) 每个因素有哪几个水平(变量或条件的取值)
(3) 为了满足整齐可比性,选择一个合适的正交表
(4) 把变量的值映射到表中(建议第1行是全真或全假)
(5) 把每一行的各因素水平的组合做为一个测试用例
(6) 加上你认为可疑且没有在表中出现的组合
正交的原则:两两组合
==============================
经验测试方法:
(1)基于经验的测试技术之错误推测法
错误推测法也叫错误猜测法,就是根据经验猜想,已有的缺陷,测试经验和失败数据等可能有什么问题并依此设计测试用例
(2)基于经验的测试技术之异常分析法
系统异常分析法就是针对系统有可能存在的异常操作、软硬件缺陷引起的故障进行分析,依此设计测试用例。主要针对系统的容错能力、故障恢复能力进行测试
(3)基于经验的测试技术之随机测试
系统异常分析法就是针对系统有可能存在的异常操作、软硬件缺陷引起的故障进行分析,依此设计测试用例。主要针对系统的容错能力、故障恢复能力进行测试
============================
总结:
错误推测法
异常分析法
随机测试
============================
一、使用各种测试方法思路
1.在任何情况下都必须使用边界值分析方法,经验表明用这种方法设计出测试用例发现程序错误的能力最强;
2.必要时用等价类划分方法补充一些测试用例;
3.用错误推测法再追加一些测试用例(依靠经验);
4.如果程序的功能说明中含有输入条件组合情况,则可选用因果图/判定表;
5.对业务流程场景清晰的系统,使用场景法贯穿;
6.检查已设计的测试用例的覆盖程度;
7.最后要考虑异常分析,再进行综合使用
============================
二、测试用例的设计步骤
1.构造根据设计规格得出的基本功能测试用例
2.边界值测试用例
3.状态转换测试用例
4.错误猜测测试用例
5.异常测试用例
6.其它测试类型测试用例(如性能测试,易用性测试,安全测试等)
================
三、优化测试用例的方法
1.利用设计测试用例的10种方法不断的对测试用例进行分解与合并
2、在测试时利用发散思维构造测试用例