软件测试目录 → → 软件测试过程模型 ← ← → → 软件测试原则 ← ← → → 测试用例介绍 ← ← → → 黑盒测试用例设计方法 ← ← → → 如何选择用例设计方法来完成用例的设计 ← ← → → 软件缺陷的详解 ← ← 还在持续更新中……
思考一个问题: 做加法器功能测试时,测试了1+1,1+2,1+3和1+4之后,还有必要测试l+5和1+6吗,能否放心地认为它们是正确的?
要测试?因为不测试存在缺陷 不用测试?因为不能进行穷举测试
这就引入了测试用的设计方法 ???????????
测试用例设计常用方法
1.等价类划分法
1.1 等价类划分法原理
- 把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例
- 每一类的代表性数据在测试中的作用等价于这一类中的其他值,如果某一类中的一个例子发现了错误,这一等价类中的其他例子也能发现同样的错误。
- 反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会查出错误
1.2 等价类划分法原则
- 在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类
一个文本框规定,输入字符6~18位。 有效等价类:范围内个位数 无效等价类:小于6位;大于18位
- 在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类
请输入11位手机号 有效等价类:11位 无效等价类:不是11位
- 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类
布尔量:表示 “真” 或 “假”
- 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类
登陆中输入用户名和密码
- 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
用户名要求6~18,由字母、数字、下划线组成:字母|区分大小写:以大写字母开头。 有效等价类:由字母、数字、下划线组成:字母|区分大小写:以大写字母开头 无效等价类:不符合要求的
- 在确知己划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进—步地划分为更小的等价类
1.3 例子
以百度注册为例 用户名:设置后不可更改;中英文均可;最多14个英文或7个汉字s;(用户名不可重复;不可为空;)
将等价类划分组成表格分析:
有效等价类 | 数据 | 无效等价类 | 数据 |
---|
中文、英文混合 | 一个IronMan | 数字、特殊符号 | 123456 | 14个英文 | OneIronMan | 英文超过14个 | OneTwoThreeFourFiveIron | 不能为空 | Iron | 空 | (null) | 不能重复 | TwoIronMan | 使用重复数据进行测试 | TwoIronMan | 7个中文 | 一个钢铁侠 | 中文超过7个 | 一个两个三个钢铁侠 |
2.边界值分析法
2.1 边界值分析法原理
- 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据
- 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据
- 分析规格说明,找出其他可能的边界条件
2.2 边界值选择原则
- 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据
- 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据
- 根据规格说明的每个输出条件,使用前面的原则①
- 根据规格说明的每个输出条件,应用前面的原则②
- 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例
- 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。
2.3 例子
文本框只能输入 6 ≤ x ≤ 12 的整数 边界值分析法:应该输入 5,6,7 和 11,12,13
文本框只能输入 6 < x < 12 的整数 边界值分析法:应该输入 6,7,8 和 10,11,12
文本框输入字符的个数要求是不大于150字 边界值分析法:输入字符范围0 ≤ 150 ,应该输入0,149,150,151个字符
3.因果图法
3.1 因果图法原理
- 因果图法是一种适合于描述对于多种输入条件组合的测试方法
- 根据输入条件的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例的方法
- 它适合于检查程序输入条件涉及的各种组合情况。
例如:必须昵称、密码、手机号都正确,且同意服务协议情况下才能注册
2.2 因果图法步骤
第一步:根据功能说明书中规定的原因和结果之间的关系画出因果图 恒等 :原因A成立,结果B一定成立 非 :原因A成立时,结果B一定不成立 或 :原因A、B、C三者只要有一个成立,结果就一定成立 与 :原因A、B、C都成立,结果D才会出现
第二步:根据功能说明在因果图中加上约束条件
其中互斥、包含、唯一、要求时对原因的约束,屏蔽是对结果的约束。他们的含义如下 互斥 :表示不同时为1,即a,b,c中至多只有一个1 包含 :表示至少有一个1,即a,b,c中不同时为0 唯一 :表示a,b,c中有且仅有一个1 要求 :表示若a=1,则b必须为1。即不可能a=1且b=0 屏蔽 :表示若a=1,则b必须为0
3.3 例子
有一个饮料自动售货机(处理单价为5角钱)的控制处理软件,它的软件规格说明如下。
- 若投入5角钱的硬币,按下“橙汁”或“啤酒”的按钮,则相应的饮料就送出来。
- 若投入1元钱的硬币,同样也是按“橙汁”或“啤酒”的按钮,则自动售货机在送出相应饮料的同时退回5角钱的硬币
分析原因和结果: 因果图使用中的局限性: 当原因和结果很多的时候,他们之间的关系连线就会很多,导致因果图的可读性变差。因此用作局部的小功能(原因和结果不是很多的时候〉分析。
列出所有的原因和结果的列表:
4.判定表法
4.1 判定表发原理
判定表是分析和表达多逻辑条件下执行不同操作的情况的工具。它由以下几个内容组成:
条件桩 (Condition Stub) :列出了问题得所有条件。通常认为列出的条件的次序无关紧要。动作桩 (Action stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。条件项 (Condition Entry) :列出针对它左列条件的取值。在所有可能情况下的真假值。动作项 (Action Entry):列出在条件项的各种取值情况下应该采取的动作。
4.2 建立判定表的步骤
4.3 例子
需求:订购单的检查。
- 如果金额超过500元,又未过期,则发出批准单和提货单;
- 如果金额超过500元,但过期了,则不发批准单;
- 如果金额低于500元,则不论是否过期都发出批准单和提货单,在过期的情况下还需要发出通知单。
分析条件和动作:
写入条件桩、动作桩、条件项、动作项:
对判定表进行简化和优化: 不管金额高低,只要未过期,就会发送批准单和提货单。(在测试时间不充足的情况,可以二选一)
适合使用判定表设计测试用例的条件:
- 规格说明以判定表的形式给出,或很容易转换成判定表
- 条件的排列顺序不影响执行哪些操作
- 规则的排列顺序不影响执行哪些操作
- 当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则
- 如果某一规则要执行多个操作,这些操作的执行顺序无关紧要
5.场景法
5.1 场景法原理
现在的软件几乎都是用事件触发来控制流程的。测试时,可以生动地描绘出事件触发时的情景,有利于设计测试用例,同时使测试用例更容易理解和执行。
基本流 :软件功能按照正确的事件流实现的一条正确流程。通常一个业务仅存在一个基本流,且基本流仅有一个起点和一个终点
备选流 :除了基本流之外的各支流,包含多种不同的情况。
场景列表 : 场景1基本流 场景2基本流备选流1 场景3基本流备选流1备选流2场需4基本流备洗流3 ……
5.2 例子
银行取钱 基本流:插卡——输入密码——……取卡 备选流:
- 卡片不是银行卡
- 卡片不是银联卡
- 密码输错一次
- 密码输错两次,第三次输入正确
- 密码输错三次,冻结账号或者吞卡
- 选择存款服务
- 选择查询服务
- 选择转账服务
- 选择修改密码服务
- 选择取款金额
- 选择其他金额
- 账户金额不足
- ATM机没钱了
- 账户取款金额达到取款机的当日取款上线
- 账户取款金额达到账户当日取款交易上限
- 取款机掉线了
- 取款机停电了
- ……
场景设计 场景1:基本流 场景2:基本流 ?备选流1 场景2:基本流 ?备选流4 场景3:基本流 ?备选流5 场景4:基本流 ?备选流11 ?备选流14 场景……
tips:每一个场景都是一个测试用例
6.正交实验法
6.1 正交实验法原理
概念:正交实验法就是利用排列整齐的表-正交表来对试验进行整体设计、综合比较、统计分析,实现通过少数的实验次数找到较好的生产条件,以达到最好效果。
这种试验设计法是从大量的试验点中挑选适量的具有代表性的点,利用已经造好的表格-正交表来安排试验并进行数据分析的方法。
基本思想:
- 在一项试验中,把影响试验结果的量称为试验因素(因子),简称因素。在试验过程中,每一个因素可以处于不同的状态或状况,把因素所处的状态或状况,称为因素的水平,简称水平。
- 每列中不同数字出现的次数相等。这一特点表明每个因素的每个水平与其它因素的每个水平参与试验的几率是完全相同的,能有效地比较试验结果并找出最优的试验条件。
- 在任意2列其横向组成的数字对中,每种数字对出现的次数相等。这个特点保证了试验点均匀地分散在因素与水平的完全组合之中。
6.2 正交实验法实现的基本步骤
- 确定因素:这里的因素是指对软件运行结果有影响的软件
1.1 确定因素的取值范围或集合(该步是为步骤3做准备的) 1.2 因素的取值范围是指软件输入的取值范围或集合以及可用的硬件资源 - 确定每个因素的水平
2.1 根据因素的取值范围或集合,采用等价类划分、边界值分析以及其他软件测试技术,在 2.2 每个因素的取值范围或集合内挑选出有效等价类、无效等价类、正好等于、刚刚大于或刚刚小于边界值等有代表性的测试值 - 选择正交表
3.1 根据确定的因素和水平,选择适合的正交表 3.2如果没有合适的正交表可用或需要的测试用例个数太多,要对因素和水平进行调整
6.3 正交表
正交表 :一种特制的表,一般的正交表记为
m 是水平数,k 是因素数,n 是需要进行实验的行数 行数 :正交表中的行的个数,即试验的次数,也是通过正交实验法设计的测试用例的个数 因素数 :正交表中列的个数,即要测试的功能点。 水平数 :任何单个因素能够取得的值的最大个数,即要测试功能点的输入值
6.4 例子
有一个工业产品,其生产工艺受到操作方式、温度、洗涤时间三个因素的影响,并且每个因素都有三种可能的取值,具体如下所示,请设计试验组合。 完全排列组合:3 * 3 * 3 = 27
设计正交表: 每一列中,同一个数字出现的次数相等(3次) 任意两列中,同一个数字对出现的次数相等(1次)
tips:使用正交设计助手获得正交表 ,当然如果你线性代数很强,喜欢手算就当我没说
7.功能图法
7.1 功能图法概念
功能图法又叫做状态迁徙图
来源:在遇到有事务流或由于某种条件成立导致状态改变的软件时,如何进行测试用例的设计就比较麻烦。
状态迁徙图法的目标: 设计足够多的测试用例达到对系统状态的覆盖 、状态-条件组合的覆盖 以及状态迁移路径的覆盖
7.2 功能图法步骤
- 列出所有可能的输入事件,以ip N的方式命名(N为1,2,3,4……)
- 把软件的打开的初始状态,定义为“空闲”状态
- 在“空闲”状态上加所有可能的输入(只加一次!)
- 为上一步产生的所有新状态,分别加所有可能的输入(只加一次!)
- 循环执行上一步
- 直到再没有任何新状态产生,列出所有的状态,生成状态表
- 组合任意可能的状态组合,写出相应的测试用例
7.3 例子
以QQ登录界面为例,说明功能的变迁:
1)识别出可以进行的操作: ??IP1:输入账号 ??IP2:输入密码 ??IP3:点击登录 ??IP4:点击关闭按钮
2)定义QQ登录界面为 空闲 状态。
3)给空闲状态加操作 产生了新的状态(QQ号已输入)
针对性的状态进行分析(第二轮): 产生了新的状态(QQ号、密码已输入)
继续进行状态分析(第三轮): 虽然得到了一个全新界面(状态),但是和空闲状态发生了 “隔断 ”,因此将其视为空闲状态的结束。可以结束分析过程
4)将状态变化过程列表化:
8.其他用例设计方法介绍
8.1 测试大纲法
一种着眼于需求的方法 为列出各种测试条件,将需求转换为大纲的形式 1)特点:着眼于需求。进行详细的需求分析,将其转化为思维导图(树形结构) 2)无需用例设计。一般从根节点开始分析,到叶节点为止。这样的一条路径就是一条测试用例。 3)一般用于快速的测试和过程记录。用例一般进行后补。
8.2 探索性测试法
1)基于测试人员经验与直觉的测试方法 2)是对测试用例设计的有效补充 3)探索性测试也必须生成测试用例
8.3 随意性测试(猴子测试)
1)一种没有书面测试用例、记录期望结果、检查列表、脚本或指令的测试
2)缺点: ???测试往往不太真实 ???不能达到一定的覆盖率 ???许多测试都是冗余的 ???需要使用同样的随机数才能重建测试
|