6.3.2 软件测试的目标和原则

更新于 2026年10月10日 版权声明
6.3.2 软件测试的目标和原则

(1)软件测试的目标。

大量统计资料表明,软件测试工作量往往占软件开发总工作量的40%以上。特殊情况下,对于性命攸关的软件,例如飞行控制、核反应堆监控软件等,其测试费用甚至高达所有其他软件工程阶段费用总和的3~5倍。软件测试首先要明确目标,然后,要掌握测试方法策略,确实做到尽可能地将软件中存在的问题找出来,以保证软件质量。

以下是G.J.Myers在《软件测试技巧》一书中对测试提出的规则,可看作软件测试的目标。

①测试是为了发现程序中的错误而执行程序的过程。

②好的测试方案能够发现尚未发现的错误。

③成功的测试是发现了尚未发现的错误的测试。

如果认为测试是为了表明程序是正确的,那么从主观上不是为了查找错误而进行测试,这样的测试是不大会发现错误的,测试者没有发现错误的愿望。

如果认为“成功的测试是没有发现错误的测试”,则很可能存在着没有发现的错误而自以为测试成功了,就像医生没有查出病人的病就自以为此人无病。

人类的活动具有高度的目的性,如果我们测试的目的是要证明程序中有错,就会选择一些容易发现程序错误的测试数据来进行测试。相反,如果测试的目的是要证明程序无错,我们就会选择使程序不易出错的数据来进行测试。

如果医生检查确诊某人患有某种疾病,使得病人能及时地对症治疗,我们会认为检查是成功的。同样,如果通过测试发现了软件中的错误,我们也认为这样的测试是“成功”的。从心理学角度看,程序编写者在进行阶段测试以后,再进行综合测试时,若仍由其自测是不适当的,因为编写者主观上往往自认为没有问题了,通常由其他人员组成的测试小组来完成测试工作才能检查出问题。

综合软件测试的定义和目标,我们可以将软件测试的主要作用总结如下:

①测试是执行一个系统或者程序的操作;

②测试是带着发现问题和错误的意图来分析和执行程序的;(https://www.daowen.com)

③测试结果可以检验程序的功能和质量;

④测试可以评估软件项目产品是否达到预期目标和是否能被客户接受;

⑤测试不仅包括执行代码,还包括对需求等编码以外东西的测试。

(2)软件测试的原则。

在软件测试过程中,通常应该遵循以下7个原则。

①所有的测试都应追溯到用户需求。这是因为软件的目的是使用户完成预定的任务,满足其需求。而软件测试揭示软件的缺陷和错误,一旦修正这些错误,就能更好地满足用户需求。

②应尽早地和不断地进行软件测试。由于软件的复杂性和抽象性,在软件生存周期各阶段都可能产生错误,所以不应把软件测试仅仅看作是软件开发的一个独立阶段,而应当把它贯穿到软件开发的各个阶段中去。在需求分析和设计阶段就应开始进行测试工作,编写相应的测试计划及测试设计文档,同时坚持在开发各阶段进行技术评审和验证,这样才能尽早发现和预防错误,杜绝某些缺陷和错误,提高软件的质量。测试工作进行得越早,越有利于提高软件的质量,这是预防性测试的基本原则。

③在有限的时间和资源下进行完全测试并找出软件所有的错误和缺陷是不可能的,软件测试不能无限进行下去,应适时终止。因为,测试输入量大、输出结果多、路径组合多,用有限的资源来达到完全测试是不现实的。

④测试只能证明软件存在错误,而不能证明软件没有错误。测试无法显示潜在的错误和缺陷,继续进一步测试可能还会找到其他错误和缺陷。

⑤充分关注测试中的集群现象。在测试的程序段中,若发现的错误数目比较多,则残存在该程序段中的错误数目也会比较多,因此我们应当花较多的时间和代价测试那些具有更多错误数目的程序模块。

⑥程序员应避免检查自己的程序。考虑到人们的心理因素,自己揭露自己程序中的错误是件不愉快的事,自己不愿意否认自己的工作。此外,由于思维定式,自己难以发现自己的错误。因此,测试一般由独立的测试部门或第三方机构进行,这样测试相对比较客观。

⑦尽量避免测试的随意性。软件测试是有组织、有计划、有步骤的活动,要严格按照测试计划进行,要避免测试的随意性。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)