第5章软件测试 软件测试的概念 软件测试技术 软件测试策略 测试的管理 软件调试 软件的可靠性和可用性 西安交通大学刘海
西安交通大学 刘海岩 1 第5章 软件测试 ⚫ 软件测试的概念 ⚫ 软件测试技术 ⚫ 软件测试策略 ⚫ 测试的管理 ⚫ 软件调试 ⚫ 软件的可靠性和可用性
51软件测试的概念 1、软件测试的目的 1963年,美国,飞往火星的火窬爆炸,损失$10 million 原因: FORTRAN循环: Do 5 I 3误写为D05I=1.3 软件测试的工作量约占整个项目工作量的40%左右, 对于要求极高的系统测试工作量还要成倍增加。 微软 Exchange2000和 Windows2000中的人员结构 Exchange 2000 Windows 2000 项目经理 25人 约250人 开发人员 140人 约1700人 测试人员 350人 约3200人 测试人员/开发人员2.5 1.9 西安交通大学刘海
西安交通大学 刘海岩 2 5.1 软件测试的概念 1、软件测试的目的 1963年, 美国, 飞往火星的火箭爆炸, 损失$ 10 million。 原因: FORTRAN循环: DO 5 I = 1, 3 误写为 DO 5 I = 1.3 软件测试的工作量约占整个项目工作量的40%左右, 对于要求极高的系统测试工作量还要成倍增加。 微软Exchange 2000和Windows 2000中的人员结构 Exchange 2000 Windows 2000 项目经理 25人 约 250人 开发人员 140人 约 1700人 测试人员 350人 约 3200人 测试人员/开发人员 2.5 1.9
为什么需要这么多人、花这么多代价进行测试?目的何 在 “证明程序正确!”对吗? Myers)对软件测试目的提出以下观点: (1)软件测试是为了发现错误而执行程序的过程。 (2)一个好的测试用例能够发现至今尚未发现的错误。 (3)一个成功的测试是发现了至今尚未发现的错误的测试。 因此,测试阶段的基本任务应该是根据软件开发各阶段 的文档资料和软件的结构,精心设计一组“高产”的测试用 例,利用这些用例执行程序,找出软件中潜在的各种错误 (Bug)和缺陷( Defect)。 西安交通大学刘海
西安交通大学 刘海岩 3 为什么需要这么多人、花这么多代价进行测试?目的何 在? “证明程序正确!” 对吗? Myers对软件测试目的提出以下观点: (1)软件测试是为了发现错误而执行程序的过程。 (2)一个好的测试用例能够发现至今尚未发现的错误。 (3)一个成功的测试是发现了至今尚未发现的错误的测试。 因此,测试阶段的基本任务应该是根据软件开发各阶段 的文档资料和软件的结构,精心设计一组“高产”的测试用 例,利用这些用例执行程序,找出软件中潜在的各种错误 (Bug)和缺陷(Defect)
2、软件测试的原则 1)测试用例不但应有输入数据,还应有预期的输 出数据。这样便于对照检查,做到“有的放矢” (2)测试用例不仅选用合理的输入数据,还要选择 不合理的输入数据。这样能更多地发现错误,提高程 序的可靠性。对于不合理的输入数据,要将反馈信息 提供给用户。 (3)除了检查程序是否做了它应该做的事,还可检 查程序是否做了它不应该做的事。例如程序正确地打 印出用户所需信息的同时还是否打印出用户并不需要 的多余信息。 (4)应制定测试计划并严格执行,排除随意性, 5)长期保留测试用例,为以后进行的回归测试和 维护提供方便 西安交通大学刘海
西安交通大学 刘海岩 4 2、软件测试的原则 (1)测试用例不但应有输入数据,还应有预期的输 出数据。这样便于对照检查,做到“有的放矢”。 (2)测试用例不仅选用合理的输入数据,还要选择 不合理的输入数据。这样能更多地发现错误,提高程 序的可靠性。对于不合理的输入数据,要将反馈信息 提供给用户。 (3)除了检查程序是否做了它应该做的事,还可检 查程序是否做了它不应该做的事。例如程序正确地打 印出用户所需信息的同时还是否打印出用户并不需要 的多余信息。 (4)应制定测试计划并严格执行,排除随意性。 (5)长期保留测试用例,为以后进行的回归测试和 维护提供方便
(6)对发现错误较多的程序段,应进行更深入的测试 因为在修改错误过程中容易引入新的错误。 (7)为了达到最有效的测试效果,程序员避免测试自 己的程序 3、测试阶段的信息流程 预完善 软件配置 测试结果 错误 可提交 评价 调试 测试 句靠 分析结果 分析 西安交通大学刘海
西安交通大学 刘海岩 5 (6)对发现错误较多的程序段,应进行更深入的测试。 因为在修改错误过程中容易引入新的错误。 (7)为了达到最有效的测试效果,程序员避免测试自 己的程序。 3、测试阶段的信息流程 测试 评价 调试 可靠性 分析 分析结果 错 误 可提交 预完善
其中软件配置:需求说明书、设计说明书和源程序。 测试配置:测试计划、测试工具、测试用例( Test case) 和测试驱动程序( Driver)、桩程序(Stub)等。 4、测试方法 (1)黑盒( Black-box)法 不考虑被测程序的内部结构和处理过程,只关心它的输 入和输出是否能达到预期结果,因此也称为功能性测试 (2)白盒(Back-box)法 使用更细致的测试策略,检査被测程序的内部逻辑 黑盒测试法与白盒测试法互为补充,在测试的不同阶段 使用以发现不同类型的错误 西安交通大学刘海
西安交通大学 刘海岩 6 其中软件配置:需求说明书、设计说明书和源程序。 测试配置:测试计划、测试工具、测试用例(Test case) 和测试驱动程序(Driver)、桩程序(Stub)等。 4、测试方法 (1)黑盒 (Black-box)法 不考虑被测程序的内部结构和处理过程,只关心它的输 入和输出是否能达到预期结果,因此也称为功能性测试。 (2)白盒(Black-box)法 使用更细致的测试策略,检查被测程序的内部逻辑。 黑盒测试法与白盒测试法互为补充,在测试的不同阶段 使用以发现不同类型的错误
测试用例如何设计? 是否考虑所有的数据域或所有的路径 穷尽测试( complete test)通常是不可能的。 例如:( Black-box) 程序要求输入3个整形数据。若字长16位,则各种可 能输入的排列组合共有 216×216×216≈3×1014 若程序执行一次需一毫秒,则对于所有合法输入的测试 大约需用一万年!还未包含测试输入非法数据的情况。 西安交通大学刘海
西安交通大学 刘海岩 7 测试用例如何设计? 是否考虑所有的数据域或所有的路径! 穷尽测试(complete test)通常是不可能的。 例如:(Black-box) 程序要求输入3个整形数据。若字长16位,则各种可 能输入的排列组合共有 2 16×2 16×2 16 ≈ 3×1014 若程序执行一次需一毫秒,则对于所有合法输入的测试 大约需用一万年!还未包含测试输入非法数据的情况
例:(Whte-box) 下图所示的程序中共有520≈1014条可能的执行通路,显 然,每条通路都执行一遍是不现实的 循环20次 即使每条路径都测试了,程序仍可能有错,如一个升 序程序编成了降序,穷尽测试也发现不了
西安交通大学 刘海岩 8 例:(White-box) 下图所示的程序中共有 5 201014条可能的执行通路,显 然,每条通路都执行一遍是不现实的。 即使每条路径都测试了,程序仍可能有错,如一个升 序程序编成了降序,穷尽测试也发现不了。 循环20次
5、测试步骤 需求分析 ----不正确、遗漏或表述不清楚的需求 软件错误可能 不正确或表述不清楚的转换 嵌入在需求分析 系统设计 不正确或不清楚的设计说明 设计、编码构件 程序设计 不正确或不清楚的设计说明 系统设计的错误解释 或文档等开发和 程序设计的错误解释 维护的任何地方, 程序实现 不正确的文档 不正确的语法或语义 图中列举了每个 单元/集成测试 不完整的测试过程 开发活动中可能 -当纠正旧的错误时引入的新错误 的错误原因 系统测试 不完整的测试过程 因此测试步骤 不正确的用户文档 维护 人为因素 应与分析、设计 当纠正旧的错误时引入的新错误 需求变动 编码等活动对应。 具体测试步骤在 5.3节介绍。 开发中引起错误的原因 西安交通大学刘海
西安交通大学 刘海岩 9 5、测试步骤 软件错误可能 嵌入在需求分析、 设计、编码构件 或文档等开发和 维护的任何地方, 图中列举了每个 开发活动中可能 的错误原因。 因此测试步骤 应与分析、设计、 编码等活动对应。 具体测试步骤 在 5.3节介绍
52软件测试技术 白盒法和黑盒法是设计测试用例的基本策略,每一种 策略对应着多个设计用例的技术,每种技术可达到一定 的测试目的。 1、白盒技术 被测对象基本上是源程序,以程序的内部逻辑结构为基 础设计测试用例。原则是 保证被测程序中每一条独立的路径至少执行一次 保证所有判断的每一分支至少执行一次 保证每一循环都在边界条件和一般条件下至少各执行 次 验证所有各内部数据结构的有效性。 西安交通大学刘海
西安交通大学 刘海岩 10 5.2 软件测试技术 白盒法和黑盒法是设计测试用例的基本策略,每一种 策略对应着多个设计用例的技术,每种技术可达到一定 的测试目的。 1、白盒技术 被测对象基本上是源程序,以程序的内部逻辑结构为基 础设计测试用例。原则是: • 保证被测程序中每一条独立的路径至少执行一次。 • 保证所有判断的每一分支至少执行一次。 • 保证每一循环都在边界条件和一般条件下至少各执行 一次。 • 验证所有各内部数据结构的有效性