软件测试第二章单元测试2

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

续:详细的等价类划分

考虑对输入日期的处理: M1={month: month有30天} M2={month: month有31天} M3={month: month是2月} D1={day: 1 ≤day ≤28} D2={day: day=29} Y1={year: year=2000} D3={day: day=30} Y2={year: year是闰年} D4={day: day=31} Y3={year: year是平年}
黑盒测试
黑盒测试被称为功能测试或数据驱动测试。在测试时,把被 测程序视为一个不能打开的黑盒子,在完全不考虑程序内部 结构和内部特性的情况下进行。 采用黑盒测试的目的主要是在已知软件产品所应具有的功能 的基础上,进行: (1)检查程序功能能否按需求规格说明书的规定正常使用, 测试各个功能是否有遗漏,检测性能等特性要求是否满足。 (2)检测人机交互是否错误,检测数据结构或外部数据库访 问是否错误,程序是否能适当地接收输入数据而产生正确的 输出结果,并保持外部信息(如数据库或文件)的完整性。 (3)检测程序初始化和终止方面的错误。

(1)划分等价类-1
Year Month Day的有效值区间定义如下:
M1={month: 1≤month ≤12} D1={day: 1 ≤ day ≤31} Y1={year: 1912 ≤year ≤2050}

(1)划分等价类-2

无效等价类是: M2={month: month<1} M2={month: month>12} D2={day: day<1} D3={day: day>31} Y2={year: year<1912} Y3={year: year>2050}
x2
g f e a b c d x1
(2)强一般等价类测试 特点:每一个有效等价类要选择至少 一个测试用例
x2
g f e a b c d x1
(3)弱健壮等价类测试 对于无效输入: 测试用例只使用 一个无效值,其余值都是有效的。
x2 g
f
e a
b
c
d
x1
(4)强健壮等价类测试 每个有效等价类和无效等价类都至少要选 择一个测试用例
黑盒测试 称为功能性测试或数据驱动测试。
等价类划分法的思想-1

等价列划分设计方法是把所有可能的输 入数据,即程序的输入域划分成若干部 分(子集),然后从每一个子集中选取 少量具有代表性的数据作为测试用例。
等价类划分法的思想-2




定义:将程序的输入域划分为若干部分,然后从每 个部分中选取少数代表性数据当作测试用例。 原因:由于实现穷举测试的不可能性,只有从大量 的可能数据中选取一部分作为测试用例。 效果:经过类别划分后,每一类的代表性数据在测 试中的作用都等价于这一类中的其他值。 手段:在设计测试用例时,在需求说明的基础上划 分等价类,列出等价表,从而确定测试用例。
非数值
等价类划分步骤



(1)先考虑输入数据的类型(合法型和 非法型) (2)再考虑数据范围(合法型中的合法 区间和非法区间) (3)画出示意图,区分等价类 (4)为每一个等价类编号。
等价类的划分原则
(1)按照区间划分——在输入条件规定
了取值范围或值的个数的情况下,可以确 定一个有效等价类和两个无效等价类。
输入数据
地区码 空白 前缀 123 后缀 4567
预期输出 接受(有效)
覆盖等价类
1, 3, 4 2, 3, 4
2
3 4 5 6 7 8 9 10 11 12 13
123
20A 33 1234 123 123 123 123 123 123 123 123
805
123 234 234 2B3 013 123 23 2345 234 234 234
NextDate函数的弱健壮等价类测 试用例
测试用例 month
Test1 Test2 Test3 Test4 Test5 Test6 Test7 6 -1 13 6 6 6 6
day
15 15 15 -1 32 15 15
year
预期输出
1912 1912.6.16 2005 month不在有效值内 2005 month不在有效值内 2005 day不在有效值内 2005 day不在有效值内 1911 year不在有效值内 2051 year不在有效值内
性别
M 5点 F 3点
婚姻
已婚 3点 未婚 5点
抚养人数
1人扣0.5点 最多扣3点 (四舍五入取整)
计算保费费率的程序
(1)分析程序规格说明中给出和隐含的对输入条件的要求, 列出等价类表(包括有效等价类和无效等价类)。 年龄:一位或两位非零整数,值的有效范围为1~99 性别:一位英文字符,只能取值‘M’或’F’ 婚姻:字符,只能取值‘已婚’或‘未婚’ 抚养人数:空白或一位非零整数(1~9) 点数 :一位或两位非零整数,值的范围为1~99 (2)根据(1)中的等价类表,设计能覆盖所有等价类的 测试用例。

