510 likes | 603 Views
§7.4 黑盒测试的测试用例设计. 7.4.1 等价类划分法 把所有可能的输入数据 ( 有效的和无效的 ) 划分成若干个等价的子集 ( 称为等价类 ) , 使得每个子集中的一个典型值在测试中的作用与这一子集中所有其它值的作用相同 . 可从每个子集中选取一组数据来测试程序. 7.4.1 等价类划分法. 例 1: 某城市电话号码由三部分组成 地区码:空白或 3 位数字 前 缀:非 ‘ 0 ’ 或 ‘ 1 ’ 开 头的三位数字 后 缀: 4 位数字 例 2: 标识符由字母开头 , 后跟字母或数字的任意组合构成,
E N D
§7.4黑盒测试的测试用例设计 7.4.1 等价类划分法 把所有可能的输入数据(有效的和无效的)划分成若干个等价的子集 (称为等价类), 使得每个子集中的一个典型值在测试中的作用与这一子集中所有其它值的作用相同. 可从每个子集中选取一组数据来测试程序
7.4.1 等价类划分法 例1:某城市电话号码由三部分组成 地区码:空白或3位数字 前 缀:非‘0’或‘1’开 头的三位数字 后 缀:4位数字 例2:标识符由字母开头,后跟字母或数字的任意组合构成, 有效字符数为8个 最大字符数为80个
如何划分等价类? 有效等价类(合理等价类) 无效等价类(不合理等价类)
划分等价类的规则 (讲义P144) (1)如果输入条件代表一个范围, 可定义一个有效等价类和两 个无效等价类。 例 输入条件规定:项数可从1到999 1 999 无效 等价类 < 1 有效 等价类 无效 等价类 > 999
划分等价类的规则: (2)如果输入条件代表集合的某个元素,则可定义一个有效等价类和一个无效等价类。
划分等价类的规则: (3)如规定了输入数据的一组值,且程序对不同输入值做不同处理,则每个允许的输入值 是一个有效等价类,并有一 个无效等价类(所有不允许的 输入值的集合)。
划分等价类的规则: (4)如果规定了输入条件必须遵守的规则,则可划分一个有效等 价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
划分等价类的规则: (5)如规定了输入数据是整型,则可划分出正整数、零、负整数三个有效等价类。
划分等价类的规则: (6)如已划分的等价类各元素在 程序中的处理方式不同,则应 将此等价类进一步划分成更小的等价类。
用等价类划分法设计测试用例步骤: (1)形成等价类表,每一等价类规定 一个唯一的编号; (2)设计一测试用例,使其尽可能多 地覆盖尚未覆盖的有效等价类, 重复这一步骤,直到所有有效等 价类均被测试用例所覆盖; (3)设计一新测试用例,使其只覆盖 一个无效等价类,重复这一步骤 直到所有无效等价类均被覆盖;
用等价类划分法设计测试用例 例:某城市电话号码由三部分组成 地区码:空白或3位数字 前 缀:非‘0’或‘1’开 头的三位数字 后 缀:4位数字
第一步:电话号码等价类划分 输入条件 有效等价类 无效等价类 空白(1) 3位数字(2) 有非数字字符 (5) 少于3位数字 (6) 多于3位数字 (7) 地区码 有非数字字符 (8) 起始位为‘0’(9) 起始位为‘1’(10) 少于3位数字 (11) 多于3位数字 (12) 从200到999 之间的3位数字(3) 前 缀 有非数字字符 (13) 少于4位数字 (14) 多于4位数字 (15) 后 缀 4位数字(4)
第二步:确定测试用例 对表中4个有效等价类可公用 下面两个测试用例: 测试数据 测试范围 期望结果 ( )276-2345 (635)805-9321 等价类(1)(3)(4) 等价类(2)(3)(4) 有效 有效
第二步:确定测试用例 对表中11个无效等价类应选择 11个测试用例: 测试数据 测试范围 期望结果 无效等价类(5) 无效等价类(6) 无效等价类(7) . . . (15) 无效 无效 无效 . . . (20A)123-4567 (33 )234-5678 (7777)345-6789 . . . 本例的15个等价类至少需要13个测试用例
例:对招干考试系统“输入学生成绩”子模块设计测试用例例:对招干考试系统“输入学生成绩”子模块设计测试用例 招干考试分三个专业,准考证号第一位为专业代号,如: 1-行政专业, 2-法律专业, 3-财经专业. 行政专业准考证号码为:110001~111215 法律专业准考证号码为:210001~212006 财经专业准考证号码为:310001~314015
例:准考证号码的有效等价类: (1) 110001 ~ 111215 (2) 210001 ~ 212006 (3) 310001 ~ 314015 无效等价类: (4) - ~ 110000 (5) 111216 ~ 210000 (6) 212007 ~ 31000 (7) 314016 ~ +
等价类划分即把输入空间分解成一系列子域,软件在一个子域内的行为应是等价的。等价类划分即把输入空间分解成一系列子域,软件在一个子域内的行为应是等价的。 软件错误分为两类:计算错误 域错误 • 针对计算错误的测试方法 • 针对域错误的测试方法:测试域边界 划定的正确性
7.4.2 边界值分析法(讲义P146) 边界值分析法与等价类划分法区别 (1)边界值分析不是从某等价类中随便 挑一个作为代表,而是使这个等价 类的每个边界都要作为测试条件。 (2)边界值分析不仅考 虑输入条件,还 要考虑输出空间 产生的测试情况 测试内点 被测试 子 域 测试外点
边界值分析设计测试用例原则 (1)如输入条件代表以a和b为边界 的范围,测试用例应包含a、b、 、略大于a和略小于b的值。 (2)如输入条件代表一组值,测试 用例应当执行其中的最大值和 最小值,还应测试略大于最大 值和略小于最小值的值。
边界值分析设计测试用例原则 例:邮件收费规定 1~5 kg收费2元 则应对: 0.9,1, 5,5.1 kg 或0.99,1, 5,5.01 kg 设计测试用例。
边界值分析设计测试用例原则 例:一个输入文件可有1~255个记录则可分别设计有: 1个、255个、0个、256个记录的输入文件
边界值分析设计测试用例原则 (3)如规格说明中提出输入输出的有序集(顺序文件、有序表等),取有序集的第一个和最后一个元素做测试用例。 (4)如程序数据结构有预定的边界,应测试其边界的数据项。 例:程序中定义一数组,其元素下标的下界是0,上界是100,则应选择达到这个数组下标边界的值,如0与100作为测试用例。
(2)如输出条件规定了取值范围 取边界上下浮动值做测试用例。 例: 每日保险扣除额(输出项)在0~1165.25 元,则应设计测试用例使其恰好产生0元和1165.25元的结果, 此外还应考虑设计结果为负值或 >1165.25元的测试用例。 (如: -0.01元和1165.26元) 由于输入值的边界不与输出值的边界相对应,所以要检查输出值的边界及产生超出输出值值域的结果不一定可能。
7.4.3 错误推测法 (讲义P147) (错误推测法 error guessing) 根据经验来设计测试用例的方法 例举出程序中可能有的错误和容易发生错误的特殊情况,根据它门选择测试方案
7.4.4 因果图法 因果图适合于描述对于多种输入条件的组合,相应产生多个动作的形式来设计测试用例。因果图方法最终生成的是判定表。
因果图方法实例 某电力公司有A、B、C、D四类收费标准, 并规定: 居民用电 <100度/月 按A类收费 ≥100度/月按B类收费 动力用电 <10000度/月,非高峰,B类收费 ≥10000度/月,非高峰,C类收费 <10000度/月, 高峰,C类收费 ≥10000度/月, 高峰,D类收费
用因果图表明输入和输出间的逻辑关系 1 A ∧ I1 ∧ B ∨ 2 I3 ∧ 3 I2 C ∨ ∧ ∧ I4 4 ∧ D 5
把因果图转换为判定表 1 2 3 4 5 6 组合条件 1 1 1 0 0 0 0 条件 (原因) 2 0 0 1 1 1 1 3 1 0 4 1 0 1 0 5 0 0 1 1 A 1 0 0 0 0 0 动作 (结果) B 0 1 1 0 0 0 C 0 0 0 1 1 0 D 0 0 0 0 0 1 测试用例
为判定表每一列设计一个测试用例: 条件 测试用例 预期结果 组合 (输入数据) (输出动作) 1列 居民电,90度/月 A 2列 居民电,110度/月 B 3列 动力电,非高峰,8000度/月 B 4列 动力电,非高峰,1.2万度/月 C 5列 动力电, 高峰,0.9万度/月 C 6列 动力电, 高峰,1.1万度/月 D
用因果图法生成测试用例的步骤 (1) 分析哪些是原因,哪些是结果,给 每个原因、结果一个标识。 (2) 分析语义,找出原因与结果、原因 与原因之间的关系,画出因果图。 (3) 在因果图上标明约束或限制条件。 (4) 把因果图转化为判定表 。 (5) 根据判定表每一列设计测试用例。
因果图的基本符号 原因 结果 e c 恒等c出现,则e出现 e 非c出现,则e不出现 c c1 e 或c1、c2中有一个出 现,则e出现 ∨ c2 c1 e ∧ 与c1、c2中都出 现,e才出现 c2
因果图的约束符号 从输入条件考虑,有四种约束 a 异约束原因a,b不能 (互斥)同时成立 E b a 或约束原因a,b,c至少 (包含)有一个成立 I b c a 唯一约束原因a,b必有, 且仅有一个成立 O b
因果图的约束符号 a 要求约束当a出现, b必须也出现 R b 从输出(结果)考虑,还有一种约束: a 强制约束a成立, (屏蔽)b必不成立 ( a是1,b必须是0, 而当a为0时,b值不定) M b
因果图方法实例1: 某软件规格说明中规定: 输入两个字符, 当第一个字符是A或B,且第二个字符是数字时修改文件。 若第一个字符不是 A,也不是B 时,输出错误信息S,若第二个字符不是数字时,输出错误信息P。
分析规格说明并编号: 原因是: 1-第1个字符是A 2-第1个字符是B 3-第2个字符是数字。 1 约束E 2 (1,2不能同时成立) 结果是: 11-修改文件。 12-输出错误信息S。 13-输出错误信息P.
因果图的实例 1 12 E 6 ∨ 2 ∧ 11 3 13
因果图转换的判定表 1 2 3 4 5 6 7 8 组合条件 1 1 1 1 1 0 0 0 0 条件 原因 2 1 1 0 0 1 1 0 0 3 1 0 1 0 1 0 1 0 11 1 0 1 0 0 0 动作 结果 12 0 0 0 0 1 1 13 0 1 0 1 0 1 A3 B8 X6 A* BB CC 测试用例
因果图转换的判定表分析 判定表所有条件组合数:23 =8 第1、2列条件组合不可能出现, 针对第3~8列设计测试用例如下: 条件组合测试用例 预期结果 (输入数据) (输出动作) 3列 A3 修改文件 4列 A* 5列 B8 6列 BB 信息P 7列 X6 信息S 8列 CC 信息S,P
因果图方法实例2: 某电力公司有A、B、C、D四类收费标准, 并规定: 居民用电 <100度/月 按A类收费 ≥100度/月按B类收费 动力用电 <10000度/月,非高峰,B类收费 ≥10000度/月,非高峰,C类收费 <10000度/月, 高峰,C类收费 ≥10000度/月, 高峰,D类收费
列出输入条件和输出动作并编号: 输入条件(原因) 输出动作(结果) 1-居民用电 A- A类计费 2-动力用电 B- B类计费 3-<100度/月 C- C类计费 4-<10000度/月 D- D类计费 5-高峰用电
用因果图表明输入和输出间的逻辑关系 1 A ∧ I1 ∧ B ∨ 2 I3 ∧ 3 I2 C ∨ ∧ ∧ I4 4 ∧ D 5
把因果图转换为判定表 1 2 3 4 5 6 组合条件 1 1 1 0 0 0 0 条件 原因 2 0 0 1 1 1 1 3 1 0 4 1 0 1 0 5 0 0 1 1 A 1 0 0 0 0 0 动作 结果 B 0 1 1 0 0 0 C 0 0 0 1 1 0 D 0 0 0 0 0 1 测试用例
为判定表每一列设计一个测试用例: 条件 测试用例 预期结果 组合 (输入数据) (输出动作) 1列 居民电,90度/月 A 2列 居民电,110度/月 B 3列 动力电,非高峰,8000度/月 B 4列 动力电,非高峰,1.2万度/月 C 5列 动力电, 高峰,0.9万度/月 C 6列 动力电, 高峰,1.1万度/月 D
§7.5针对专门环境和应用的测试 7.5.1 GUI测试 常见GUI测试指南: 对于窗口 对于菜单和鼠标操作 对于数据项
7.5.2 C/S体系结构的测试 • 整体C/S测试策略(三个不同层次) • 客户端应以“分离的”模式被测试 (不考虑服务器和底层网络的运行) • 客户端软件和关联的服务器端应用被一起测试(网络运行不被明显考虑) • 完整的C/S体系结构(包括网络运行和性能)被测试
C/S常用测试方法 • 客户端应用功能测试 • 服务器测试(协调和数据管理功能、性能) • 数据库测试 • 事务测试 • 网络通信测试
7.5.3 实时系统测试 可采用以下四步策略: (1) 任务测试 (2) 行为测试 (3) 任务间测试 (4) 系统测试
(1) 任务测试 (task testing) 对每一个任务进行单独测试 (白盒、黑盒测试),发现逻辑和功能上错误,不能发现定时上和行为上错误 。
(2)行为测试(behavioral testing) • 用CASE工具创建应用系统模型,模拟实时系统行为。 • 按类测试各种事件(如中断、控制 信号、数据)。 • 测试过的事件以随机次序、随机频 率送给系统,检查软件行为方面的错误.
(3)任务间测试(intertask testing) • 检查与时间有关错误。如用不同数据速率、处理负载 测试相互通信的异步任务。 • 通过消息队列或数据存储测试 任务间的通信来找出数据存储区错 误的范围。