311软件测试的复杂性 (4)缺陷的不确定性 在软件测试中还有一个让人不容易判断的现象是缺陷的不确定性。即并不是所有的 软件缺陷都需要被修复。对于究竟什么才算是软件缺陷是一个很难把握的标准,在 任何一本软件测试的书中都只能给出一个笼统的定义。实际测试中需要把这一定义 根据具体的被测对象明确仳。即使这样,具体的测试人员对软件系统的理解不同, 还是会出现不同的标准。 第三章软件测试流程
3.1.1 软件测试的复杂性 第三章 软件测试流程 (4) 缺陷的不确定性 在软件测试中还有一个让人不容易判断的现象是缺陷的不确定性。即并不是所有的 软件缺陷都需要被修复。对于究竟什么才算是软件缺陷是一个很难把握的标准,在 任何一本软件测试的书中都只能给出一个笼统的定义。实际测试中需要把这一定义 根据具体的被测对象明确化。即使这样,具体的测试人员对软件系统的理解不同, 还是会出现不同的标准
312软件测试的经济性 软件测试的经济性有两方面体现 是体现在测试工作在整个项目开发过程中的重要地位; 是体现在应该按照什么样的原则进行测试,以实现测试成本与 测试效果的统 软件工程的总目标是充分利用有限的人力和物力资源,高效率、 高质量地完成测试。结合3.1.1节关于穷举测试具有不可行性,就可 以理解为什么要在测试量与测试成本的曲线中选取最优测试点 第三章软件测试流程
3.1.2 软件测试的经济性 第三章 软件测试流程 软件测试的经济性有两方面体现: 一是体现在测试工作在整个项目开发过程中的重要地位; 二是体现在应该按照什么样的原则进行测试,以实现测试成本与 测试效果的统一。 软件工程的总目标是充分利用有限的人力和物力资源,高效率、 高质量地完成测试。结合3.1.1节关于穷举测试具有不可行性,就可 以理解为什么要在测试量与测试成本的曲线中选取最优测试点
313软件测试的充分性准则 软件测试的充分性准则有以下几点: 对任何软件都存在有限的充分测试集合 当一个测试的数据集合对于一个被测的软件系统的测试是充分的,那 么再多增加一些测试数据仍然是充分的。这一特性称为软件测试的单调 性 即使对软件所有成分都进行了充分的测试,也并不意味着整个软件的 测试已经充分了。这一特性称为软件测试的非复合性; 即使对一个软件系统整体的测试是充分的,也并不意味着软件系统中 各个成分都已经充分地得到了测试。这个特性称为软件测试的非分解性; 软件测试的充分性与软件的需求、软件的实现都相关 软件测试的数据量正比于软件的复杂度。这一特性称为软件测试的复 杂性 随着测试次数的增加,检查岀软件缺陷的几率随之不断减少。软件测 试具有回报递减率。 第三章软件测试流程
3.1.3 软件测试的充分性准则 第三章 软件测试流程 软件测试的充分性准则有以下几点: •对任何软件都存在有限的充分测试集合; •当一个测试的数据集合对于一个被测的软件系统的测试是充分的,那 么再多增加一些测试数据仍然是充分的。这一特性称为软件测试的单调 性; •即使对软件所有成分都进行了充分的测试,也并不意味着整个软件的 测试已经充分了。这一特性称为软件测试的非复合性; •即使对一个软件系统整体的测试是充分的,也并不意味着软件系统中 各个成分都已经充分地得到了测试。这个特性称为软件测试的非分解性; •软件测试的充分性与软件的需求、软件的实现都相关; •软件测试的数据量正比于软件的复杂度。这一特性称为软件测试的复 杂性; •随着测试次数的增加,检查出软件缺陷的几率随之不断减少。软件测 试具有回报递减率
314软件测试的误区 随着软件产业工业化、模块化地发展,在软件开发组中软件测试 人员的重要性也不断地突出。在国外,很多著名企业早已对软件 测试工作十分重视。比如著名的微软公司,其软件测试人员与开 发人员的比例已经达到2:1。可见软件测试对于一个软件开发项 目的成功与否具有十分重要的意义。但是在实际的项目开发与管 理中仍然存在很多管理上或者技术上的误区 (1)期望用测试自动化代替大部分人工劳动 (2)忽视需求阶段的参与 (3)软件测试是技术要求不高的岗位 第三章软件测试流程
3.1.4 软件测试的误区 第三章 软件测试流程 随着软件产业工业化、模块化地发展,在软件开发组中软件测试 人员的重要性也不断地突出。在国外,很多著名企业早已对软件 测试工作十分重视。比如著名的微软公司,其软件测试人员与开 发人员的比例已经达到2:1。可见软件测试对于一个软件开发项 目的成功与否具有十分重要的意义。但是在实际的项目开发与管 理中仍然存在很多管理上或者技术上的误区: (1) 期望用测试自动化代替大部分人工劳动 (2) 忽视需求阶段的参与 (3) 软件测试是技术要求不高的岗位
32软件测试的流程 1.软件开发的V模型 软件测试是有阶段性的,而软件测试的流程与软件设计周期究竟是什么样 的关系呢?关于软件开发流程的V模型是一个广为人知的模型,如图3-2所示 。在V模型中,从左到右描述了基本的开发过程和测试行为,为软件的开发 人员和测试管理者提供了一个极为简单的框架。Ⅴ模型的价值在于它非常明 确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和 开发过程期间各阶段的对应关系 在Ⅴ模型中各个测试阶段的执行流程是:单元测试是基于代码的测试,最 初由开发人员执行,以验证其可执行程序代码的各个部分是否已达到了预期 的功能要求;集成测试验证了两个或多个单元之间的集成是否正确,并且有 针对性地对详细设计中所定义的各单元之间的接口进行检查;在单元测试和 集成测试完成之后,系统测试开始用客户环境模拟系统的运行,以验证系统 是否达到了在概要设计中所定义的功能和性能;最后,当技术部门完成了所 有测试工作,由业务专家或用户进行验收测试,以确保产品能真正符合用户 业务上的需要。图3-2描绘出了各个测试环节在整个软件测试工作中的相互 联系与制约关系 第三章软件测试流程
3.2 软件测试的流程 第三章 软件测试流程 1.软件开发的V模型 软件测试是有阶段性的,而软件测试的流程与软件设计周期究竟是什么样 的关系呢?关于软件开发流程的V模型是一个广为人知的模型,如图3-2所示 。在V模型中,从左到右描述了基本的开发过程和测试行为,为软件的开发 人员和测试管理者提供了一个极为简单的框架。V模型的价值在于它非常明 确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和 开发过程期间各阶段的对应关系。 在V模型中各个测试阶段的执行流程是:单元测试是基于代码的测试,最 初由开发人员执行,以验证其可执行程序代码的各个部分是否已达到了预期 的功能要求;集成测试验证了两个或多个单元之间的集成是否正确,并且有 针对性地对详细设计中所定义的各单元之间的接口进行检查;在单元测试和 集成测试完成之后,系统测试开始用客户环境模拟系统的运行,以验证系统 是否达到了在概要设计中所定义的功能和性能;最后,当技术部门完成了所 有测试工作,由业务专家或用户进行验收测试,以确保产品能真正符合用户 业务上的需要。图3-2描绘出了各个测试环节在整个软件测试工作中的相互 联系与制约关系