第4章2 黑盒测试之等价类测试
黑盒测试用例设计技术--等价类划分法

⿊盒测试⽤例设计技术--等价类划分法本⽂通过案例的形式,详细讲解⿊盒测试⽤例设计技术中的等价类划分法。
等价类划分是⼀种典型的⿊盒测试⽅法,其原理是把程序的输⼊域划分成若⼲部分(⼦集),然后从每⼀个⼦集中选取少数具有代表性的数据作为测试⽤例。
通过等价类划分,可以在尽可能覆盖所有测试路径的前提下,⼤幅度减少测试⽤例的数⽬。
本⽂的主要内容有:等价类的概念介绍划分等价类的原则根据等价类设计测试⽤例的⽅法案例演⽰划分等价类等价类是指某个输⼊域的⼦集合。
在该⼦集合中,各个输⼊数据对于揭露程序中的错误都是等效的。
并合理的假设,测试某等价类的代表值就等于对这⼀类其它值的测试。
等价类划分有两种不同的情况:有效等价类:指对于程序的规格说明来说是合理的、有意义的输⼊数据构成的集合。
⽆效等价类:指对程序的规格说明是不合理的或⽆意义的输⼊数据所构成的集合。
对于具体的问题,⽆效等价类⾄少应有⼀个,也可能有多个。
在设计测试⽤例时,要同时考虑有效等价类和⽆效等价类,以此验证软件在正常操作和异常操作时是否都能正常运⾏。
确定等价类的6条原则:1、在输⼊条件规定了取值范围或取值的个数的情况下,可以确⽴⼀个有效等价类和两个⽆效等价类。
例1:输⼊值是学⽣成绩,输⼊形式为⽂本框,要求的输⼊范围是0~100有效等价类:0<=输⼊成绩<=100;⽆效等价类1:输⼊成绩<0;⽆效等价类2:输⼊成绩>1002、在输⼊条件规定了输⼊值的集合或者规定了“必须如何”的条件的情况下,可以确⽴⼀个有效等价类和⼀个⽆效等价类。
例2:输⼊值是⼈员性别,输⼊形式为⽂本框,要求输⼊的内容必须在集合{男,⼥}中有效等价类:性别=’男’ 或者 ‘⼥’⽆效等价类:性别=’⼈妖’3、在输⼊条件是⼀个布尔量的情况下,可以确⽴⼀个有效等价类和⼀个⽆效等价类。
例3:输⼊值是状态标识位“是否完成”,输⼊形式为单选下拉框,选择范围为{是,否}有效等价类:选项=’是’ 或者 ‘否’⽆效等价类:未进⾏选择操作4、在规定了输⼊数据的⼀组值(假设N个),并且程序要对每⼀个输⼊值进⾏处理的情况下,可以确⽴N个有效等价类和⼀个⽆效等价类。
第4章 黑盒测试 第2节 等价类测试

弱健壮等价类测试用例
Software Testing
4. 强健壮等价类测试
强健壮等价类测试:基于多缺陷假设,
从所有等价类的笛卡尔积的每一个元素 中获得测试用例
强:多缺陷假设 健壮:考虑无效值
强健壮等价类测试用例
思考:
一个变量个数为n的函数的强健壮等价类测试会产生 多少个测试用例?
Software Testing
只给b,c
未输入数
22
23
三 角 形 的 等 价 类
输入条件
有效等价类
编号 3 4 5 6 7 8 9
无效等价类
编号
a + b > c, 且a≠b≠c
构成一般 三角形 a + c > b, 且a≠b≠c
a+b<c
a+b=c a+c<b a+c=b
24
25 26 27
b + c > a, 且a≠b≠c
的输入数据所构成的集合;
无效等价类
对于程序的规格说明来说,是不合理的、没有
意义的输入数据所构成的集合;
等价类的分类
有效等价类 无效等价类
有意义的、 合理的输入 数据所组成 的集合
等价类
无意义的、 不合理的输 入数据所构 成的集合
等价类划分
程序输入条件为小于100大于10的整数x, 求其有效等价类和无效等价类。-取值范围 一个有效等价类:10<x<100; 两个无效等价类:x≤10和x≥100 程序输入条件必须由字符‘a’开头的串。取值集合 一个有效等价类:所有以‘a’开头的串 一个无效等价类:不以‘a’开头的串
表 4-2-5 三角形问题的测试用例
黑盒测试《等价类划分》-有这篇就够了