练习3:NextDate函数

NextDate函数有三个变量 month,day,year的函数,输出为输入 日期下一天的日期。如:输入为 2007年7月19日,输出为2007年7月20 日。要求三个变量都为整数,且满 足:
条件1:1 ≤month ≤12 条件2:1 ≤day ≤31 条件3:1912 ≤year ≤2050
等价类表
测试用例
练习

现有一个小程序,能够求出三个在10000到+10000间整数中的最大者,程 序界面如下:
练习2:设计出三角形问题的测试用例

输入三个整数作为三边的边长构成三角 形。当此三角形为一般三角形、等腰三 角形、等边三角形时,分别作计算。用 等价类划分方法为该程序进行测试用例 设计。
例:程序输入条件为小于100大于10的 整数x,则有效等价类为10<x<100, 两个无效等价类为x≤10和x≥100。
(2)按照数值划分——在规定了一组输 入数据(假设包括 n个 输入值),并且程 序要对每一个输入值分别进行处理的情况 下,可确定 n 个有效等价类(每个值确定 一个有效等价类)和一个无效等价类(所 有不允许的输入值的集合)。
NextDate函数的强健壮等价类测试用例(部分)
测试用例 mont day h Test1 Test2 Test3 Test4 Test5 Test6 Test7 … -1 6 6 -1 6 -1 -1 … 15 -1 15 -1 -1 15 -1 … year 1918 1918 1911 2005 1911 1911 1911 … 预期输出 month不在有效值内 day不在有效值内 year不在有效值内 month,day不在有效值内 day,year不在有效值内 month,year不在有效值内 month,day,year不在有效值 内 …
(4)按照限制条件或规则划分——在规定 了输入数据必须遵守的规则或限制条件 的情况下,可确定一个有效等价类(符 合规则)和若干个无效等价类(从不同 角度违反规则)。 例:程序输入条件为取值为奇数的整数x, 则有效等价类为x的值为奇数的整数,无 效等价类为x的值不为奇数的整数。
(5)细分等价类——在确知已划分的等价类中 各元素在程序中的处理方式不同的情况下,则 应再将该等价类进一步划分为更小的等价类, 并建立等价类表。 例:程序输入条件为以字符‘a’开头、长度为8的 字符串,并且字符串不包含‘a’~ ‘z’之外的其 它字符,则有效等价类为满足了上述所有条件 的字符串,无效等价类为不以‘a’开头的字符 串、长度不为8的字符串和包含了‘a’~ ‘z’之外 其它字符的字符串。

问题:某函数F有两个变量x1,x2.要 求两输入变量的取值范围如下:
a ≤x1≤d,区间为[a,b], (b,c) ,[c,d] e ≤x2 ≤g,区间为[e,f), [f,g] x1,x2的无效区间为: x1<a, x1>d; x2<e, x2>g

Βιβλιοθήκη Baidu
(1)弱一般等价类测试

特点: 不考虑无效数据,测试用例使用每个等价类 中的一个值
常见等价类划分测试形式

针对是否对无效数据进行测试,可以将 等价类测试分为两种:


标准等价类测试(也称,一般等价类测试) 健壮等价类测试
标准(一般)等价类测试


