第六讲_动态白盒测试
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
动态白盒测试
2014-11wk.baidu.com21
1
动态白盒测试
利用查看代码功能和实现方式得到的信息来确定 哪些要测试,哪些不要测试、如何开展测试。 称为结构测试 软件测试员可以查看并使用代码的内部结构,从 而设计和执行测试。 软件的内部结构和运作方式会影响测试手段 动态白盒测试不仅是查看代码,还包括直接测试 和控制软件
2014-11-21
19
单元测试主要方法
1、代码审查(code inspection)
Walk-through: 例如 Lucent Technologies 的测试策略,是 由三人一组 ( 包括 author, reader, 和 recorder),逐行检查 源代码。 Rehearsal:由人扮演computer,模拟执行情况。 PEER REVIEW
Driver: to call a particular component and passes a test case to it.
2014-11-21 25
D
M1
M2
集成测试
第3步:去掉Driver,自下而上把子功能族合成更大 的子功能族。
D M D M M D M M M M D M D M M D M M
2014-11-21
12
软件测试策略
测试策略必须考虑风险,同时指明一个方法能减低风险
测试因素:需要指明的风险
符合性:确保系统是按照需求设计的 可靠性:在一定期限运行的能力 易用性:易于使用和理解 维护性:易于定位问题,并修改 移植性:易于移到其他系统上 偶合性:应用内部组件之间连接的能力 性能:使用较少的系统资源、响应时间 易于使用
⑴ Top-down testing 第1步:测试顶端模块,用存根程序(stub)代替直接 附属的下层模块 Stub: to simulate the activity of the component which is not yet tested.
M S1
2014-11-21
S2
23
集成测试
第2步:根据深度优先或宽度优先的策略,每次用一 个实际模块代换一个stub。
验收测试
软件确认标准的测试 (在需求分析时建立的) 经常使用黑盒测试技术
系统测试
计算机系统工程部分的测试 考虑软件与其他系统组件的集成问题
2014-11-21 11
软件测试策略
测试策略必须考虑风险,同时指明一个方法能减低风险
测试因素:需要指明的风险
正确性:数据输入、处理、输出是正确的 文件完整性:使用了正确的文件,检索和存储数据是正确的 授权:指明权限,能够实行指定的功能 审计跟踪:证实处理过程发生的能力 处理的继续性:当发生问题,能够继续处理 服务级别:需要的结果能够及时地提供给用户 访问控制:防止误用(偶然或者故意)
2014-11-21 29
小结
学习了
测试策略的建立 单元测试 集成测试
2014-11-21
30
2014-11-21
5
分段测试
单元测试 集成测试
2014-11-21
6
测试策略
测试应该是系统地计划和实施与管理。一个测试策略有 如下方面的要求:
测试开始于模块级. 不同的测试技术应该在不同的测试点及时使用 测试实施可以由开发人员,对大项目,由独立的测试组做 测试和调试是两种不同的活动,但是调试应该溶入测试策略中
集成测试
验证程序构造 大量使用黑盒测试技术 有时使用白盒测试来保证主要控制路径的覆盖性
2014-11-21 10
软件测试策略
测试工作是一个相反的过程:
单元测试:
使用白盒测试技术的模块级测试 测试模块控制结构的路径, 达到完全覆盖和最大限度地错误发现1.
集成测试
验证程序构造 大量使用黑盒测试技术 有时使用白盒测试来保证主要控制路径的覆盖性
件下受到新的检测,测试更彻底。 Incremental testing 较 Big-bang testing 费时。 Big-bang testing 可以同时并行测试所有模块,能充分利用人力。
2014-11-21
27
OO中的集成测试
OO没有层次控制结构,传统方式不再适用 OO集成测试的策略
2014-11-21
26
注意:两种策略的优、缺 点刚好互补,但单用其中 任一种都不实际,通常根 据软件的特点将二者混用。
集成测试
两种方式的比较:
Incremental testing 可以较早发现模块间的接口错误;Big-bang testing 最后才组装,因此错误发现得晚。 Big-bang testing 中发现错误后难以诊断定位; Incremental testing 中,出现的错误往往跟最新加入的模块有关。 Incremental testing 在不断集成的过程中使模块不断在新的条
2、局部数据结构:内部数据保持完整性
数据说明(declaration);初始化与缺省值的设置; 变量名拼写;数据类型的相容性;上\下溢出及 地址异常,等等。
2014-11-21 16
单元测试
3、重要的执行路径: 由于穷尽测试不可能,故通常针对最常见的 错误设计测试方案。较常见的错误有:
计算次序问题 不同类型混合运算(例:比较类型不同的量) 初值设置错误 精度问题(例:精度不够导致两变量不可能相 等,而程序中等待相等条件的出现) 表达式错误 循环终止条件错误(例:次数差1,或陷入死循 环)
2014-11-21 17
单元测试
4、出错处理:
预见出现错误的条件,设置处理。较常见的问题有:
输出的错误信息难以理解,不能确定错误位置
描述的错误与实际错误不符
处理之前系统已经干预 处理不正确
2014-11-21
18
单元测试
5、边界条件 —— 单元测试中最后,也可能是最重要的 任务,因为软件常在其边界失效。
2014-11-21
15
单元测试
主要测试以下五个方面: 1、模块接口:检查进出程序的数据流是否正确
内部检查:传输参数的数目、属性、单位、次序 是否匹配;全程变量的定义是否一致;只做输入 的变元有无被修改,等等。 外部检查:打开、结束、关闭文件的操作;文件 和属性;I\O错误处理;输出拼写,等等。
基于线程的测试
集成对回应系统的一个输入或事件所需的一组类,每个线 程被集成并分别测试。
基于使用的测试
首先,测试独立类,从而开始构造系统 然后,测试下一层的依赖类,通过依赖类层次的测试序列 逐步构造完整的系统
2014-11-21 28
验收测试(Acceptance testing)
任务:验收软件的有效性(功能和性能达标)。 手段:黑盒测试;用户参与;主要用实际数据进行测 试。 内容:按合同规定审查软件配置; 设计测试计划,使通过测试保证软件能满足所 有功能、性能要求; 文档与程序一致,具有维护阶段所必须的细节; 严格按用户手册操作,以检查手册的完整性和 正确性。
1 验证和确认. 2 软件测试的组成 3 软件测试策略 4 测试完成的标准
2014-11-21
7
验证和确认
测试就是验证和确认.
验证: 生产的产品是否正确? 确认:是否生产了正确的产品?
2014-11-21
8
软件测试的组织
能够使用独立的测试组做测试工作. 开发者做单元测试,有可能的话,可以做集成测试 独立的测试组完成验收测试和系统测试 ITG 要成为规范的过程,制定出计划和测试规程,需 要汇报给SQA
2014-11-21 2
测试包括
直接测试底层功能、过程、子程序和库 以完整程序的方式从顶层测试软件,但是根据对 软件运行的了解调整测试用例 从软件获得读取变量和状态信息的访问权,以便 确定测试与预期结果是否相符,同时,强制软件 以正常测试难以实现的方式运行 估计执行测试时“命中”的代码量和具体代码, 然后调整测试,去掉多余的,补充遗漏的
优点: 一次审查可发现多个错误,不必改一个测一个。 2、制做测试软件:Stub (存根)和 Driver(驱动)软件 的编写,属额外开支。模块高内聚可简化这一过程。
2014-11-21 20
OO中的单元测试
最小的测试单元是封装的类或对象 类或对象包含属性和一组操作方法 测试封装在类中的操作和类的状态变化
M M S11 S3 S4 M S22
第3步:在结合进一个模块的同时进行测试。 第4步:回归测试(regression testing)——全部或 部分地重复以前做过的测试。
2014-11-21 24
集成测试
优点:在早期即对主要控制及关键的抉择进行检验。 问题:Stub只是对低层模块的模拟,测试时没有重要 的数据自下往上流,许多重要的测试须推迟进行, 而且在早期不能充分展开人力。 ⑵ Bottom - up testing 第1步:把低层模块组合成族,每族实现一个子功能。 第2步:用驱动程序(Driver)协调测试数据的I\O,测试子 功能族。
2014-11-21
3
动态白盒测试与调试
发现缺陷和查看代码的过程
调试
执行者 时机 目标 依据
2014-11-21
测试
测试员 软件产品提交后 寻找软件缺陷 根据测试用例
4
程序员 软件产品提交前 修复软件的问题 根据设计依据
软件测试员的工作
使用与程序员相同的工具或者编译器 要使用代码级调试器单步执行程序,观察变量、设置 断点条件 对于要求合法性检查的独立代码模块,还要编写测试 程序进行测试
2014-11-21
13
开发测试策略
1. 选择和测试因素,并分出等级 2. 识别系统开发的阶段 3. 识别商业风险
开发者、主要用户和测试者集体讨论并同意
4. 建立风险的矩阵
风险矩阵中能将测试用例与风险挂钩
2014-11-21
14
单元测试(Unit Testing)
检验程序最小单位有无错误 编码完成后做的首要测试工作 一般由编程人员完成 大多从程序的内部结构出发设计测试用例 多个程序模块可以独立开展测试工作
2014-11-21
9
软件测试策略
系统开发的过程是:
1.System engineering 2.Requirements 3.Design 4.Coding
测试工作是一个相反的过程:
单元测试:
使用白盒测试技术的模块级测试 测试模块控制结构的路径, 达到完全覆盖和最大限度地错误发现1.
2014-11-21
21
集成测试 (Integration Testing)
1、非渐增式测试 (Big-bang testing)
Test A
Test B Test C Test A, B, C, D
Test D
2014-11-21
22
集成测试
2、Incremental testing 的几种策略
2014-11wk.baidu.com21
1
动态白盒测试
利用查看代码功能和实现方式得到的信息来确定 哪些要测试,哪些不要测试、如何开展测试。 称为结构测试 软件测试员可以查看并使用代码的内部结构,从 而设计和执行测试。 软件的内部结构和运作方式会影响测试手段 动态白盒测试不仅是查看代码,还包括直接测试 和控制软件
2014-11-21
19
单元测试主要方法
1、代码审查(code inspection)
Walk-through: 例如 Lucent Technologies 的测试策略,是 由三人一组 ( 包括 author, reader, 和 recorder),逐行检查 源代码。 Rehearsal:由人扮演computer,模拟执行情况。 PEER REVIEW
Driver: to call a particular component and passes a test case to it.
2014-11-21 25
D
M1
M2
集成测试
第3步:去掉Driver,自下而上把子功能族合成更大 的子功能族。
D M D M M D M M M M D M D M M D M M
2014-11-21
12
软件测试策略
测试策略必须考虑风险,同时指明一个方法能减低风险
测试因素:需要指明的风险
符合性:确保系统是按照需求设计的 可靠性:在一定期限运行的能力 易用性:易于使用和理解 维护性:易于定位问题,并修改 移植性:易于移到其他系统上 偶合性:应用内部组件之间连接的能力 性能:使用较少的系统资源、响应时间 易于使用
⑴ Top-down testing 第1步:测试顶端模块,用存根程序(stub)代替直接 附属的下层模块 Stub: to simulate the activity of the component which is not yet tested.
M S1
2014-11-21
S2
23
集成测试
第2步:根据深度优先或宽度优先的策略,每次用一 个实际模块代换一个stub。
验收测试
软件确认标准的测试 (在需求分析时建立的) 经常使用黑盒测试技术
系统测试
计算机系统工程部分的测试 考虑软件与其他系统组件的集成问题
2014-11-21 11
软件测试策略
测试策略必须考虑风险,同时指明一个方法能减低风险
测试因素:需要指明的风险
正确性:数据输入、处理、输出是正确的 文件完整性:使用了正确的文件,检索和存储数据是正确的 授权:指明权限,能够实行指定的功能 审计跟踪:证实处理过程发生的能力 处理的继续性:当发生问题,能够继续处理 服务级别:需要的结果能够及时地提供给用户 访问控制:防止误用(偶然或者故意)
2014-11-21 29
小结
学习了
测试策略的建立 单元测试 集成测试
2014-11-21
30
2014-11-21
5
分段测试
单元测试 集成测试
2014-11-21
6
测试策略
测试应该是系统地计划和实施与管理。一个测试策略有 如下方面的要求:
测试开始于模块级. 不同的测试技术应该在不同的测试点及时使用 测试实施可以由开发人员,对大项目,由独立的测试组做 测试和调试是两种不同的活动,但是调试应该溶入测试策略中
集成测试
验证程序构造 大量使用黑盒测试技术 有时使用白盒测试来保证主要控制路径的覆盖性
2014-11-21 10
软件测试策略
测试工作是一个相反的过程:
单元测试:
使用白盒测试技术的模块级测试 测试模块控制结构的路径, 达到完全覆盖和最大限度地错误发现1.
集成测试
验证程序构造 大量使用黑盒测试技术 有时使用白盒测试来保证主要控制路径的覆盖性
件下受到新的检测,测试更彻底。 Incremental testing 较 Big-bang testing 费时。 Big-bang testing 可以同时并行测试所有模块,能充分利用人力。
2014-11-21
27
OO中的集成测试
OO没有层次控制结构,传统方式不再适用 OO集成测试的策略
2014-11-21
26
注意:两种策略的优、缺 点刚好互补,但单用其中 任一种都不实际,通常根 据软件的特点将二者混用。
集成测试
两种方式的比较:
Incremental testing 可以较早发现模块间的接口错误;Big-bang testing 最后才组装,因此错误发现得晚。 Big-bang testing 中发现错误后难以诊断定位; Incremental testing 中,出现的错误往往跟最新加入的模块有关。 Incremental testing 在不断集成的过程中使模块不断在新的条
2、局部数据结构:内部数据保持完整性
数据说明(declaration);初始化与缺省值的设置; 变量名拼写;数据类型的相容性;上\下溢出及 地址异常,等等。
2014-11-21 16
单元测试
3、重要的执行路径: 由于穷尽测试不可能,故通常针对最常见的 错误设计测试方案。较常见的错误有:
计算次序问题 不同类型混合运算(例:比较类型不同的量) 初值设置错误 精度问题(例:精度不够导致两变量不可能相 等,而程序中等待相等条件的出现) 表达式错误 循环终止条件错误(例:次数差1,或陷入死循 环)
2014-11-21 17
单元测试
4、出错处理:
预见出现错误的条件,设置处理。较常见的问题有:
输出的错误信息难以理解,不能确定错误位置
描述的错误与实际错误不符
处理之前系统已经干预 处理不正确
2014-11-21
18
单元测试
5、边界条件 —— 单元测试中最后,也可能是最重要的 任务,因为软件常在其边界失效。
2014-11-21
15
单元测试
主要测试以下五个方面: 1、模块接口:检查进出程序的数据流是否正确
内部检查:传输参数的数目、属性、单位、次序 是否匹配;全程变量的定义是否一致;只做输入 的变元有无被修改,等等。 外部检查:打开、结束、关闭文件的操作;文件 和属性;I\O错误处理;输出拼写,等等。
基于线程的测试
集成对回应系统的一个输入或事件所需的一组类,每个线 程被集成并分别测试。
基于使用的测试
首先,测试独立类,从而开始构造系统 然后,测试下一层的依赖类,通过依赖类层次的测试序列 逐步构造完整的系统
2014-11-21 28
验收测试(Acceptance testing)
任务:验收软件的有效性(功能和性能达标)。 手段:黑盒测试;用户参与;主要用实际数据进行测 试。 内容:按合同规定审查软件配置; 设计测试计划,使通过测试保证软件能满足所 有功能、性能要求; 文档与程序一致,具有维护阶段所必须的细节; 严格按用户手册操作,以检查手册的完整性和 正确性。
1 验证和确认. 2 软件测试的组成 3 软件测试策略 4 测试完成的标准
2014-11-21
7
验证和确认
测试就是验证和确认.
验证: 生产的产品是否正确? 确认:是否生产了正确的产品?
2014-11-21
8
软件测试的组织
能够使用独立的测试组做测试工作. 开发者做单元测试,有可能的话,可以做集成测试 独立的测试组完成验收测试和系统测试 ITG 要成为规范的过程,制定出计划和测试规程,需 要汇报给SQA
2014-11-21 2
测试包括
直接测试底层功能、过程、子程序和库 以完整程序的方式从顶层测试软件,但是根据对 软件运行的了解调整测试用例 从软件获得读取变量和状态信息的访问权,以便 确定测试与预期结果是否相符,同时,强制软件 以正常测试难以实现的方式运行 估计执行测试时“命中”的代码量和具体代码, 然后调整测试,去掉多余的,补充遗漏的
优点: 一次审查可发现多个错误,不必改一个测一个。 2、制做测试软件:Stub (存根)和 Driver(驱动)软件 的编写,属额外开支。模块高内聚可简化这一过程。
2014-11-21 20
OO中的单元测试
最小的测试单元是封装的类或对象 类或对象包含属性和一组操作方法 测试封装在类中的操作和类的状态变化
M M S11 S3 S4 M S22
第3步:在结合进一个模块的同时进行测试。 第4步:回归测试(regression testing)——全部或 部分地重复以前做过的测试。
2014-11-21 24
集成测试
优点:在早期即对主要控制及关键的抉择进行检验。 问题:Stub只是对低层模块的模拟,测试时没有重要 的数据自下往上流,许多重要的测试须推迟进行, 而且在早期不能充分展开人力。 ⑵ Bottom - up testing 第1步:把低层模块组合成族,每族实现一个子功能。 第2步:用驱动程序(Driver)协调测试数据的I\O,测试子 功能族。
2014-11-21
3
动态白盒测试与调试
发现缺陷和查看代码的过程
调试
执行者 时机 目标 依据
2014-11-21
测试
测试员 软件产品提交后 寻找软件缺陷 根据测试用例
4
程序员 软件产品提交前 修复软件的问题 根据设计依据
软件测试员的工作
使用与程序员相同的工具或者编译器 要使用代码级调试器单步执行程序,观察变量、设置 断点条件 对于要求合法性检查的独立代码模块,还要编写测试 程序进行测试
2014-11-21
13
开发测试策略
1. 选择和测试因素,并分出等级 2. 识别系统开发的阶段 3. 识别商业风险
开发者、主要用户和测试者集体讨论并同意
4. 建立风险的矩阵
风险矩阵中能将测试用例与风险挂钩
2014-11-21
14
单元测试(Unit Testing)
检验程序最小单位有无错误 编码完成后做的首要测试工作 一般由编程人员完成 大多从程序的内部结构出发设计测试用例 多个程序模块可以独立开展测试工作
2014-11-21
9
软件测试策略
系统开发的过程是:
1.System engineering 2.Requirements 3.Design 4.Coding
测试工作是一个相反的过程:
单元测试:
使用白盒测试技术的模块级测试 测试模块控制结构的路径, 达到完全覆盖和最大限度地错误发现1.
2014-11-21
21
集成测试 (Integration Testing)
1、非渐增式测试 (Big-bang testing)
Test A
Test B Test C Test A, B, C, D
Test D
2014-11-21
22
集成测试
2、Incremental testing 的几种策略