background image

法。

3.2 软件测试的描述

测试是软件开发过程的重要组成部分

, 是用来确认一个程序的品质或性能

是否符合开发之前所提出的一些要求。软件测试的目的

, 第一是确认软件的质量, 

其一方面是确认软件做了你所期望的事情(

Do the right thing), 另一方面是

确认软件以正确的方式来做了这个事件(

Do it right);第二是提供信息, 比

如提供给开发人员或程序经理的反馈信息

, 为风险评估所准备的信息;第三软

件测试不仅是在测试软件产品的本身

, 而且还包括软件开发的过程。如果一个软

件产品开发完成之后发现了很多问题

, 这说明此软件开发过程很可能是有缺陷

的。

3.3 软件测试的目的

如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软

件比较复杂的部分或是以前出错比较多的位置。如果测试目的是为了给最终用户

提供具有一定可信度的质量评价,那么测试就应该直接针对在实际应用中会经

 

常用到的商业假设。 在谈到软件测试时,引用

Grenford J. Myers 在《The Art 

of Software Testing》一书中的观点: (1)软件测试是为了发现错误而执行程序

的过程

; (2)测试是为了证明程序有错,而不是证明程序无错误; (3)一个好的测

试用例是在于它能发现至今未发现的错误

; (4)一个成功的测试是发现了至今未

 

发现的错误的测试。 这种观点可以提醒人们测试要以查找错误为中心,而不是

为了演示软件的正确功能。但是仅凭字面意思理解这一观点可能会产生误导,认

为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实

 

并非如此。首先,测试并不仅仅是为了要找出错误。通过分析错误产生的原因和

错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以

便改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的

有效性。其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量

3