⿊盒测试《等价类划分》-有这篇就够了⼤家好,我是吉提。
在疫情消停不下来的2020年,既然不好跳槽,不好涨薪,也不好发挥创造⼒,那么就沉下⼼来,跟我⼀起,巩固软件测试基础知识。
积攒⼒量,蓄势待发。
本⽂将会详细描述“等价类划分",它是⿊盒测试最基本的⽤例设计⽅法。
⽬录:1. 定义(What)2. 为什么使⽤该⽅法?(Why)3. 如何划分等价类?(How)4. 设计测试⽤例5. 使⽤场景6. 根据测试⽤例的完整性划分7. 等价类划分注意事项8. 等价类划分的优缺点9. 实战演练1. 定义(What)等价类划分法是⼀种典型的,并且是最基础的⿊盒测试⽤例设计⽅法。
采⽤等价类划分法时,完全不⽤考虑程序内部结构,设计测试⽤例的唯⼀依据是软件需求规格说明书。
所谓等价类,是输⼊条件的⼀个⼦集合,该输⼊集合中的数据对于揭⽰程序中的错误是等价的。
从每⼀个⼦集中选取少数具有代表性的数据,从⽽⽣成测试⽤例。
等价类⼜分为有效等价类和⽆效等价类。
有效等价类代表对程序有效的输⼊,⽽⽆效等价类则是其他任何可能的输⼊(即不正确的输⼊值)。
有效等价类和⽆效等价类都是使⽤等价类划分法设计⽤例时所必须的,因为被测程序若是正确的,就应该既能接受有效的输⼊,也能接受⽆效输⼊的考验。
2. 为什么使⽤该⽅法?(Why)理想的测试,是从所有可能的输⼊中找出某个⼩的⼦集,并且是可能发现错误最多的⼦集。
即:使⽤最少的测试数据,达到最好的测试质量(最⾼性价⽐)。
这个⼦集如何确定?可以借助测试⽤例的两个特性:测试⽤例数量达到最少;某个测试⽤例要能覆盖⼤部分其他测试⽤例。
第⼆个特性就暗⽰我们,应该尽量将程序输⼊范围进⾏划分,将其划分为有限数量的等价类,这样就可以合理地假设测试每个等价类的代表性数据等同于测试该类的其他任何数据。
这两种特性形成了称为等价类划分的⿊盒测试⽅法。
因此,等价类划分是⿊盒测试最基本的⽅法。
3. 如何划分等价类?(How)在给定了输⼊或外部条件之后,等价类的划分原则如下:如果输⼊条件规定了⼀个取值范围(例如,“数量可以是1到999”),那么就应确定出⼀个有效等价类(1<数量<999),以及两个⽆效等价类(数量<1,数量>999)。
软件测试-黑盒测试-等价类划分

