软件测试概述

发表于:2009-05-14来源:作者:点击数: 标签:软件测试概述
软件危机曾经是软件界甚至整个计算机界最热门的话题。为了解决这场危机,软件从业人员、专家和学者做出了大量的努力。现在人们已经逐步认识到所谓的软件危机实际上仅是一种状况,那就是软件中有错误,正是这些错误导致了软件 开发 在成本、进度和质量上的失控
软件危机曾经是软件界甚至整个计算机界最热门的话题。为了解决这场危机,软件从业人员、专家和学者做出了大量的努力。现在人们已经逐步认识到所谓的软件危机实际上仅是一种状况,那就是软件中有错误,正是这些错误导致了软件开发在成本、进度和质量上的失控。有错是软件的属性,而且是无法改变的,因为软件是由人来完成的,所有由人做的工作都不会是完美无缺的。问题在于我们如何去避免错误的产生和消除已经产生的错误,使程序中的错误密度达到尽可能低的程度。

  给软件带来错误的原因很多,具体地说,主要有如下几点:

1.     交流不够、交流上有误解或者根本不进行交流

  在应用应该做什么或不应该做什么的细节(应用的需求)不清晰的情况下进行开发。

2.     软件复杂性

  图形用户界面(GUI),客户/服务器结构,分布式应用,数据通信,超大型关系型数据库以及庞大的系统规模,使得软件及系统的复杂性呈指数增长,没有现代软件开发经验的人很难理解它。

3.     程序设计错误

  象所有的人一样,程序员也会出错。

4.     需求变化

  需求变化的影响是多方面的,客户可能不了解需求变化带来的影响,也可能知道但又不得不那么做。需求变化的后果可能是造成系统的重新设计,设计人员的日程的重新安排,已经完成的工作可能要重做或者完全抛弃,对其他项目产生影响,硬件需求可能要因此改变,等等。如果有许多小的改变或者一次大的变化,项目各部分之间已知或未知的依赖性可能会相互影响而导致更多问题的出现,需求改变带来的复杂性可能导致错误,还可能影响工程参与者的积极性。

5.     时间压力

  软件项目的日程表很难做到准确,很多时候需要预计和猜测。当最终期限迫近和关键时刻到来之际,错误也就跟着来了。

  在谈到软件测试时,许多人都引用Grenford J. Myers在《The Art of Software Testing》一书中的观点:

1.       软件测试是为了发现错误而执行程序的过程;

2.        测试是为了证明程序有错,而不是证明程序无错误;

3.        一个好的测试用例是在于它能发现至今未发现的错误;

4.        一个成功的测试是发现了至今未发现的错误的测试。

 

测试的定义

  软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复查,是软件质量保证的关键步骤。

  定义1:软件测试是为了发现错误而执行程序的过程。

  定义2:软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。

  软件测试在软件生存周期中横跨两个阶段:

1单元测试阶段:编写出每个模块之后,就对它做必要的测试。

2综合测试阶段:结束单元测试后进行的测试,如系统测试验收测试

原文转自:http://www.ltesting.net