第11章 软件测试C1

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

• • •
条件覆盖通常比判定覆盖强 但判定表达式的某些可能结果并未出现 上面的二个测试用例满足了条件覆盖标 但判定c为 的结果并未出现。 准,但判定 为“假”的结果并未出现。
20/161
• 判定 条件覆盖: 被测程序的每个判定的所有可能结 判定/条件覆盖 条件覆盖 果都至少执行一次,并且, 果都至少执行一次,并且,每个判定中的每个条件 的所有可能结果都至少出现一次 • 判定覆盖:sabcde和sace,或sabce和sacde 判定覆盖: 和 , 和 1:a真 (y>1) and (z=0) c真(y=2) or (x>y) : 真 真 2:a假(y<=1) or (z<>0) c假(y<>2) and (x<=y) : 假 假 • 条件覆盖 y>1,z=0 y=2,z=0,x>y y<=1,z<>0 y<=1,z<>0,x<=y 测试数据 预期结果 路径 a c 覆盖的条件 , x=4,y=2,z=0 x=3 sabcde t t y>1, z=0, y=2, x >y y x=1,y=1,z=1 x=1 sace f f y ≤ 1,z ≠ 0, y ≠ 2 ,x ≤y 21/161
7/161
7.在设计测试用例时,应包括合理的输入和不 在设计测试用例时, 在设计测试用例时 合理的输入 8.严格执行测试计划,排除测试的随意性 严格执行测试计划, 严格执行测试计划 9.应当对每一个测试结果做全面检查 应当对每一个测试结果做全面检查 10.妥善保存测试计划、测试用例、出错统计 妥善保存测试计划、 妥善保存测试计划 测试用例、 和最终分析报告 11.测试不仅检查程序是否做了应做的事 11.测试不仅检查程序是否做了应做的事,还 测试不仅检查程序是否做了应做的事, 要 检查程序是否做了不该做的事 12.在规划测试时不要设想程序中不会查出错 在规划测试时不要设想程序中不会查出错 误
4/161
有关软件测试的错误观点
• 软件测试并不是为了证明程序是正确的 • 测试不能发现程序中所有的错误,不可能穷 测试不能发现程序中所有的错误, 举所有可能的输入数据。 举所有可能的输入数据。 • 测试是证明程序正确地执行了预期的功能 • 一个程序不仅要完成它所需完成的功能,而 一个程序不仅要完成它所需完成的功能, 不应完成它不该做的事。 且不应完成它不该做的事。
11/161
1
• 黑盒测试(又称行为测试) 黑盒测试(又称行为测试) 测试不考虑程序内部的逻辑结构和内部特性, 测试不考虑程序内部的逻辑结构和内部特性, 只依据程序的需求规格说明书, 只依据程序的需求规格说明书,检查程序的 功能是否符合它的功能需求 是否符合它的功能需求。 功能是否符合它的功能需求。 • 黑盒测试试图发现以下类型的错误: 黑盒测试试图发现以下类型的错误:
15/161
1.语句覆盖 1.语句覆盖
语句覆盖:运行测试用例时,被测程序的每个 语句覆盖 运行测试用例时,被测程序的每个 运行测试用例时 可执行语句都至少执行一次 可执行语句都至少执行一次 只需执行路径1 即可。 只需执行路径 (sabcde)即可。 即可 路径1的执行条件 判定a和判定 的执行条件: 和判定c都为真 路径 的执行条件:判定 和判定 都为真 a为真:(y>1) and (z=0) 为真: 为真 c为真:(y=2) or (x/y>1) 为真: 为真 综上,只要满足y=2,z=0 或 x>y,y>1,z=0 综上,只要满足 测试用例如下: 测试用例如下: 测试数据 预期结果 x=4,y=2,z=0 x=3
不正确或遗漏的功能 接口错误 数据结构错误或外部信息访问错误 性能错误 初始化和终止错误
12/161
11.2 白盒测试
常用的白盒测试方法有: 常用的白盒测试方法有: • 逻辑覆盖测试 • 基本路径覆盖测试 • 数据流测试 • 循环测试
13/161
例:请对下列子程序进行测试
procedure example (y,z:real;var x:real); begin a if (y>1) and (z=0) then x:=x/y; if (y=2) or (x>1) then x:=x+1; end; 一共四条执行路径 c 1.sabcde 2.sace 3.sabce 4.sacde
5/161
11.1.1 软件测试的目的
• 软件测试目的: 软件测试目的: -测试是为了发现错误而执行程序的过程 测试是为了发现错误而执行程序的过程 -好的测试用例是指很可能找到尚未发现的 好的测试用例是指很可能找到尚未发现的 错误的测试用例 -成功的测试是指揭示了尚未发现的错误的 成功的测试是指揭示了尚未发现的错误的 测试 • 设计合适的测试用例,用尽可能少的测试用 设计合适的测试用例, 例,来发现尽可能多的软件错误
程序模块中的所有独立路径至少执行一次 对所有逻辑判定的取值(“真”与“假”)都至 少测试一次 在上下边界及可操作范围内运行所有循环 测试内部数据结构
10/161
求一个班50个学生的平均成绩 求一个班50个学生的平均成绩,然后统计高于 个学生的平均成绩, 平均分的人数。 平均分的人数。
Dim mark (50) as single, aver!, i%, n%, s% 2 n=0 3 s=0 For i = 1 To 50 4 mark(i) = InputBox(“输入第” &i & “位学生成绩 输入第” 位学生成绩") 5 输入第 位学生成绩 s = s + mark(i) 6 Next i 7 aver = s / 50 8 For i = 1 To 50 If aver<mark(i) Then n=n+1 9 Next i 10 Print “aver=“;aver, “n=“;n
4.判定/条件覆盖 4.判定 判定/
5.条件组合覆盖 5.条件组合覆盖
• 条件组合覆盖 被测程序的每个判定中条件 条件组合覆盖:被测程序的每个判定中条件 结果的所有可能组合都至少出现一次
• a: (y>1) and (z=0)中条件结果的所有可能组合: 中条件结果的所有可能组合: 中条件结果的所有可能组合 ①y>1, z=0 ; ② y>1, z ≠ 0; , , ③y ≤ 1 , z=0 ; ④ y ≤ 1 , z ≠ 0 • c: (y=2) or (x/y >1)中条件结果的所有可能组合: >1)中条件结果的所有可能组合 中条件结果的所有可能组合: ⑤ y=2, x>y; ⑥ y=2, x ≤ y ; , , ⑦ y ≠ 2 , x>y; ⑧ y ≠ 2 , x ≤ y
2.判定覆盖 2.判定覆盖
17/161
• 判定覆盖将每个判定的所有可能结果都至 少执行一次,所以, 少执行一次,所以,程序中的所有语句也 必定都至少执行一次。 必定都至少执行一次。 • 满足判定覆盖标准的测试用例也一定满足 语句覆盖标准。 语句覆盖标准。
18/161
3.条件覆盖 3.条件覆盖
• 条件覆盖 被测程序的每个判定中每个条件的所有 条件覆盖: 可能结果都至少出现一次 • 判定 (y>1) and (z=0)中各种条件的所有可能结果: 判定a 中各种条件的所有可能结果: 中各种条件的所有可能结果 y>1, y ≤ 1 ,z=0, z ≠ 0。 , , 。 • 判定 (y=2) or (x/y >1)中各种条件的所有可能结果: 判定c 中各种条件的所有可能结果: 中各种条件的所有可能结果 y=2, y ≠ 2 ,x>y, x ≤ y , , y>1,z=0 y=2,z=0 y=2,z=0,x <= y y<=1,z<>0 y≠2,z<>0 y<=1,z<>0,x > 1 测试数据 预期结果 路径 覆盖条件 x=1,y=2,z=0 x=1.5 sabcde y>1, z=0, y=2,x <= y x=2,y=1,z=1 x=3 sacde y ≤ 1,z ≠ 0, y ≠ z 19/161 2 ,x > 1 x
s
入口
T (y>1) and (z=0) F
b
x=x/y T x=x+1
(y=2) or (x >1) F
d
返回
Fra Baidu bibliotek
e
14/161
11.2.1 逻辑覆盖测试
• 逻辑覆盖测试是一种基本的白盒测试方法 • 主要考察测试数据对程序逻辑的覆盖程度 • 通常希望选择最少的测试用例来满足所需 的覆盖标准。 的覆盖标准。 •主要的覆盖标准有: 主要的覆盖标准有: 主要的覆盖标准有 语句覆盖 判定覆盖 条件覆盖 判定- 判定-条件覆盖 条件组合覆盖 路径覆盖
6/161
11.1.2 软件测试的原则
1.所有的测试都应可追溯到客户需求 所有的测试都应可追溯到客户需求 2.测试计划可在需求模型完成时就开始,测试 测试计划可在需求模型完成时就开始, 测试计划可在需求模型完成时就开始 用例可以在设计模型确定后开始 3.测试发现的 测试发现的80%的错误可能来自 的错误可能来自20%的代码 测试发现的 的错误可能来自 的代码 4.测试规模应从小到大,先测试单个模块,再 测试规模应从小到大, 测试规模应从小到大 先测试单个模块, 测试集成, 测试集成,最后测试整个系统 5.穷举测试是不可能的 穷举测试是不可能的 6.测试应由独立的第三方来承担测试 测试应由独立的第三方来承担测试
16/161
• 判定覆盖(也称分支覆盖):被测程序每个判定的所 判定覆盖(也称分支覆盖): ):被测程序每个判定的所 有可能结果都至少执行一次 • 即判定的每个分支至少经过一次 判定的每个分支至少经过一次 • 判定 和c为真和为假的情况都要有 判定a和 为真和为假的情况都要有 • 路径 :a真,c真 路径 :a假,c假 路径1: 真 真 路径2: 假 假 路径3: 真 假 路径4: 假 真 路径 :a真,c假 路径 :a假,c真 所以只要执行路径1和 ,或路径3和 所以只要执行路径 和2,或路径 和4 使用路径3和 使用路径 和4 : a真 (y>1) and (z=0) c假 (y<>2) and (x<=y) 真 假 a假 (y<=1) or (z<>0) c真(y=2) or (x>1) 假 真 测试数据 预期结果 路径 a c x=3,z=0,y=3 x=1 sabce t f x=1,z=1,y=2 x=2 sacde f t
8/161
11.1.3 白盒测试与黑盒测试
• 测试用例的设计是软件测试的关键所在 • 设计尽可能少的测试用例来发现尽可能多 的错误 • 测试用例的设计方法大体可分为两类: 测试用例的设计方法大体可分为两类: 白盒测试 黑盒测试
9/161
• 白盒测试(又称为结构测试) 白盒测试(又称为结构测试) 测试人员根据程序内部 程序内部的逻辑结构及有关信 测试人员根据程序内部的逻辑结构及有关信 息设计测试用例, 息设计测试用例,检查程序内部所有路径是否 都按预定的要求正确执行。 都按预定的要求正确执行。 • 白盒测试主要用于对模块内部的测试,包括: 白盒测试主要用于对模块内部的测试,包括:
22/161
测试数据 预期结果 路径 a c 覆盖的条件 x=4,y=2,z=0 x=3 sabcde t t ①y>1,z=0 , ⑤y=2,x>y , x=1,y=2,z=1 x=2 sacde f t ②y>1,z ≠ 0 , ⑥y=2,x ≤ y , x=2,y=1,z=0 x=3 sacde f t ③y ≤ 1,z=0 , ⑦y ≠ 2,x>y , x=1,y=1,z=1 x=1 sace f f ④y ≤ 1,z ≠ 0 , ⑧y ≠ 2,x≤y ,
2/161
内容摘要
11.1 11.2 11.3 11.4 11.5 11.6 11.7 软件测试基础 白盒测试 黑盒测试 测试策略 面向对象测试 测试完成标准 调试
3/161
11.1软件测试基础 11.1软件测试基础
• 软件测试前,要设计若干个测试用例 软件测试前,要设计若干个测试用例 • 测试用例由测试输入数据和预期结果组成 • 测试过程: 测试过程: 输入数据 运行被测程序 得到输出结果与 预期结果比对 不一致说明被测程序有错误
软件工程
第11章 软件测试 11章
• 经过需求分析、设计、编码等阶段的开发后, 经过需求分析、设计、编码等阶段的开发后, 得到源程序, 得到源程序,开始进入测试阶段 • 软件测试是发现软件错误和缺陷的主要手段 • 测试的工作量约占软件开发总工作量的 测试的工作量约占软件开发总工作量的40% 以上 • 分为功能测试和性能测试
相关文档
最新文档