基本术语
-
故障(fault)/缺陷(defect)
-
错误(error)
-
失效(failure)
fault -> error -> failure
执行缺陷才会导致失效。直接观察到的是失效,缺陷“看不到”,因此从失效不易定位缺陷
-
测试用例(test case)
为特定目的而设计的一组测试输入、执行条件和预期输出
-
测试池(test pool)
供选择的测试用例的集合
-
测试集(test suite)
一轮测试中所选中的测试用例的集合 -
测试(test)
- 采用测试用例执行软件的活动。目标是发现失效,或
者演示正确的执行。 - 测试是比较广义的概念,对于没有预期输出的情况,
只能称测试,而不是测试用例
- 采用测试用例执行软件的活动。目标是发现失效,或
-
测试预言(test oracle)
一种独立于被测系统的程序或机制,用于确认对于给
定的输入,系统是否有一个正确的输出
缺陷
缺陷分类
从外部需求的满足情况来看
(1)软件未达到产品说明书中已经标明的功能;
(2)软件出现了产品说明书中指明不会出现的错误;
(3)软件未达到产品说明书中虽未指出但应当达到的目标
(4)软件功能超出了产品说明书中指明的范围;
(5)软件测试人员认为软件难以理解、不易使用,或者最终用户认为该软件使用效果不良。
从软件内部设计来看,主要有
(1)输入/输出缺陷;
(2)逻辑缺陷;
(3)计算缺陷;
(4)接口缺陷;
(5)数据缺陷。
缺陷与测试
测试用例评估
- 检测软件缺陷的有效性
- 测试用例的可重用性
- 测试用例的经济性
- 测试用例的可维护性
软件测试目的
(1)测试是程序的执行过程,目的在于发现错误;不能证明程序的正确性,除非仅处理有限种情况。
(2)检查系统是否满足需求也是测试的期望目标。
(3)一个好的测试用例在于发现了还未曾发现的错误;一次成功的测试则是发现了错误的测试。
测试无法说明错误不存在,只能说明软件错误已出现。
从不同人员的角度来看
- 用户:通过软件测试发现隐藏的错误和缺陷,考虑是否可以接受该产品。
- 开发者:表明软件产品不存在错误,验证软件实现了所有用户的要求。
- 测试者:发现错误,预测错误,提供软件可靠性数据。
- 根本目的:是发现错误;二是通过测试的错误来改进软件开发过程中存在的缺陷。
软件测试阶段
-
单元测试
针对软件设计的最小单元-程序模块,进行正确性检验的测试工作。目的在于发现各模块内部可能存在的各种差错。
-
集成测试
在单元测试的基础上,将所有模块按照设计要求组装成为系统进行测试。
-
确认测试(有效性测试)
验证软件的功能、性能和其它特性是否与用户的要求一致。
- 功能测试
- α测试和β测试
-
系统测试
将测试的软件作为整个计算机系统的一个元素与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行组装测试和确认测试。
软件测试技术
软件测试技术:
(1)黑盒(功能性)测试和白盒(结构性)测试
(2)静态测试和动态测试
(3)传统测试方法和面向对象测试的方法
(4)特定环境及应用的测试
- 黑盒(功能性)测试
- 将软件看做从输入到输出的黑盒,从规格说明出发
- 优点
- 与软件如何实现无关,可适应实现变化
- 测试开发可与实现并行
- 缺点
- 测试用例之间可能存在冗余
- 测试用例集局限于已描述行为(病毒等无法发现)
- 白盒(结构性)测试
- 也称透明盒测试,是已知软件实现的测试
- 优点
- 定义了丰富的覆盖率指标体系,便于度量管理
- 缺点
- 难以测试遗漏功能等问题
白盒黑盒是互补的,应组合使用,单一使用一种都不全面