13
【3,4,4】
14
【3,4,3】
15
【3,3,4】
(1),(2),(3),(4),(5),(6),(14),(18)
非等边三角 (1),(2),(3),(4),(5),(6),(15),(19) 形
(1),(2),(3),(4),(5),(6),(13),(20)
课堂讲解
• 1、准考证号码 • 对招干考试系统“输入学生成绩”子模块设计测试用例。
等价类划分的细则
• ③ 在输入条件是一个布尔量的情况下,可确 定一个有效等价类和一个无效等价类。( True,False) 实例:
电源开关开(一个有效等价类、一个无效等 价类)
有效等价类:①电源开关开 无效等价类:①电源开关关
等价类划分法细则
④ 在规定了输入数据的一组值(假定n个), 并且程序要对每一个输入值分别处理的情 况下,可确立n个有效等价类和一个无效等 价类。
10
【3,4,3】
(1),(2),(3),(4),(5),(6),(15)
实例讲解
序号
11
输入值(A/B/C) 覆盖等价类编号
【3,4,5】
(1),(2),(3),(4),(5),(6),(16)
输出
非等腰三角形
12
【3,3,3】
(1),(2),(3),(4),(5),(6),(17)
是等边三角形
形
(14)
(15)
是否等边三角
形
(17)
(A>0), (B>0), (C>0), (A+B>C), (B+C>A), (A+C>B),
(A=B), (B=C), (C=A),
[黑盒测试基本方法]之等价类与边界值word精品文档8页
![[黑盒测试基本方法]之等价类与边界值word精品文档8页](https://img.taocdn.com/s3/m/ce6b5aab856a561252d36f8a.png)
测试用例设计方法之等价类划分与边界值分析1.等价类划分1.1.前言我们知道软件测试是根据软件开发各个阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例运行软件,以发现软件错误的过程。
但在设计测试用例时,往往程序的输入是不可能穷举的。
因此,我们在测试某个程序时就被限制在从所有的输入条件中挑选某个小的子集来设计测试用例。
选择这个子集的前提是必须保证子集是正确的,保证子集尽可能的发现最多的错误,保证子集能代表其他大部分的测试用例,保证子集的数量是最为合理的。
1.2.定义在前言中提到的“子集”,因为他们一个个具有代表性的集合,我们将这个“子集”称为等价类。
等价类是指某个输入域的子集合。
在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某个等价类的代表值就等于对这一类其他值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。
等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
1.3.方法应用使用等价类划分方法来做测试,主要分两个步骤:确定等价类,生成测试用例。
1.3.1.确定等价类确定等价类的过程是根据规格说明选取每一个输入条件将其划分为两个或更多的组。
一般将等价类分为两类,有效等价类和无效等价类。
有效等价类代表对程序的有效输入。
无效等价类代表的则是其他任何可能的不正确的输入。
遵循“有效”,“无效”这个两个原则我们可以设计一个等价类表,确定等价类的结果就是生成一个等价类表。
1.3.2.生成测试用例根据第一步的等价类表来生成测试用例,其过程如下:1.为每一个等价类设置一个不同的编号2.编写新的测试用例,尽可能多地覆盖那些尚未被覆盖的有效等价类,直到所有的有效等价类都被测试用例所覆盖。
也就可理解为一个测试用用例可以涵盖多个有效等价类。
黑盒测试二——等价类测试

列出等价类表:
输入条 有效等价 无效等价 件 类 类 …… ……… ……… …… …… ……… ……… ……… ………
第二步:选取测试用例。
第一步:划分等价类
启发式规则: (1) 如果规定了输入值的范围,则可划分出 一个有效的等价类(输入值在此范围内),两个 无效的等价类(输入值小于最小值或大于最大 值); 例、在程序规格说明中对输入条件有一句话: “…… 项数可以从 1到999 …… ”。 1 999 无效等价类
期,日期限制在2003年1月至2008年12月,即系统 只能对该段期间内的报表进行处理,如日期不在此 范围内,则显示输入错误信息。系统日期规定由年 、月的6位数字字符组成,前四位代表年,后两位
代表月。
用等价类划分法设计测试用例,测试程序的日 期检查功能?
例1、第一步:等价类划分 “报表日期”输入条件的等价类表 输入条件 报表日期的 类型及长度 有效等价类 无效等价类 有非数字字符 (4) 6位数字字符(1) 少于6个数字字符 (5) 多于6个数字字符 (6)
年份范围
月份范围
在2003~2008 之间 (2)
小于2003 (7) 大于2008 (8)
ቤተ መጻሕፍቲ ባይዱ
在1~12之间(3) 小于1 (9) 大于12 (10)
第二步:确立测试用例 确立测试用例的原则:
为每一个等价类规定一个唯一编号;
设计一个新的测试用例,使其尽可能多地覆 盖尚未被覆盖的有效等价类,重复这一步, 直到所有的有效等价类都被覆盖为止; 设计一个新的测试用例,使其仅覆盖一个尚 未被覆盖的无效等价类,重复这一步,直到 所有的无效等价类都被覆盖为止。
例、输入条件说明学历可为:专科、本科、硕 士、博士四种之一。 专科:有效等价类 本科:有效等价类 硕士:有效等价类 博士:有效等价类
黑盒测试——等价类划分法

实验二: 黑盒测试——等价类划分法【实验环境】Windows 10 操作系统,C,C++,C#、Java或Python语言开发环境(IDE)。
【实验类型】设计型【实验目的】1.认识黑盒测试方法中等价类划分测试方法原理2.掌握黑盒测试方法中等价类划分测试方法过程【实验内容】【实验材料】1.三角形问题问题描述:三角形问题接受三个整数,a、b和c作为输入,用作三角形的边。
程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。
作为输入:三角形的三条边必须满足如下条件:C1:1<=a<=100C2:1<=b<=100C3:1<=c<=100C4:a<b+cC5:b<a+cC6:c<a+b2.NextDate函数问题描述:NextDate是一个由三个变量(月份、日期和年份)的函数。
函数返回输入日期后边的那个日期。
作为输入:变量月份、日期和年都具有整数值,满足以下条件。
C1:1<=月份<=12C2:1<=日期<=31C3:1912<=年<=20503.佣金问题问题描述:前亚利桑那洲境内的一位步枪销售商销售密苏里州制造商制造的步枪机(lock)、枪托(stock)和枪管(barrel)。
枪机卖45美元,枪托卖30美元,枪管卖25美元。
销售商每月至少要售出一支完整的步枪,且生产限额是大多数销售商在一个月内可销售70个枪机、80个枪托和90个枪管。
每访问一个镇子后,销售商都给密苏里州步枪制造商发出一份很短的电报,通知几个枪机被售出。
这样步枪制造商就知道当月的销售情况,并计算销售商的佣金如下:不到(含)1000美元的部分为10%;1000(不含)~1800(含)美元的部分为15%;超过1800美元的部分为20%。
佣金程序生成月份销售报告,汇总售出的枪机、枪托和枪管总数,销售商的总销售额以及佣金。
黑盒测试——等价类法——三角形问题

例:输入三个整数a,b,c ,分别作为三角形的3条边(假定a,b,c在1——100之间取值。
),通过程序判断由这三条边构成的三角形是:等边三角形、等腰三角形、一般三角形或非三角形(不能构成三角形)。
问题分析:
假定a,b,c在1——100之间取值,三角形问题可以详细描述为:
输入3个整数a,b,c,分别作为三角形的三条边,要求a,b,c必须满足下列条件:
C1:a在1到100之间
C2:b在1到100之间
C3:c在1到100之间
C4:a<b+c
C5:b<a+c
C6:c<b+a
输出:
如果不满足前3个条件(C1-C3),则输出“请输入1到100之间的整数”;
如果满足前3个条件,则输出下面4种情况:
(1)如果不满足条件C4-C6中的一个,则输出“非三角形”
(2)如果三条边相等,则程序输出为“等边三角形”
(3)如果恰好有两条边相等,则输出为“等腰三角形”
(4)如果三条边都不相等,则输出为“一般三角形”
设计覆盖上述等价类的测试用例:。
04黑盒测试等价类划分

0851 3456789 显示有效输入
0851
显示有效输入
23145678
覆盖范围 1、8 1、7 2、7
2、8
为每一个无效等价类至少设计一个测 试用例
测试数据
期望结果
覆盖范围
0a34 23456789 显示无效输入
3
05 23456789
显示无效输入
4
01234 23456789 显示无效输入
5
3、设计一个测试用例,使其只覆盖一个无效等价类,重复 这一步,最终使得所有无效等价类均被覆盖。(若用一个 测试用例检测多个无效等价类,则某个无效等价类可能永 远不会被检测到,)
➢ 例如:需求规定“每类科技参考书50-100册……”如果一个测试用 例为“文艺书籍10册”,在测试中可能检测出书的类型错误,而 忽略了书的册数错误
10. 以1开头的数串
7. 以非0、非1开头的7 11. 以非0、非1开头的含有
位数串
非法字符7或者8位数串
8. 以非0、非1开头的8 12. 以非0、非1开头的小于
位数串
7位数串
13. 以非0、非1开头的大于
8位数串
为有效等价类设计测试用例
测试数据
期望结果
010 23145678 显示有效输入
023 2234567 显示有效输入
弱一般等价类
▪ 弱一般等价类:使用一个测试用例中的每个等价类(区间) 的一个变量实现(不考虑无效数据值,测试用例使用每个等 价类中的一个值称为单缺陷假设)。
▪ 若F实现为一个程序,输入两变量x1, x2拥有以下边界 a«x1«d, 区间 [a, b), [b, c), [c, d] e«x2«g, 区间 [e, f), [f, g]
黑盒测试(等价类划分)

缺陷描述 预期结果 重现步骤
1、 在VC++6.0中运行源程序 输入数据如图所示:
以下部分由BUG修改人填写 缺陷修改描述 将以下代码 if(a+b>c||a+c>b||b+c>a)cout<<"a,b,c的值不能构成三角形!"; 改成 if(a+b<c||a+c<b||b+c<a)cout<<"a,b,c的值不能构成三角形!"; 测试人 修正人 确认人 修正
23 24 25 26
0 3 0 0
0 0 4 0
5 0 0 0
9 10
3.5 4.5 5 3 4.5 5.5
15 16
无效 输入
27 28
-3 4 3 -4
5 5
33 34
11 12
3.5 4 5.5 3.5 4.5 5.5
17 18
无效 输入 无效 输入 无效 输入 无效 输入 无效 输入 无效 输入
16 17 18 19
3 4 4 3 3 4
5 5 5 6
22 23 24 25
无效 输入 无效 输入 无效 输入 无效 输入 无效 输入 无效 输入 无效 输入
34 35 36 37
3 3 3 3
1 2 1 2
5 5 1 1
40 41 42 43
20 21 22
0 4 3 0 3 4
5 5 0
26 27 28
1
输 入 条 件
输入 三个 整数
19 20 21 22 23
只给a,c 给出三个以上 a为0 一边为零 b为0 c为0 a,b为0 两边为零 b,c为0 a,c为0 三边a,b,c均为0 a<0 一边<0 b<0 c<0 a<0且b<0 二边<0 a<0且c<0 b<0且c<0 三边均<0:a<0且b<0且c<0 a+b<c a+b=c b+c<a b+c=a a+c<b a+c=b
黑盒测试--等价类划分

⿊盒测试--等价类划分1.1. 概念等价类划分法是把程序的输⼊域划分成若⼲部分(⼦集),然后从每个部分中选取少数代表性数据作为测试⽤例。
每⼀类的代表性数据在测试中的作⽤等价于这⼀类中的其他值。
1.2 等价类划分法的应⽤1 等价类是指某个输⼊域的⼦集合。
在该⼦集合中,各个输⼊数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这⼀类其它值的测试.因此,可以把全部输⼊数据合理划分为若⼲等价类,在每⼀个等价类中取⼀个数据作为测试的输⼊条件,就可以⽤少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和⽆效等价类。
有效等价类:是指对于程序的规格说明来说是合理的,有意义的输⼊数据构成的集合.利⽤有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
⽆效等价类:与有效等价类的定义恰巧相反。
设计测试⽤例时,要同时考虑这两种等价类.因为,软件不仅要能接收合理的数据,也要能经受意外的考验.这样的测试才能确保软件具有更⾼的可靠性。
2划分等价类的六⼤原则:⑴在输⼊条件规定了取值范围或值的个数的情况下,则可以确⽴⼀个有效等价类和两个⽆效等价类.例:输⼊值是学⽣成绩,范围是0~100:⑵在输⼊条件规定了输⼊值的集合或者规定了“必须如何”的条件的情况下,可确⽴⼀个有效等价类和⼀个⽆效等价类.⑶在输⼊条件是⼀个布尔量的情况下,可确定⼀个有效等价类和⼀个⽆效等价类. 布尔量是⼀个⼆值枚举类型, ⼀个布尔量具有两种状态: true 和 false 。
⑷在规定了输⼊数据的⼀组值(假定n个),并且程序要对每⼀个输⼊值分别处理的情况下,可确⽴n个有效等价类和⼀个⽆效等价类.例:输⼊条件说明输⼊字符为:中⽂、英⽂、阿拉伯⽂三种之⼀,则分别取这三种这三个值作为三个有效等价类,另外把三种字符之外的任何字符作为⽆效等价类。
⑸在规定了输⼊数据必须遵守的规则的情况下,可确⽴⼀个有效等价类(符合规则)和若⼲个⽆效等价类(从不同⾓度违反规则)⑹在确知已划分的等价类中各元素在程序处理中的⽅式不同的情况下,则应再将该等价类进⼀步的划分为更⼩的等价类3、将等价类转化成测试⽤例:按照[输⼊条件][有效等价类][⽆效等价类] 建⽴等价类表,列出所有划分出的等价类为每⼀个等价类规定⼀个唯⼀的编号.设计⼀个新的测试⽤例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这⼀步.直到所有的有效等价类都被覆盖为⽌.设计⼀个新的测试⽤例,使其仅覆盖⼀个尚未被覆盖的⽆效等价类,重复这⼀步.直到所有的⽆效等价类都被覆盖为⽌.1.3实例 +笔记笔记等价类划分3将等价类转化对于有效等价类,使其尽可能多地覆盖尚未被覆盖地有效等价类成测试⽤例使其仅覆盖⼀个尚未被覆盖的⽆效等价类2.3实例例1:⼈寿保险费率(基本保险费0.50)Xs分析: 等价类划分、边界值分析结合使⽤序号输⼊条件输⼊类型测试数据预期结果1⼩于等于0岁(<=0岁)⽆效-1警告信息235岁以下有效20计算出⽉保险费335-59岁有效51计算出⽉保险费460岁以上有效65计算出⽉保险费边界值分析法序号边界值测试数据预期结果100警告信息23535按额外保险费2.87:计算35959按额外保险费2.87:计算46060按额外保险费6.00:计算实例2免费邮箱申请:在某⽹站申请免费信箱时,要求⽤户必须输⼊⽤户名、密码及确认密码,对每⼀项输⼊条件的要求如下:⽤户名:要求为4位以上,16位以下,使⽤英⽂字母、数字、“-”、“_”,并且⾸字符必须为字母或数字;密码:要求为6~16位之间,只能使⽤英⽂字母、数字以及“-”、“_”,并且区分⼤⼩写。
黑盒测试_等价类

在输入条件规定了“必须如何”的条件情况下,可确立一 个有效等价类和一个无效等价类。
如,规定程序输入必须为数字,可确定一个有效等价类— —数字和一个无效等价类——字母。
等价类的划分原则(续)
③按照输入数值划分
在规定了输入数据的一组值(假定n个),并且程序要对每 一个输入值分别处理的情况下,可确立n个有效等价类(每 个值确定一个有效等价类)和一个无效等价类(所有不允 许的输入值的集合)。
34
案例分析-NextDate函数的等价类测试用例
确定等价类(方法一) 有效等价类: M1={月份:1≤月份≤ 12} D1={日期:1 ≤日期≤ 31} Y1={年:1912 ≤年≤ 2012} 无效等价类: M2={月份:月份<1} M3={月份:月份>12} D2={日期:日期<1} D3={日期:日期>31} Y2={年:年< 1912} Y3={年:年>2012}
b
WN1
5
5
WN2
2
2
WN3
3
4
WN4
4
1
c
预期输出
5
等边三角形
3
等腰三角形
5
三角形
2
非三角形
由于变量a,b,c没有定义有效子区间,则强一般等价类测试用例与弱一 般等价类测试用例相同。
三角形问题的弱健壮等价类测试用例
考虑a,b,c的无效值产生的以下弱健壮等价类测试用例。
测试用例 a
b
c
预期输出
WR1
除按第一条原则划分,还可进一步划分为更小的等价类,如 85~100(优),75~85(良)等。
等价类划分法的测试用例设计
黑盒测试之等价类

黑盒测试案例设计技术概述本章介绍黑盒测试的概念和进行黑盒测试的目的与意义,及关于等价类划分、边界值分析、因果图法、判定表法、正交试验法、功能图法等测试用例设计方法的原理与实现,并从测试设计说明、测试用例说明、测试程序说明三个方面介绍如何编写测试用例,最后结合一个ATM的例子体现如何设计测试用例。
测试用例设计方法软件测试是一个工程,要通过制定测试用例指导测试的实施。
<!--[if !supportLists]-->* <!--[endif]-->什么是测试用例测试用例设计:将软件测试的行为和活动,作一个科学化的组织归纳。
软件测试是有组织性、步骤性和计划性的,而设计软件测试用例的目的,就是为了能将软件测试的行为转换为可管理的模式。
测试用例就是将测试行为具体量化的方法之一。
使用测试用例的好处:<!--[if !supportLists]-->A. <!--[endif]-->在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率。
<!--[if !supportLists]-->B. <!--[endif]-->测试用例的使用令软件测试的实施重点突出、目的明确。
<!--[if !supportLists]-->C. <!--[endif]-->在软件版本更新后只需修正少部分的测试用例便可展开测试工作,降低了工作强度,缩短项目周期。
<!--[if !supportLists]-->D. <!--[endif]-->测试用例的通用化和复用化使软件测试易于开展,并随着测试用例的不断精华而提高效率。
<!--[if !supportLists]-->(1) <!--[endif]-->等价类划分法:把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例。
实践:黑盒测试之等价类案例

456
456
abc&123
abc&123
abc_123
Abc_123
提示密码错误
提示密码错误 提示密码错误
表4-6 测试用例
测试用例
用户名
密码
确认密码
预期输出
TC1 TC2 TC3
TC4
TC5 TC6 TC7 TC8 TC9 TC10
abc_2000 2000-abc
abc_123 123-abc
abc_123 123-abc
注册成功 注册成功
abc
12345678
12345678 提示用户名错误
abcdefghijk123 456
覆盖等价类 (1)(2) (3) (4) (1)(5) (1)(6)
输出信息 输入正确 输入错误 输入错误 输入错误 输入错误
案例:免费邮箱申请
例.在某网站申请免费信箱时,要求用户必须输 入用户名、密码及确认密码,对每一项输入条件 的要求如下:
用户名要求为4位以上,16位以下,使用英文 字母、数字、“-”、“_”,并且首字符必须为字 母或数字;密码要求为6~16位之间,只能使用 英文字母、数字以及“-”、“_”,并且区分大小 写。
第四章 黑盒测试及其实例设计
黑盒测试法是根据被测程序功能来进行测试,所以通常 也称为功能测试。用黑盒测试法设计测试用例,有4 种常用 技术:
等价分类法 边界值分析 错误猜测法 决策表法 因果图法
案例:命名规则
案例:报表处理系统
例:某报表处理系统要求用户输入处理报表 的日期,日期限制在2005年1月至2009年 12月,即系统只能对该段期间内的报表进 行处理,如日期不在此范围内,则显示输 入错误信息。系统日期规定由年、月的6位 数字字符组成,前四位代表年,后两位代 表月。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.等价类的特点
按划分等价类的规则划分出的等价类具有下列特点: (1) 完备性:划分出的各个等价类(子集)的并是输入/输 出的全集,即程序的定义域/值域。 (2) 无冗余性:各个等价类是互不相交的一组子集。 (3) 等价性:划分的各个子集是由等价关系决定的,即 各个输入数据对于揭露程序中的错误都是等效的。因此我 们可以从等价类中选择一个具有代表性的数据进行测试就 可以达到测试目的。
等价类的分类
有效等价类 对于程序的规格说明来说,是合理的、有意义的 输入数据所构成的集合; 无效等价类
对于程序的规格说明来说,是不合理的、没有
意义的输入数据所构成的集合;
在设计测试用例时,要同时考虑这两种
等价类。因为用户在使用软件时,有意或无
意输入一些非法的数据是常有的事情。软件
不仅要能接收合理的数据,也要能经受意外
表 4-2-5 三角形问题的测试用例
输 入 数 据 预 期 输 出 覆盖等价类
a
b
c
1
5
6
7
一般三角形
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
-5 6 6 0 5.6 6 3.5 6 — — 6 6 — — 5 6 4 6 5 7
5 6 7 8 9 10 11 12 13 14 15
(2) 根据等价类表设计测试用例, 覆盖所有的有效等价类和无效等价, 如 下表所示 表 4-2-3 电话号码测试用例
测试用例编号 1 2 3 4 5 6 7 8 9 10 11 12 13 地区码 空白 0816 B123 22 23467 0816 1234 1234 1234 1234 1234 1234 1234 输 入 数 据 前缀 523 678 523 345 345 A67 012 101 45 2234 234 234 234 后缀 6678 4567 4567 4567 4567 4567 4567 4567 4567 4567 B123 23 23456 预期结果 接受 接受 拒绝 拒绝 拒绝 拒绝 拒绝 拒绝 拒绝 拒绝 拒绝 拒绝 拒绝 覆盖等价类 1,3,4 2,3,4 5 6 7 8 9 10 11 12 13 14 15
6 0 6 -5 6 0 5.6 — 5 — 6 — 5 — 6 7 10 10 6 8
6 6 3.6 6 -2 3.5 4.5 — — 5 — 4 6 — 15 13 5 4 15 15
提示:输入 不符合要求 提示:输入 不符合要求 提示:输入 不符合要求 提示:输入 不符合要求 提示:输入 不符合要求 提示:输入 不符合要求 提示:输入 不符合要求 提示:请输 入数据 提示:请输 入数据 提示:请输 入数据 提示:请输 入数据 提示:请输 入数据 提示:请输 入数据 提示:请输 入数据 不能构成三 角形 不能构成三 角形 不能构成三 角形 不能构成三 角形 不能构成三 角形 不能构成三 角形
4.2.3 用等价类设计测试用例
1.划分等价类 首先根据输入条件或输出条件划分等价类。 2.建立等价类表 根据划分的等价类建立等价类表,如表4-2-1所示。
表 4-2-1 等 价 类 表
输入 有效等价类 无效等价类
3.选择测试用例 从等价类中选取具有代表性的数据设计测试用例。从 等价类中选择测试用例时,一般遵循下列原则: (1) 为每一个等价类规定一个唯一的编号。 (2) 设计一个测试用例,使其尽可能多地覆盖尚未覆盖
件如下: ① 正整数。 ② 三个数。 ③ 构成一般三角形。 ④ 构成等腰三角形。 ⑤ 构成等边三角形。 ⑥ 不能构成三角形。
(2) 根据输入条件的要求划分等价类,列出等价类表并编号,如 下表所示。
输入条件 有效等价 类 编号 无效等价类 编号
一边为非正 整数 正整数 三 个 正 整 数 1
a为非正整数
问题引入
等价类方法可令测试事半功倍。
举例:加法器
加法器实例(1)
加法器实例(2)——穷举测试
加法器实例(3)——等价类划分法
加法器实例(3)——等价类划分法
加法器实例(3)——等价类划分法
加法器实例(3)——等价类划分法
加法器实例(3)——等价类划分法
4.2 等 价 类 测 试
4.2.1 等价类
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
2.三角形问题
程序规定:“输入三个正整数a、b、c,分别作为三角 形的三条边长。通过程序判定是否能构成三角形。如果能 构成三角形,进一步判断三角形的类型。当此三角形为一 般三角形、等腰三角形及等边三角形时,分别作不同的操 作。”用等价类划分方法为该程序进行测试用例设计。
(1) 分析题目中给出的条件和隐含的输入要求,输入条
问题引入
测试的矛盾
从经济的角度来说,我们希望测试没有冗余;
一个好的测试用例在于能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。
问题引入
(1)你测试了1+1,1+2,1+3和1+4之后,还有必要测试1+5和
1+6吗?你能放心地认为它们正确吗?
(2)1+15与1+99999999999999999999999999999999有什么区 别呢?
b为非正整数 c为非正整数 a,b为非正整数 a,c为非正整数 b,c为非正整数
10
11 12 13 14 15 16
两边为非正 整数
三边均为非正整数 只输入一个 数
只给a
只给b 只给c
17
18 19
三个数
2
只输入两个 数
只给a,b
只给a,c 只给b,c
20
21 22
输入条件
有效等价类
编号
无效等价类
编号
a + b > c, 且a≠b≠c
3 4
a+b<c a+b=c a+c<b a+c=b b+c<a b+c=a
24 25 26 27 28 29
构成一般 三角形
a + c > b, 且a≠b≠c b + c > a, 且a≠b≠c
a = b,a ≠ c,且两边之和大 于第三边
5
6 7 8
构成等腰 三角形
注意:在寻找等价类划分时,考虑把软件具有 相似输入、相似输出、相似操作的分在一组, 这些组就是等价划分。
问题引入
举例:设计这样的测试用例,来实现一个对所有实 数进行开平方运算( y = sqrt(x) )的程序的测 试。
思考方向: 由于开平方运算只对非负实数有效,这时需 要将所有的实数(输入域x)进行划分,可以分成: 正实数、0 和 负实数。假设我们选定+1.4444代 表正实数,-2.345代表负实数,则为该程序设计 的测试用例的输入为+1.4444、 0 和 -2.345。
例:程序输入用户口令的长度必须是4位的串,可以确定一
个邮箱等价类是串的长度为4,一个无效等价类长度不为4。
(4) 在输入条件是一个布尔量的情况下,可确定一个有
效等价类和一个无效等价类。
(5) 进一步细分等价类。在确知已划分的等价类中各元
素在程序处理中的方式不同的情况下,则应再将该等价类 进一步地划分为更小的等价类。 例如:程序用于判断几何图形的形状,则我们可以首先根 据边数划分出三角形、四边形、五边形、六边形等。然后 对于每一种类型,我们可以做进一步的划分,比如三角形 可以进一步分为等边三角形、等腰三角形和一般三角形。 (6) 等价类划分还应特别注意默认值、空值、Null、零 值等的情形。
(1) 按照区间划分。在输入条件规定了取值范围或值的
个数的情况下,则可以确立一个有效等价类和两个无效等 价类。例如:程序的输入是学生成绩,其范围是0~100, 则输入条件的等价类如图4-2-1所示。 其有效等价类为:0≤成绩≤100;无效等价类为:成绩 <0,成绩>100。
图4-2-1 学生成绩的等价类
(2) 按照数值划分。
例 :在教师上岗方案中规定对教授、副教授、讲师和助
教分别处理。那么可以确定4个有效等价类:教授、副教授、 讲师和助教;1个无效等价类,它是所有不符合以上职称的
人员构成的集合。
例:输入条件要求:x==5, 答案: 有效等价类:1个x==5 无效等价类:1个:x!=5
例:程序输入x取值于一个固定的枚举 类型{1,2,4,12},且程序中对这4个数 值分别进行了处理,请问等价类如 何划分?
的考验,这样的测试才能确保软件具有更高
的可靠性。
2.划分等价类的方法
等价类测试的思想就是把全部输入数据合理划分为若 干等价类,在每一个等价类中取一个具有代表性的数据作 为测试的输入条件,这样可以用少量的测试数据取得较好 的测试效果。 在等价类测试中,划分等价类是非常关键的。如果等 价类划分合理,可以大大减少测试用例,并能保证达到要 求的测试覆盖率。那么如何划分等价类呢?一般来讲,首 先要分析程序所有可能的输入情况,然后按照下列规则对 其进行划分。
有效等价类为x=1、x=3、 x=7、x=15, 无效等价类为x≠1,3,7,15的值的集合。
解:程序输入x取值于一个固定的枚举类型{1,2,4,12},
并且程序中对这4个数值分别进行了处理,则有效等价类为 x=1、x=2、x=4、x=12,无效等价类为1、2、4、12以外的 值构成的集合。
(3) 按照数值集合划分。在输入条件规定了输入值的集合或 者规定了“必须如何”的情况下,可确立一个有效等价类和一 个无效等价类。 例,某程序中有标识符,其输入条件规定“标识符应以字母 开头……”,则可以这样划分等价类:“以字母开头者”作为 有效等价类,“以非字母开头”作为无效等价类。