什么是软件测试(software testing)?

发表于:2014-09-24来源:uml.org.cn作者:不详点击数: 标签:软件测试
软件测试是使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。

  软件测试是使用人工操作或者软件自动运行的方式来检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别的过程。

  它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality)的软件过程;是SQA(software quality assurance)的重要子域。

  Glenford J.Myers曾对软件测试的目的提出过以下观点:

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

  (2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案。

  (3)成功的测试是发现了至今为止尚未发现的错误的测试。

  (4)测试并不仅仅是为了找出错误。通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。

  (5)这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性。

  (6)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。

  (7)另外,根据测试目的的不同,还有回归测试、压力测试、性能测试等,分别为了检验修改或优化过程是否引发新的问题、软件所能达到处理能力和是否达到预期的处理能力等。

 
2
内容

  软件测试主要工作内容是验证(verification)和确认(validation),下面分别给出其概念:

  验证(verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。(Dotherightthing)

  1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;

  2.程序正确性的形式证明,即采用形式理论证明程序符号设一计规约规定的过程;

  3.评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。

  确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件(Doitright)

  1.静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性;

  2.动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。

  软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期问各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。

  软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试是为了发现错误而执行程序的过程。软件测试在软件生存期中横跨两个阶段:通常在编写出每一个模块之后就对它做必要的测试(称为单元测试)。编码和单元测试属于软件生存期中的同一个阶段。在结束这个阶段后对软件系统还要进行各种综合测试,这是软件生存期的另一个独立阶段,即测试阶段。

  测试目的

  软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。

  第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。

原文转自:http://www.uml.org.cn/Test/test-bk.asp