1、软件测试与质量保障全册配套软件测试与质量保障全册配套 完整精品课件完整精品课件 公园拆墙透绿, 宝玉出门俏人伤 Java+3G+物联物联 网软件工程师网软件工程师 3G-iOS软件测试工程师软件测试工程师 国际软件测试工程师国际软件测试工程师 C+国际软件工程师国际软件工程师 .NET+3G云计云计 算软件工程师算软件工程师 PHP/WEB3.0互联网工程师互联网工程师 3G-Android软件工程师软件工程师 嵌入式开发工程师嵌入式开发工程师 数字艺术数字艺术UID 设计工程师设计工程师 经典著作推荐经典著作推荐 uBill Hetzel,软件测试完全指南,软件测试完全指南 (Complet
2、e Guide of Software Testing ) uGlenford J.Myers代表论著代表论著The Art of Software Testing uPaul C. Jorgensen, Software Testing A Craftsmans Approach软件软件 测试测试 什么是软件什么是软件 “臭虫臭虫”的由来的由来 人们将软件错误人们将软件错误 称为称为“臭虫臭虫”, 这是因为第一个这是因为第一个 有记载的电脑故有记载的电脑故 障是由线路上的障是由线路上的 臭虫造成的。就臭虫造成的。就 是我们通常称的是我们通常称的 “BUG”。 软件失败的术语描述软件失败的术语
3、描述 缺点(缺点(defect) 偏差偏差(variance) 谬误谬误 (fault) 失败失败(failure) 问题问题 (problem) 矛盾矛盾(inconsistency) 错误错误 (error) 特殊特殊(feature) 毛病毛病 (incident) 缺陷缺陷(bug) 异常异常 (anomaly) 软件失败的几个定义软件失败的几个定义 u错误:人类会犯错误。错误:人类会犯错误。 u缺陷:缺陷是错误的结果。缺陷:缺陷是错误的结果。 u失效:当缺陷执行时会发生失效。失效:当缺陷执行时会发生失效。 u事故:当出现失效时,可能会也可事故:当出现失效时,可能会也可 能不会呈现给用
4、户。能不会呈现给用户。 w缺陷容易被找出吗? 软件的特殊性决定了缺陷不易看到,即 “看不到”; 发现了缺陷,但不易找到问题发生的原 因所在,即“看到但是抓不到”。 软件缺陷产生的原因软件缺陷产生的原因 编制说明书 55% 设计 26% 其他 4% 编写代码 15% 编制说明书 设计 编写代码 其他 软件测试员的目标软件测试员的目标 发现软 件缺陷 测试的“成功”与“失败”就在于: 能否发现错误! 注意: 问题发现越早,解决问题的代价就越小。 缺 陷 存 在 放 大 趋 势 软件测试最致命的缺陷就是: 不不能进行彻底的测试 为什么不可能做穷举测试为什么不可能做穷举测试 循环次数0 1220 独立
5、路径数51+52+53+5211014 每个测试用例(考虑、执行、验证结果)5分钟 共需测试时间10亿年 M1 D1 D2 D3D4 M2M3M4M5M6 M7 D5 =20次 为什么不可能做穷举测试为什么不可能做穷举测试 u 若X、Y为所有可能的整数,在字长32位机上 测试: X1、Y1 Z1 Xn、Yn Zn 测试次数:n = 232232 = 264 1.84 1019 程序P X Y Z 输入 输出 Pareto原则暗示原则暗示 着测试发现的错着测试发现的错 误中的误中的80%很可很可 能起源于程序模能起源于程序模 块中的块中的20%。 u5.软件缺陷的寄生虫性软件缺陷的寄生虫性 找到
6、的软件缺陷越多,就说明软件缺陷越多找到的软件缺陷越多,就说明软件缺陷越多 原因: 程序员的疲倦 程序员往往犯同样的错误 某些软件的缺陷其实是大灾难的征兆 u6.6.避免测试自己的程序避免测试自己的程序 程序员轻易不会承认自己写的程序有错误;程序员轻易不会承认自己写的程序有错误; 程序员的测试思路有局限性,做测试时很容程序员的测试思路有局限性,做测试时很容 易受到编程思路的影响;易受到编程思路的影响; 程序员测试不具有典型性程序员测试不具有典型性 u7.7.设计周密的测试用例设计周密的测试用例 软件测试的本质就是针对要测试的内容确软件测试的本质就是针对要测试的内容确 定一组定一组测试用例测试用例
7、。 测试用例至少应包括:测试用例至少应包括: F执行测试用例前,应满足的前提条件执行测试用例前,应满足的前提条件 F输入输入 F预期输出预期输出 设计测试用例时,应当包括合理的输入条设计测试用例时,应当包括合理的输入条 件和件和不合理的输入条件不合理的输入条件。 u8.8.回归测试回归测试 程序修改后必须进行回归测试,避免引入程序修改后必须进行回归测试,避免引入 新的错误。新的错误。 u9.9.严格执行测试计划,排除测试的随意严格执行测试计划,排除测试的随意 性。性。 u10.10.确认确认BUGBUG的有效性的有效性 对测试错误结果一定要有一个确认的过程。对测试错误结果一定要有一个确认的过程
8、。 有时候测试人员提交的有时候测试人员提交的BUGBUG并不是真正的并不是真正的BUGBUG。 u11.11.妥善保存测试计划,测试用例,出妥善保存测试计划,测试用例,出 错统计和最终分析报告,为维护提供方错统计和最终分析报告,为维护提供方 便。便。 第第2讲讲 测试模型与过程测试模型与过程 本讲内容 测试层次的传统观点 软件测试模型 软件测试流程 2.1 测试层次的传统观点测试层次的传统观点 瀑布模型 需求规格说明 概要设计 详细设计 编码 单元测试 集成测试 系统测试 瀑布式生命周期 2.2 软件测试模型软件测试模型 uV模型模型 uW模型模型 uH模型模型 uX模型模型 u测试前置模型测
9、试前置模型(测试驱动模型测试驱动模型) 需求分析 概要设计 详细设计 编码 单元测试 集成测试 系统测试 验收测试 需求测试需求分析 功能测试概要设计 设计测试详细设计 单元测试编码 系统测试验收 确认测试确认 集成测试 集成 W模型模型 测试准备 测试执行 测试流程 其他流程 测试就绪点 u1.1.准备测试环境准备测试环境 u2.2.获得测试数据获得测试数据 u3 3. .测试测试脚本脚本 u4 4. .辅助辅助测试工具测试工具 输入输入 执行过程执行过程 检查过程检查过程 输出输出 u1 1)覆盖评测覆盖评测 u2)质量质量评测评测 u3)性能性能评测评测 测试人必备的素质测试人必备的素质
10、 u三心:三心:责任心,细心,耐心责任心,细心,耐心 u二意:二意:服务意识,团队合作意识服务意识,团队合作意识 应该思考的问题应该思考的问题 u测试是开发后期的一个阶段。测试是开发后期的一个阶段。 u软件测试要求技术不高,比编程容易多了软件测试要求技术不高,比编程容易多了 ,随便找一个人就可以了。,随便找一个人就可以了。 u测试要执行所有可能的输入。测试要执行所有可能的输入。 u有时间就多测试些,没时间就少测试些。有时间就多测试些,没时间就少测试些。 u软件测试是测试人员的事,与开发人员无软件测试是测试人员的事,与开发人员无 关关 u调试和测试是一样的。调试和测试是一样的。 u测试就是运行一
11、下软件看看结果对不对。测试就是运行一下软件看看结果对不对。 第第2讲讲 软件测试方法软件测试方法 1 软件测试方法软件测试方法 软 件 测 试 按阶段划分 单元测试 确认测试 系统测试 验收测试 按测试技术 灰盒测试 白盒测试 黑盒测试 是否执行程序 动态测试 静态测试 回 归 测 试 集成测试 静态与动态静态与动态 u静态静态只是检查和审阅只是检查和审阅 u动态动态运行和使用软件运行和使用软件 按按测试实施组织测试实施组织划分划分 开发方测试(开发方测试(alpha测试)测试) 用户测试(用户测试(测试)测试) 第三方测试(外包)第三方测试(外包) 测试类型测试类型 u按照企业中实际工作需要
12、,测试主按照企业中实际工作需要,测试主 要包含下面的类型要包含下面的类型: (1)功能测试)功能测试 (2)接口测试)接口测试 (3)健壮性测试)健壮性测试 (4)强度测试)强度测试 (5)压力测试)压力测试 (6)性能测试)性能测试 (7)用户界面测试)用户界面测试 (8)安全测试)安全测试 (9)可靠性测试)可靠性测试 (10)安装)安装/反安装测试反安装测试 (1111)文档测试)文档测试 (1212)恢复测试)恢复测试 (1313)兼容性测试)兼容性测试 (1414)回归测试)回归测试 软件测试方法软件测试方法 软 件 测 试 按阶段划分 单元测试 确认测试 系统测试 验收测试 按测试
13、技术 灰盒测试 白盒测试 黑盒测试 是否执行程序 动态测试 静态测试 回 归 测 试 集成测试 黑盒测试黑盒测试 u黑盒测试(黑盒测试(Black-box Testing) 软件 输入输入 输出输出 w又叫功能测试功能测试,数据驱动测试数据驱动测试或基于规格说明基于规格说明 的测试的测试。 彻底的黑盒测试彻底的黑盒测试 u例例:输入三角形的三条边长输入三角形的三条边长 黑盒测试可采用的测试用例数黑盒测试可采用的测试用例数 (设字长设字长16位位) 输入输入 输出输出 例:测试计算器的功能例:测试计算器的功能 黑盒测试的难点黑盒测试的难点 u黒盒测试的难点在于黒盒测试的难点在于如何构造有效的如何
14、构造有效的 输入输入。 由于输入空间通常是无限的,穷举测试显由于输入空间通常是无限的,穷举测试显 然行不通。然行不通。 寻找最小最重要的用例集合以精简测试复寻找最小最重要的用例集合以精简测试复 杂性。杂性。 黑盒测试方法黑盒测试方法 u黑盒测试的测试用例设计方法黑盒测试的测试用例设计方法 等价类划分等价类划分 边界值分析边界值分析 基于决策表的测试基于决策表的测试 因果图因果图 错误推测错误推测 u等价类方法可令测试事半功倍。等价类方法可令测试事半功倍。 u举例:设计测试用例,实现一个对所举例:设计测试用例,实现一个对所 有实数进行开方运算(有实数进行开方运算(f = sqrt(x))的)的
15、程序的测试。程序的测试。 2.1 等价类等价类 u划分划分 u等价类等价类 u等价类的分类等价类的分类 u确定等价类的原则确定等价类的原则 u等价类测试的分类等价类测试的分类 1) 划划 分分 u划分是指互不相交的一组子集,这些子划分是指互不相交的一组子集,这些子 集的并是整个集合。集的并是整个集合。 u划分的划分的定义定义 给定集合给定集合B,以及,以及B的一组子集的一组子集A1、 A2、An,这些子集是,这些子集是B的一个划分的一个划分 当且仅当当且仅当 u等价类测试的假设等价类测试的假设 测试某等价类的代表值,就等效于对这个等测试某等价类的代表值,就等效于对这个等 价类中其他值的测试。价
16、类中其他值的测试。 u等价类测试的思想等价类测试的思想 把全部的输入数据把全部的输入数据划分成若干个等价类划分成若干个等价类, 在每一个等价类中取一个数据在每一个等价类中取一个数据来进行测试。来进行测试。 3)等价类的分类)等价类的分类 u有效等价类有效等价类 对于程序的规格说明来说,是对于程序的规格说明来说,是合理的合理的、有有 意义的意义的输入数据所构成的集合;输入数据所构成的集合; u无效等价类无效等价类 对于程序的规格说明来说,是对于程序的规格说明来说,是不合理的不合理的、 没有意义的没有意义的输入数据所构成的集合;输入数据所构成的集合; 4) 确定等价类的原则确定等价类的原则 u(1
17、) 输入条件规定了取值范围或值的个数输入条件规定了取值范围或值的个数; ; u(2) 输入条件规定了输入值的输入条件规定了输入值的集合集合或是规或是规 定了定了“必须如何必须如何”的条件的条件; ; u(3) 输入条件是一个输入条件是一个布尔量布尔量; ; u(4)如果规定了输入数据的如果规定了输入数据的一组值一组值, , 且程序且程序 要对每一个输入值分别进行处理要对每一个输入值分别进行处理; ; u(5)规定了输入数据必须遵循的规则规定了输入数据必须遵循的规则; ; u(6)如已划分的等价类各元素在程序中的处如已划分的等价类各元素在程序中的处 理方式不同理方式不同; ; 2.2 用等价类设
18、计测试用例用等价类设计测试用例 u(1)划分等价类,形成等价类表划分等价类,形成等价类表 u(2)设计一新的测试用例,使其设计一新的测试用例,使其尽可能尽可能 多地覆盖尚未覆盖的有效等价类多地覆盖尚未覆盖的有效等价类,重,重 复这一步骤,直到所有的有效等价类复这一步骤,直到所有的有效等价类 都被覆盖为止;都被覆盖为止; u(3)设计一新测试用例,使其只设计一新测试用例,使其只覆盖一覆盖一 个无效等价类个无效等价类,重复这一步骤直到所,重复这一步骤直到所 有无效等价类均被覆盖;有无效等价类均被覆盖; u讨论对象讨论对象 一个具有两个自变量一个具有两个自变量x1和和x2的函数的函数F 输入变量输入
19、变量x1和和x2的边界以及边界内的区的边界以及边界内的区 间为:间为: Fa x1 da x1 d,区间为,区间为a, b)a, b),b, c)b, c),c, dc, d Fe x2 ge x2 g,区间为,区间为e, f)e, f), f, gf, g u讨论对象(续)讨论对象(续) 2.3 等价类测试的等价类测试的分类分类 u单缺陷与多缺陷假设产生单缺陷与多缺陷假设产生弱等价类弱等价类与与强强 等价类等价类测试之分;测试之分; u是否进行无效数据的处理产生是否进行无效数据的处理产生健壮健壮与与一一 般等价类般等价类测试之分;测试之分; u等价类测试的分类:等价类测试的分类: 弱一般等价
20、类测试弱一般等价类测试 强一般等价类测试强一般等价类测试 弱健壮等价类测试弱健壮等价类测试 强健壮等价类测试强健壮等价类测试 (1) 弱一般等价类测试弱一般等价类测试 u“单缺陷单缺陷”假设假设 失效极少是由两个或多个缺陷的同时发生失效极少是由两个或多个缺陷的同时发生 引起的引起的 u测试用例设计:测试用例设计: 选取的测试用例覆盖所有的有效等价类选取的测试用例覆盖所有的有效等价类 (只有一个缺陷)。(只有一个缺陷)。 弱一般等价类测试用例弱一般等价类测试用例 (2) 强一般等价类测试强一般等价类测试 u基于多缺陷假设基于多缺陷假设 u测试用例设计:测试用例设计: 将每个变量的有效等价类做笛卡
21、尔积,将每个变量的有效等价类做笛卡尔积, 设计测试用例覆盖笛卡尔积的每个元设计测试用例覆盖笛卡尔积的每个元 素。素。 一个变量个数为n的函数的强一般等价类测试会产生多少个测 试用例? 思考:思考: 强一般等价类测试用例 (3) 弱健壮等价类测试弱健壮等价类测试 u弱:基于单缺陷假设弱:基于单缺陷假设 u健壮:考虑无效值健壮:考虑无效值 u测试用例设计:测试用例设计: 对有效输入,使用每个有效等价类的对有效输入,使用每个有效等价类的 一个值一个值 对无效输入,测试用例将拥有一个无对无效输入,测试用例将拥有一个无 效值,并保持其余的值都是有效的效值,并保持其余的值都是有效的 弱健壮等价类测试用例
22、(4)强健壮等价类测试)强健壮等价类测试 u强:多缺陷假设强:多缺陷假设 u健壮:考虑无效值健壮:考虑无效值 从所有等价类的笛卡尔积的每一个元从所有等价类的笛卡尔积的每一个元 素中获得测试用例素中获得测试用例 强健壮等价类测试用例 2.4 案例案例 u三角形问题三角形问题 以不同的角度划分等价类:以不同的角度划分等价类: F 输出值域等价类输出值域等价类 F 输入条件(数据范围)的等价类输入条件(数据范围)的等价类 F 以以“整数相等整数相等”关系划分的等价类关系划分的等价类 F 以两边之和与第三边之间的关系以两边之和与第三边之间的关系 1. 输出值域等价类输出值域等价类 u输出值域等价类输出
23、值域等价类 R1=:有三条边有三条边a、b和和c的的等边三角形等边三角形 R2=:有三条边有三条边a、b和和c的的等腰三角形等腰三角形 R3=:有三条边有三条边a、b和和c的的不等边三角不等边三角 形形 R4=:三条边三条边a、b和和c不能构成三角形不能构成三角形 2. 输入条件的等价类输入条件的等价类 u有效等价类:有效等价类: 0a200; 0b200; 0c200; u无效等价类:无效等价类: a200, b200, c200 3. “整数相等整数相等”关系划分等价类关系划分等价类 uD1=:a b c uD2=:ab, a c uD3=:ac, a b uD4=:bc, a b uD5
24、=:a b, a c, b c 4.以两边之和与第三边之间的关系以两边之和与第三边之间的关系 划分等价类划分等价类 uD6:a = b + c uD7:b =a + c uD8:c = a + b u等价类等价类D6的进一步划分的进一步划分 D6:a b + c D6:a c, 且且abc 3 a + b b, 且且abc 4 a + c a, 且且abc 5 b + c a28 b + c = a29 构成等腰三构成等腰三 角形角形 a = b,a c,且两边之和大,且两边之和大 于第三边于第三边 6 a = c,a b,且两边之和大,且两边之和大 于第三边于第三边 7 b = c,a b,
25、且两边之和大,且两边之和大 于第三边于第三边 8 构成等边三构成等边三 角形角形 a = b = c9 三 角 形 的 等 价 类 2.5 等价类测试指导方针和观察等价类测试指导方针和观察 u1)弱形式不如对应的强形式的测试全面。)弱形式不如对应的强形式的测试全面。 u2)如果实现语言是)如果实现语言是强类型强类型,则没有必要使用,则没有必要使用 健壮形式的测试。健壮形式的测试。 u3)如果错误条件非常重要,则进行健壮形式)如果错误条件非常重要,则进行健壮形式 的测试。的测试。 u4)强等价类测试假设)强等价类测试假设变量是独立的变量是独立的,相应的,相应的 测试用例相乘会引起冗余问题。如果存
26、在依测试用例相乘会引起冗余问题。如果存在依 赖关系,则常常会生成错误测试用例。赖关系,则常常会生成错误测试用例。 2.6 黑盒测试的目标黑盒测试的目标 u黒盒测试试图发现以下类型的错误:黒盒测试试图发现以下类型的错误: 功能错误或遗漏;功能错误或遗漏; 界面错误,不美观;界面错误,不美观; 外部信息访问错误;外部信息访问错误; 初始化和终止错误初始化和终止错误 在接口上,能否正确地接受输入数据,在接口上,能否正确地接受输入数据, 能否产生正确地输出信息;能否产生正确地输出信息; 性能错误;性能错误; 本 章 小 结本 章 小 结 w等价类 w等价类分类 弱一般等价类测试 强一般等价类测试 弱健
27、壮等价类测试 强健壮等价类测试 练习练习1 u隔一日问题隔一日问题 程序有三个输入变量程序有三个输入变量month、day、year (month、day和和year均为整数值,并且满均为整数值,并且满 足:足:1month12和和1day31),分别作),分别作 为输入日期的月份、日、年份,通过程序为输入日期的月份、日、年份,通过程序 可以可以输出该输入日期在日历上隔一天的日输出该输入日期在日历上隔一天的日 期。期。例如,输入为例如,输入为2005年年11月月29日,则该日,则该 程序的输出为程序的输出为2005年年12月月1日。请用强一日。请用强一 般等价类方法进行测试。般等价类方法进行测
28、试。 练习练习2 u电话号码电话号码 某城市电话号码由三部分组成,分别是:某城市电话号码由三部分组成,分别是: 地区码地区码 空白或空白或4位数字;位数字; 前前 缀缀为三位数字,但不能为为三位数字,但不能为“0”,“1”; 后后 缀缀4位数字。位数字。 假定被测程序能接受一切符合上述规定的电话假定被测程序能接受一切符合上述规定的电话 号码,拒绝所有不符合规定的电话号码。请用号码,拒绝所有不符合规定的电话号码。请用 强一般等价类方法进行测试,设计测试用例。强一般等价类方法进行测试,设计测试用例。 动态黑盒测试动态黑盒测试等价类测试等价类测试 u用户登陆名可以包含除了、用户登陆名可以包含除了、/
29、:*? “”“”的所有字符,不能是汉字的所有字符,不能是汉字 。登陆名长度是。登陆名长度是1-20个字符和数字个字符和数字 的任意组合。写出登陆程序并创建的任意组合。写出登陆程序并创建 测试用例。测试用例。 第第3讲讲 黑盒测试黑盒测试 w等价类测试 w边界值测试 w基于决策表的测试 w因果图 1 边界值测试 w边界值分析 w健壮性测试 w最坏情况测试 w随机测试 (1) 边界值分析的基本原理边界值分析的基本原理 u边界值分析边界值分析(Boundary Value Analysis) u边界值分析关注边界值分析关注输入空间输入空间的边界,并从中的边界,并从中 标识测试用例。标识测试用例。 u
30、基本原理基本原理 错误更可能出现在输入变量的错误更可能出现在输入变量的极值附近极值附近。 常见的边界值常见的边界值 u举例举例 对对16-bit 的整数而言的整数而言 32767 和和 -32768 是边界是边界 屏幕上光标在最左上、最右下位置屏幕上光标在最左上、最右下位置 报表的第一行和最后一行报表的第一行和最后一行 数组元素的第一个和最后一个数组元素的第一个和最后一个 FC+ 语言中,语言中,int A10: A0A9 循环的第循环的第 0 次、第次、第 1 次和倒数第次和倒数第 2 次、最后一次、最后一 次次 (2) 边界值分析的基本思想边界值分析的基本思想 u在最小值、略高于最小值、正
31、常值、略低在最小值、略高于最小值、正常值、略低 于最大值和最大值处取输入变量值于最大值和最大值处取输入变量值 u表示方法表示方法min、min+、nom、max-、和、和max u例如:涉及两个变量的函数例如:涉及两个变量的函数x1,x2 X1的取值的取值x1min,x1min+,x1nom,x1max-,x1max X2的取值的取值x2min,x2min+ ,x2nom,x2max-,x2max 边界值分析的取值边界值分析的取值 “单缺陷单缺陷”假设假设 u“单缺陷单缺陷”假设假设 失效失效极少极少是由两个或多个缺陷的是由两个或多个缺陷的同时同时 发生引起的发生引起的 u“单缺陷单缺陷”假设
32、是边界值分析的关假设是边界值分析的关 键假设键假设 (3) 边界值分析测试用例边界值分析测试用例 u边界值分析获得测试用例的方法:边界值分析获得测试用例的方法: 使所有变量取正常值,只使一个变量取极使所有变量取正常值,只使一个变量取极 值;值; uX1取值:取值:x1min,x1min+,x1nom,x1max-,x1max uX2取值:取值:x2min,x2min+ ,x2nom,x2max-,x2max u两个变量函数的边界值分析测试用例两个变量函数的边界值分析测试用例 , , , , , , , , 两个变量函数边界值分析测试用例 X2 两个变量函数边界值分析测试用例 归纳基本边界值分析
33、方法归纳基本边界值分析方法 u两种方式两种方式 p通过变量的个数通过变量的个数 p通过变量的取值范围(类型)通过变量的取值范围(类型) 通过变量的个数对基本边界值通过变量的个数对基本边界值 分析方法进行归纳分析方法进行归纳 u如果有一个变量个数为如果有一个变量个数为n的函数,使除的函数,使除 一个以外的所有变量取正常值,使剩一个以外的所有变量取正常值,使剩 余的那个变量取最小值、略高于最小余的那个变量取最小值、略高于最小 值、正常值、略低于最大值和最大值值、正常值、略低于最大值和最大值 ,对每个变量都重复进行,对每个变量都重复进行 u对于一个变量个数为对于一个变量个数为n的函数,边界值的函数,
34、边界值 分析会产生分析会产生?个测试用例个测试用例 举例:三角形问题举例:三角形问题 u三角形问题描述三角形问题描述 三条边三条边a,b,c取整数值,且各边的取值范围是:取整数值,且各边的取值范围是:1, 200 u边界值分析设计测试用例边界值分析设计测试用例 每条边的取值:每条边的取值: F1, 2, 100, 199, 200 测试用例数目:测试用例数目:4n+1 F三角形问题三角形问题(n=3) :用例数为:用例数为13 测试用例测试用例abc预期输出预期输出 Test 1 Test2 Test3 Test4 Test5 60 60 60 50 50 60 60 60 50 50 1 2
35、 60 99 100 等腰三角形等腰三角形 等腰三角形等腰三角形 等边三角形等边三角形 等腰三角形等腰三角形 非三角形非三角形 Test6 Test7 Test8 Test9 60 60 50 50 1 2 99 100 60 60 50 50 等腰三角形等腰三角形 等腰三角形等腰三角形 等腰三角形等腰三角形 非三角形非三角形 Test10 Test11 Test12 Test13 1 2 99 100 60 60 50 50 60 60 50 50 等腰三角形等腰三角形 等腰三角形等腰三角形 等腰三角形等腰三角形 非三角形非三角形 (4) 边界值分析优缺点边界值分析优缺点 u边界值测试分析采
36、用了可靠性理论的边界值测试分析采用了可靠性理论的单缺单缺 陷假设陷假设。 u优点:优点:简便易行;生成测试数据的成本很低;简便易行;生成测试数据的成本很低; u局限性:局限性: 测试用例不充分;不能发现测试变量之间的依测试用例不充分;不能发现测试变量之间的依 赖关系;不考虑含义和性质赖关系;不考虑含义和性质; u结论:只能作为初步测试用例使用结论:只能作为初步测试用例使用 2 健壮性测试健壮性测试 u健壮性是指在健壮性是指在异常情况异常情况下,软件还能正常下,软件还能正常 运行的能力。运行的能力。 u健壮性有两层含义:健壮性有两层含义: 容错能力容错能力 恢复能力恢复能力 健壮性边界测试的基本
37、思想健壮性边界测试的基本思想 u健壮性测试是边界值分析的一种简单扩展,健壮性测试是边界值分析的一种简单扩展, 除了使用五个边界值分别取值,还要采用除了使用五个边界值分别取值,还要采用: 一个一个略超过最大值略超过最大值(max+)的取值的取值 一个一个略小于最小值略小于最小值(min-)的取值的取值 X2 两个变量函数的健壮性测试用例 健壮性测试的讨论健壮性测试的讨论 u健壮性测试最有意思的部分不是输入而是健壮性测试最有意思的部分不是输入而是预预 期的输出期的输出 u健壮性测试的主要价值是观察健壮性测试的主要价值是观察异常情况的处异常情况的处 理理 软件质量要素的衡量标准:软件的容错性软件质量
38、要素的衡量标准:软件的容错性 软件容错性的度量软件容错性的度量: F从非法输入中恢复从非法输入中恢复 强类型语言与异常处理强类型语言与异常处理 u 对于强类型语言,健壮性测试可能非常困难对于强类型语言,健壮性测试可能非常困难 p 例如在例如在Pascal中,如果变量被定义在特定范围内,则中,如果变量被定义在特定范围内,则 超过这个范围的取值,都会产生导致夭折正常执行的超过这个范围的取值,都会产生导致夭折正常执行的 运行时错误运行时错误 u 选择解决选择解决“健壮值健壮值”问题的方法:问题的方法: p 执行显式的范围检查并使用异常处理机制执行显式的范围检查并使用异常处理机制 p 或通过强类型来解
39、决或通过强类型来解决 u 如果采用异常处理机制,就必须进行健壮性测试如果采用异常处理机制,就必须进行健壮性测试 健壮性测试的测试用例个数健壮性测试的测试用例个数 一个变量个数为一个变量个数为n的函数的函数 的健壮性测试会产生多的健壮性测试会产生多 少个测试用例?少个测试用例? 思考:思考: 3.最坏情况测试最坏情况测试 u最坏情况测试的基本思想最坏情况测试的基本思想 边界值测试分析采用了可靠性理论的边界值测试分析采用了可靠性理论的 单缺陷假设单缺陷假设 最坏情况测试拒绝这种假设,关心最坏情况测试拒绝这种假设,关心当当 多个变量取极值多个变量取极值时会出现什么情况?时会出现什么情况? 最坏情况测
40、试用例设计方法最坏情况测试用例设计方法 u对每一个变量首先进行包含最小值、略高对每一个变量首先进行包含最小值、略高 于最小值、正常值、略低于最大值、最大于最小值、正常值、略低于最大值、最大 值值五个元素集合五个元素集合的测试,然后的测试,然后对这些集合对这些集合 进行笛卡尔积计算,以生成测试用例。进行笛卡尔积计算,以生成测试用例。 u一个变量个数为一个变量个数为n的函数的最坏情况测试会的函数的最坏情况测试会 产生产生5n个测试用例。个测试用例。 两变量函数的最坏情况测试用例两变量函数的最坏情况测试用例 X2 最坏情况与边界值分析的比较最坏情况与边界值分析的比较 u基本边界值分析测试用例是最坏情
41、况测试用基本边界值分析测试用例是最坏情况测试用 例的例的真子集。真子集。 u最坏情况测试显然更彻底最坏情况测试显然更彻底 u最坏情况测试工作量大得多最坏情况测试工作量大得多 n变量函数的最坏情况测试会产生变量函数的最坏情况测试会产生5的的n次方次方个测个测 试用例,试用例, 边界值分析只产生边界值分析只产生4n+1个测试用例个测试用例 最坏情况测试举例最坏情况测试举例(1) u三角形问题三角形问题 三条边三条边a,b,c取整数值,且各边的取值范围是:取整数值,且各边的取值范围是:1, 200 u最坏情况测试用例最坏情况测试用例 每条边的取值:每条边的取值: F1, 2, 100, 199, 2
42、00 测试用例数目:测试用例数目:5n F三角形问题三角形问题(n=3) :用例数为:用例数为125 健壮最坏情况测试健壮最坏情况测试 u对每一个变量,分别确定一个包含最对每一个变量,分别确定一个包含最 小值、略高于最小值、正常值、略低小值、略高于最小值、正常值、略低 于最大值、最大值,以及一个于最大值、最大值,以及一个略超过略超过 最大值最大值的取值,和一个的取值,和一个略小于最小值略小于最小值 的取值的取值 这样七个元素的集合,然后这样七个元素的集合,然后 对这些集合进行笛卡尔积计算,以生对这些集合进行笛卡尔积计算,以生 成测试用例成测试用例 健壮最坏情况测试的测试用例个健壮最坏情况测试的
43、测试用例个 数数 7n n一个变量个数为n的函数的健壮最坏情况 测试会产生多少个测试用例? 4 随机测试随机测试 u随机测试的基本思想随机测试的基本思想 不是永远选取有界变量的最小值、略不是永远选取有界变量的最小值、略 高于最小值、正常值、略低于最大值高于最小值、正常值、略低于最大值 和最大值,而是和最大值,而是使用随机数生成器选使用随机数生成器选 出测试用例值出测试用例值。 练习:练习:NextDate函数函数 u输入条件输入条件 1月份月份12 1日期日期31 1812 年年2012 u请用边界值分析设计测试用例请用边界值分析设计测试用例 测试用例测试用例mouth dayyear预期输出
44、预期输出 Test 1 Test2 Test3 Test4 Test5 Test6 Test7 6 6 6 6 6 6 6 15 15 15 15 15 15 15 1911 1912 1913 1975 2049 2050 2051 1911.6.16 1912.6.16 1913.6.16 1975.6.16 2049.6.16 2050.6.16 2051.6.16 Test8 Test9 Test10 Test11 Test12 Test13 6 6 6 6 6 6 -1 1 2 30 31 32 2001 2001 2001 2001 2001 2001 day超出超出131 200
45、1.6.2 2001.6.3 2001.7.1 输入日期超界输入日期超界 day超出超出131 Test14 Test15 Test16 Test17 Test18 Test19 -1 1 2 11 12 13 15 15 15 15 15 15 2001 2001 2001 2001 2001 2001 Mouth超出超出112 2001.1.16 2001.2.16 2001.11.16 2001.12.16 Mouth超出超出112 NextDate函数最坏情况测试用例函数最坏情况测试用例 (续续) u 测试用例数目测试用例数目 p 5n = 125, n = 3 u 错误的测试用例错误
46、的测试用例 p1812年年2月月30日日 u 遗漏重要的测试用例遗漏重要的测试用例 p 日期取日期取28或或29 p 闰年闰年2000年年 边界值分析应遵循的原则边界值分析应遵循的原则 1)如果输入条件规定了取值范围,或规定了值的)如果输入条件规定了取值范围,或规定了值的 个数,测试用例选择:范围的边界内,刚刚超出个数,测试用例选择:范围的边界内,刚刚超出 范围的边界外的值;或者说:最小值、稍高于最范围的边界外的值;或者说:最小值、稍高于最 小值、正常值、稍低于最大值、最大值小值、正常值、稍低于最大值、最大值 u例例1:程序的规格说明:程序的规格说明:“重量在重量在1050公斤范公斤范 围内的
47、邮件,其计算邮费围内的邮件,其计算邮费” p测试用例选择:取测试用例选择:取10公斤,公斤,10.01公斤,公斤,25公斤,公斤, 49.99公斤,公斤,50公斤公斤 u例例2:“某输入文件可包含某输入文件可包含1255个记录,个记录,” p测试用例选择:记录个数取测试用例选择:记录个数取1,2,120,254,255 边界值分析应遵循的原则(续)边界值分析应遵循的原则(续) 2)针对规约的每个输出条件使用)针对规约的每个输出条件使用1)原则)原则 3)如果规约中提到的输入输出是个有序的集合()如果规约中提到的输入输出是个有序的集合( 如顺序文件、有序表等),就应注意选取有序如顺序文件、有序表
48、等),就应注意选取有序 集中的第一个和最后一个元素作为测试用例集中的第一个和最后一个元素作为测试用例 4)分析软件规约,找出其它的可能边界条件)分析软件规约,找出其它的可能边界条件 边界值测试方法的讨论边界值测试方法的讨论 u基于函数(程序)输入定义域的测试基于函数(程序)输入定义域的测试 方法是所有测试方法中最基本的方法是所有测试方法中最基本的 p方法的假设方法的假设 F各输入变量互相独立各输入变量互相独立 p假设不成立时,这类方法会产生不能令假设不成立时,这类方法会产生不能令 人满意的测试用例人满意的测试用例 F次日程序中生成次日程序中生成1912年年2月月31日日 边界值测试方法的讨论(
49、续)边界值测试方法的讨论(续) u区分边界值分析方法的因素区分边界值分析方法的因素 p正常值与健壮值正常值与健壮值 F容错能力:小于允许的最小值、大于允许的最大值容错能力:小于允许的最小值、大于允许的最大值 p单缺陷与多缺陷假设单缺陷与多缺陷假设 F最坏情况最坏情况 u仅仅仔细地运用这些差别就能够产生较好仅仅仔细地运用这些差别就能够产生较好 的测试的测试 u这些方法都可以用于程序的输出值域这些方法都可以用于程序的输出值域 p佣金问题佣金问题 边界值测试方法的讨论(续)边界值测试方法的讨论(续) u定义域分析还可以用于内部变量定义域分析还可以用于内部变量 p循环控制变量循环控制变量 p索引索引
50、p指针指针 u严格地说,这些都不是输入变量,但是这些严格地说,这些都不是输入变量,但是这些 变量的使用错误相当常见变量的使用错误相当常见 u健壮性测试是测试内部变量的一种好的选择健壮性测试是测试内部变量的一种好的选择 黑盒测试黑盒测试 判定表判定表 X2 两个变量函数边界值分析测试用例 X2 两个变量函数的健壮性测试用例 两变量函数的最坏情况测试用例 X2 基于判定表的测试基于判定表的测试 n判定表的基本理论 n基于判定表的测试用例设计方法 n案例分析 例:例:维修机器问题维修机器问题 u问题描述:问题描述: “对于功率大于对于功率大于50马力的机器,马力的机器, 并且维修记录不全或已运行并且