不考虑无效数据值,测试用例使用每个 等价类中的一个值; 通常,标准等价类测试用例的数量和最 大等价类中元素的数目相等。
健壮等价类测试
等价类划分法设计测试用例的步骤
(1)确定等价类 (2)建立等价类表,列出所有划分出的等价类 (3)从划分出的等价类中按以下的3个原则设计测 试用例: A 为每一个等价类规定一个唯一的编号 B 设计一个新的测试用例,使其尽可能多的 覆盖尚未被覆盖的有效等价类,重复这一步,直 到所有的有效等价类都被覆盖为止。 C 设计一个新的测试用例,使其仅覆盖一个 尚未被覆盖的无效等价类,重复这一步,直到所 有的无效等价类都被覆盖为止。
例:程序输入x取值于一个固定的枚举类型 {1,3,7,15},且程序 中对这4个数值分别进行了处理,则有效等价类为 x=1、x=3、 x=7、x=15,无效等价类为x≠1,3,7,15的值的集合 。
(3)按照数值集合划分——在输入条件规定 了输入值的集合或规定了“必须如何”的条 件下,可以确定一个有效等价类和一个无效 等价类(该集合有效值之外)。 例:程序输入用户口令的长度必须是4位的 串,可以确定一个有效等价类是串的长度为 4,一个无效等价类长度不为4。
等价类的类型
*有效等价类:是指对于程序的规格说明来说是 合理的、有意义的输入数据构成的集合。利用 有效等价类可检验程序是否实现了规格说明中 所规定的功能和性能
*无效等价类:——是指对软件规格说明而言, 是无意义的、不合理的输入数据所构成的集合。 利用无效等价类,可以鉴别程序异常处理的情 况,检查被测对象的功能和性能的实现是否有 不符合规格说明要求的地方。
3位数字
有效等价类
空白
编号
1 2
无效等价类
有非数字字符
编号
5 6 7 8
少于3位数字
多于3位数字 有非数字字符 起始为’0’的三位数
9
10 11
前缀
200~999
3
起始为’1’的三位数 少于3位数字 多于3位数字 有非数字字符
12 13 14 15
后缀
4位数字
4
少于4位数字
多于4位数字
测试用例 编号 1


出发点考虑了无效等价类; 对有效输入,测试用例从每个有效等价类 中取一个值;对无效输入,一个测试用例 有一个无效值,其他值均取有效值; 存在问题:


规格说明往往没有定义无效测试用例的期望输 出,因此需要定义这些测试用例的期望输出; 对强类型语言没有必要考虑无效的输入。
等价类划分法

常见的等价类划分测试形式

等价类对于测试有两个重要的意义: 完备性——整个输入域提供一种形式的完 备性 无冗余性——若互不相交则可保证一种形 式的无冗余性。

如何划分等价类-1

如何划分?——先从程序的规格说明 书中找出各个输入条件,再为每个输 入条件划分两个或多个等价类,形成 若干的互不相交的子集。
如何划分等价类
案例2:

保险公司计算保费费率的程序
某保险公司的人寿保险的保费计算方式为: 投保额×保险费率 其中,保险费率依点数不同而有别,10点及10点以上保险 费率为0.6%,10点以下保险费率为0.1%;而点数又是由 投保人的年龄、性别、婚姻状况和抚养人数来决定,具体 规则如下:
年龄
20~39 40~59 6点 4点 其它 2点
x2 g
f
e a
b
c
d
x1
案例1:
1、某城市电话号码由三部分组成,分别是: 地区码—— 空白或三位数字; 前 缀—— 非‘0’或‘1’开头的三位数字; 后 缀—— 4位数字。 假定被测程序能接受一切符合上述规 定的电话号码, 拒绝所有不符合规定的电 话号码。
(1)划分等价类、列出等价类表
输入条件 地区码

举例:划分 加法器程序的等价类, 给出测试用例
给出的 测试用例 都是整数,如果输入的 是小数、字符怎么办?
只考虑了输入数据的范围,没有考虑输 入数据的类型。


考虑输入数据类型和范围
整数 数值

<1(1) 1~100(2) >100(3)
加数:
小数(4)
字母(5) 特殊字符(6) 空格(7) 空白(8)
9876
4567 5678 4567 1234 1234 1234 1234 1234 1B34 34 23345
接受(有效)
拒绝(无效) 拒绝(无效) 拒绝(无效) 拒绝(无效) 拒绝(无效) 拒绝(无效) 拒绝(无效) 拒绝(无效) 拒绝(无效) 拒绝(无效) 拒绝(无效)
5
6 7 8 9 10 11 12 13 14 15
相关文档
最新文档