1、软件测试及其地位

  软件测试是软件生命周期中的一个重要阶段,是软件质量保证的关键步骤。软件测试的目的是为了检验软件系统是否满足需求。软件测试应该是“为了发现错误而执行程序的过程”。或者说,软件测试应该根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误或缺陷。

  随着软件危机的频繁出现,以及人们对软件本质的进一步认识,软件测试的地位得到了前所未有的提高。软件测试已经不仅仅局限于软件开发中的一个阶段,它已经开始贯穿于整个软件开发过程,人们已经开始认识到:测试开始的时间越早,测试执行的越频繁,所带来的整个软件开发成本的下降就会越多。

  美国质量保证研究所对软件测试的研究结果表明:越早发现软件中存在的问题,开发费用就越低;在编码后修改软件缺陷的成本是编码前的10倍,在产品交付后修改软件缺陷的成本是交付前的10倍。另外,根据对国际著名IT企业的统计,它们的软件测试费用占整个软件工程所有研发费用的50%以上,软件测试时间占整个软件工程所有研发时间的40%至50%。

  2、软件测试中的常见问题

  软件测试虽然日益受到重视,但是,目前不少软件企业的软件开发模式仍然处在无序开发的不规范状态,与软件编程比较,软件测试的地位和作用,还没有真正受到重视,很多人还存在对软件测试的错误认识,这更影响软件测试活动的进行和真正提高软件测试质量。下面几小节将列出一些软件测试上的常见问题并进行解释。

  2.1 软件测试仅仅是为了发现软件缺陷

  对软件测试略有了解的人都知道,在说到软件测试时,多数人都会强调软件测试的目的是为了发现软件中的缺陷。一个好的测试用例在于能发现至今未发现的缺陷。也就是人们常说的:软件测试可以说明软件存在缺陷,但不能说明软件不存在缺陷。

  这种观点不能说是错误的,但至少是不全面的。如果从软件过程的角度来看,就可以看到一个被大多数人忽略的软件测试目的是:软件测试可以帮助发现当前开发工作所采取的软件过程的缺陷,以便进行改进。

  具体的说,软件测试并不仅仅是为了要找到软件中的缺陷,而是分析错误产生的原因和其产生的阶段。通过分析结果,从软件过程方面去改进,从而避免今后有类似的错误出现,并能发现有关联的潜在缺陷。这样,就可以尽早的发现和修正缺陷,并可以预防某些缺陷的产生。因此,应该正确分析与利用测试的结果并有效地进行软件过程改进,从根本上提高软件质量,降低软件开发成本。

  2.2 编码完成后再进行软件测试

  根据软件生命周期的定义,软件项目开发过程一般要经过以下几个阶段:需求分析,概要设计,详细设计,软件编码,软件测试,软件发布。因此,许多人认为软件测试只是软件编码后的一个过程。这是不了解软件测试周期的真正含义造成的错误认识。

  软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。因此,软件测试贯穿于软件项目的整个开发过程。在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档。软件开发与软件测试应该是交互进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试,系统集成阶段需要系统测试。如果等到软件编码结束后才进行测试,那么,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将大打折扣。更严重的是如果此时发现了软件需求阶段或概要设计阶段的错误,要修复错误,将会耗费大量的时间和人力。

  高效的系统测试有赖于高效的计划。测试用例像源代码一样,需要设计、评审和实施。如果不想让测试成为阻碍软件发布的关键路径,就要尽早开始测试计划。可以在了解了需求之后就开始。若采用分阶段交付使用的方法,在第一阶段中途就可获得可执行的软件,这时就可以开始系统测试。

  ......

本文转载自51Testing软件测试网,查看全文:http://www.51testing.com/html/89/n-837489.html