系统实施之二
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
判断覆盖
判定覆盖就是设计若干个测试用例, 判定覆盖就是设计若干个测试用例,运行被 测程序,使得程序中每个IF判断语句的取真 测程序,使得程序中每个 判断语句的取真 分支和取假分支至少一次。 分支和取假分支至少一次。 判定覆盖又称为分支覆盖。 判定覆盖又称为分支覆盖。 对于图例,如果选择路径L1和 , 对于图例,如果选择路径 和L2,就可得 满足要求的测试用例: 满足要求的测试用例
等价类划分
等价类是指某个输入域的子集合。 等价类是指某个输入域的子集合。在该子集 合中, 合中,各个输入数据对于揭露程序中的错误 都是等效的。 都是等效的。测试某等价类的代表值就等价 于对这一类其它值的测试。 于对这一类其它值的测试。 等价类的划分有两种不同的情况: 等价类的划分有两种不同的情况:
T3T4
T 3T 4 T 3T 4 T 3T 4
条件组合覆盖
测试用例 覆盖条件 覆盖组合 ①, ⑤ ②, ⑥ ③, ⑦ ④, ⑧
【(2, 0, 4), (2, 0, 3)】(L1) T 1 T 2 T 3 T 4 【(2, 1, 1), (2, 1, 2)】(L3) T1T2T3T4 【(1, 0, 3), (1, 0, 4)】(L3) T 1T 2 T 3T 4 【(1, 1, 1), (1, 1, 1)】(L2) T1T2 T3T4
设计测试用例时, 设计测试用例时,要同时考虑有效等价类和 无效等价类的设计。 无效等价类的设计。 不同类型的数据, 不同类型的数据,划分等价类不同
如何划分等价类
(1)如果输入条件规定了取值范围,或值的个数, 如果输入条件规定了取值范围,或值的个数, 则可以确立一个有效等价类和两个无效等价类。 则可以确立一个有效等价类和两个无效等价类。
T 1T 2T 3T 4
T 1T 2 T 3 T 4
T1T2T3T4
T 1T 2 T 3T 4
T1T2T3T4
条件组合覆盖
条件组合覆盖就是设计足够的测试用例,运行被测程序, 条件组合覆盖就是设计足够的测试用例,运行被测程序, 使得每个判断的所有可能的条件取值组合至少执行一次。 使得每个判断的所有可能的条件取值组合至少执行一次。
例如:在教师上岗方案中规定对教授、副教授、 例如:在教师上岗方案中规定对教授、副教授、 讲师和助教分别计算分数,做相应的处理。 讲师和助教分别计算分数,做相应的处理。因 此可以确定4个有效等价类为教授、副教授、 此可以确定4个有效等价类为教授、副教授、讲 师和助教,一个无效等价类, 师和助教,一个无效等价类,它是所有不符合 以上身分的人员的输入值的集合。 以上身分的人员的输入值的集合。
路径覆盖
路径覆盖就是设计足够的测试用例, 路径覆盖就是设计足够的测试用例,覆盖程序中所有可 就是设计足够的测试用例 能的路径。 能的路径。 测试用例 通过路径 覆盖条件
【(2, 0, 4), (2, 0, 3)】 ace (L1) 【(1, 1, 1), (1, 1, 1)】 abd (L2) 【(1, 1, 2), (1, 1, 3)】 abe (L3) 【(3, 0, 3), (3, 0, 1)】 acd (L4)
例如,在程序的规格说明中,对输入条件有一句话: 例如,在程序的规格说明中,对输入条件有一句话: “数量可以从1到999” 数量可以从1 则有效等价类是“1≤数量≤999” 则有效等价类是“1≤数量≤ 数量 两个无效等价类是“数量<1”或 数量>999”。 两个无效等价类是“数量<1”或“数量>999”。
黑箱的穷举测试
如果能够穷举所有可能的输入条件及其输出 如果能够穷举所有可能的输入条件及其输出 来测试程序, 结果来测试程序 那么就可以证明正确性。 结果来测试程序,那么就可以证明正确性。 然而这是不可能的。举例: 然而这是不可能的 举例: 不可能
假设一个程序P有输入整数X和整数Y及输出Z 假设一个程序P有输入整数X和整数Y及输出Z。 可能采用的测试数据组: 可能采用的测试数据组: 232×232 = 264 如果测试一组数据需要1微秒,一年工作365× 如果测试一组数据需要1微秒,一年工作365× 365 24小时 完成所有测试需万年以上。 小时, 24小时,完成所有测试需万年以上。
T
c
X=X/A
d
F
(A=2) or (X>1)
T
e
X=X+1
语句覆盖
语句覆盖就是设计若干个测试用例, 语句覆盖就是设计若干个测试用例,运行被 测程序,使得每一可执行语句至少执行一次。 可执行语句至少执行一次 测程序,使得每一可执行语句至少执行一次。
在图例中,正好所有的可执行语句都在路径L1 在图例中,正好所有的可执行语句都在路径L1 L1设计测试用例 设计测试用例, 上,所以选择路径 L1设计测试用例,就可以覆 盖所有的可执行语句。 盖所有的可执行语句。
3、测试用例的设计 、
设计测试用例时, 设计测试用例时,根据黑盒技术和白盒技术 的原理,可以有不同的方法: 的原理,可以有不同的方法:
逻辑覆盖法(白盒) 逻辑覆盖法(白盒) 等价类划分法(黑盒) 等价类划分法(黑盒) 边界值分析法(黑盒) 边界值分析法(黑盒)
测试用例设计——逻辑覆盖 逻辑覆盖 测试用例设计
对于第一个判断: 对于第一个判断:
条件 A>1 取真为 T1 ,取假为 > 条件 B=0 取真为 T2 ,取假为 =
T1
T2
对于第二个判断: 对于第二个判断:
条件A= 条件 =2 取真为 T3 ,取假为 T 3 条件X> ,取假为 条件 >1 取真为
T4
T4
条件覆盖
测试用例 覆盖分支 条件取值
【(2, 0, 4),(2, 0, 3)】 L1(c, e) 【(1, 0, 1),(1, 0, 1)】 L2(b, d) 【(2, 1, 1),(2, 1, 2)】 L3(b, e) 或 【(1, 0, 3),(1, 0, 4)】 L3(b, e) 【(2, 1, 1),(2, 1, 2)】 L3(b, e)
(3)如果输入条件是一个布尔量,则可以确 如果输入条件是一个布尔量, 定一个有效等价类和一个无效等价类。 定一个有效等价类和一个无效等价类。
如何划分等价类
(4)如果规定了输入数据的一组值,而且程 如果规定了输入数据的一组值, 序要对每个输入值分别进行处理。 序要对每个输入值分别进行处理。这时可为 每一个输入值确立一个有效等价类, 每一个输入值确立一个有效等价类,此外针 对这组值确立一个无效等价类, 对这组值确立一个无效等价类,它是所有不 允许的输入值的集合。 允许的输入值的集合。
在数轴上表示成: 在数轴上表示成:
如何划分等价类
(2)如果输入条件规定了输入值的集合,或 如果输入条件规定了输入值的集合, 者是规定了“必须如何”的条件, 者是规定了“必须如何”的条件,这时可确 立一个有效等价类和一个无效等价类。 立一个有效等价类和一个无效等价类。
例如, 语言中对变量标识符规定为“ 例如,在C语言中对变量标识符规定为“以字母 打头的……串”。那么所有以字母打头的构成 打头的 串 有效等价类,而不在此集合内(不以字母打头) 有效等价类,而不在此集合内(不以字母打头) 的归于无效等价类。 的归于无效等价类。
第10章 系统实施
10.3.3 测试技术
黑箱测试/黑盒测试 黑箱测试 黑盒测试 白箱测试/白盒测试 白箱测试 白盒测试
1、黑箱测试 、
这种方法是把测试对象看做一个黑盒子, 这种方法是把测试对象看做一个黑盒子,测 试人员完全不考虑程序内部的逻辑结构和内 部特性,只依据程序模块的详细说明, 部特性,只依据程序模块的详细说明,检查 程序的功能是否符合它的功能说明。 程序的功能是否符合它的功能说明。 黑盒测试又叫做功能测试或数据驱动测试。 黑盒测试又叫做功能测试或数据驱动测试。 功能测试
记 ① A>1, B=0 作 > = ② A>1, B≠0 作 > ③ A≯1, B=0 作 ≯ = ④ A≯1, B≠0 作 ≯ ⑤ A=2, X>1 作 = > ⑥ A=2, X≯1 作 = ≯ ⑦ A≠2, X>1 作 > ⑧ A≠2, X≯1 作 ≯
T1T2
T1T2 T 1T 2
T 1T 2
【(2, 0, 4),(2, 0, 3)】覆盖 ace【L1】 , 】 【 】 【(1, 1, 1),(1, 1, 1)】覆盖 abd【L2】 , 】 【 】
条件覆盖
条件覆盖就是设计若干个测试用例, 条件覆盖就是设计若干个测试用例,运行被 测程序, 测程序,使得程序中所有判断的每个子条件 的可能取值至少执行一次。 的可能取值至少执行一次。 在图例中, 在图例中,我们事先可对所有条件取值加以 标记。例如: 标记。例如:
白箱的穷举测试
对一个具有多重选择和循环嵌套的程序,穷 对一个具有多重选择和循环嵌套的程序, 举所有的程序逻辑,会怎样? 举所有的程序逻辑,会怎样?
给出一个小程序的流程图,它包括了一个执行20 给出一个小程序的流程图,它包括了一个执行20 次的循环。 次的循环。 包含的不同执行路径数达5 包含的不同执行路径数达520条,对每一条路径进 行测试需要1 行测试需要1微秒 一年工作365 24小时 365× 一年工作365×24小时 测试完需3 测试完需3年。
T 1T 2T 3T 4
T 1T 2 T 3T 4 T 1T 2 T 3T 4 T1T 2 T 3T 4
测试用例设计——等价类划分 等价类划分 测试用例设计
等价类划分是一种典型的黑盒测试方法, 等价类划分是一种典型的黑盒测试方法,使 用这一方法时,完全不考虑程序的内部结构, 用这一方法时,完全不考虑程序的内部结构, 只依据程序的规格说明来设计测试用例。 只依据程序的规格说明来设计测试用例。 等价类划分方法把所有可能的输入数据, 等价类划分方法把所有可能的输入数据,即 程序的输入域划分成若干部分, 程序的输入域划分成若干部分,然后从每一 部分中选取少数有代表性的数据做为测试用 例。 使用这一方法设计测试用例要经历划分等价 列出等价类表)和选取测试用例两步。 类(列出等价类表)和选取测试用例两步。
使用测试用例
所以,不论使用什么测试技术, 所以,不论使用什么测试技术,我们都不可 能采用穷举测试来证明没有错误。 能误
一个测试用例就是为了测试某个目标(模块、 一个测试用例就是为了测试某个目标(模块、 功能、性能) 功能、性能)而准备的一份输入数据及其预 期结果
测试用例的设计格式如下
输入的(A, X),输出的(A, X)】 【输入的(A, B, X),输出的(A, B, X)】
为图例设计满足语句覆盖的测试用例是: 为图例设计满足语句覆盖的测试用例是:
4), 3)】 【(2, 0, 4),(2, 0, 3)】 L1】 【L1】 覆盖 ace
语句覆盖是最弱的逻辑覆盖准则
有效等价类:是指对于程序的规格说明来说, 有效等价类:是指对于程序的规格说明来说, 是合理的,有意义的输入数据构成的集合。 是合理的,有意义的输入数据构成的集合。 无效等价类:是指对于程序的规格说明来说, 无效等价类:是指对于程序的规格说明来说, 是不合理的,无意义的输入数据构成的集合。 是不合理的,无意义的输入数据构成的集合。
逻辑覆盖是以程序内部的逻辑结构为基 逻辑覆盖是以程序内部的逻辑结构为基 础的设计测试用例的技术, 础的设计测试用例的技术,属于白盒测 试。 根据覆盖测试的目的不同, 根据覆盖测试的目的不同,逻辑覆盖分 为:
语句覆盖 判定覆盖 条件覆盖 条件组合覆盖 路径覆盖
逻辑覆盖举例
a b
F
(A>1) and (B=0)
2、白箱测试 、
此方法把测试对象看做一个透明的盒子, 此方法把测试对象看做一个透明的盒子,它 把测试对象看做一个透明的盒子 允许测试人员利用程序内部的逻辑结构及有 关信息,设计或选择测试用例, 关信息,设计或选择测试用例,对程序所有 内部逻辑结构进行测试。 内部逻辑结构进行测试。 通过在不同点检查程序的状态, 通过在不同点检查程序的状态,确定实际的 状态是否与预期的状态一致。 状态是否与预期的状态一致。因此白盒测试 结构测试或 又称为结构测试 逻辑驱动测试。 又称为结构测试或逻辑驱动测试。