什么是软件测试?进行软件测试的目的是什么?

  • Post author:
  • Post category:其他


一、软件测试的定义

软件测试的经典定义是在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。因为软件是由文档、数据以及程序组成的,所以软件测试的对象也就不仅仅是程序本身,而是包括软件形成过程的文档、数据以及程序。

随着软件工程化越来越被重视以及软件规模的不断扩大,软件分析、设计的作用越来越突出,而在实践中,越来越多的错误是在刚开始的分析与设计阶段就已经存在,所以对于软件需求和设计阶段的测试就显得非常重要,这就是测试概念的扩大化以及软件全生命周期测试的理念。

二、软件质量

软件质量有下面几个定义:

1991年,ISO 9126中定义

软件质量是软件满足规定的或潜在用户需求特性的总和

1999年,ISO 14598定义

软件质量是软件特性的总和,软件满足规定或潜在用户需求的能力。

一般对质量的理解是一个实体的“属性”,“属性”好就是质量好,但是这不够全面,因为“属性”是内部特性,而内部特性好不代表一定能够完成好用户的任务,所以软件质量也是关于软件特性具备“能力”的体现。

软件质量包括“内部质量”、“外部质量”、“使用质量”三个部分,也就是说,软件满足规定的或潜在的用户需求的能力要这三个方面去衡量。

三、软件测试与质量保证的区别

质量保证: 质量保证的工作是通过预防、检查和改进来保证软件质量。QA使用“全面质量管理”和“过程改进”的原理开展质量保证工作。所关注的是软件质量的管理与测量。虽然QA活动也有些测试活动,但所关注的主要是软件质量的检查与测量。

软件测试: 测试和质量保证同样都是与软件的开发过程紧密相关,但不同的是其并不关心软件开发过程的活动,而是对过程的产物以及开发出的软件进行剖析。测试活动必须假设软件中存在潜在问题,测试中所有的操作都是为了找出更多的问题,而不仅仅是为了验证每一件事是正确的。对测试中发现的问题的分析、追踪与回归测试也是软件测试中的重要工作,所以说软件测试是保证其质量的重要一环。

四、软件测试的目的

在早期,软件定义指出软件测试的目的是寻找错误,并且尽可能找出更多的错误。后面,有人提出了以下几个目的:

1.测试是程序的执行过程,目的在于发现错误

2.一个好的测试用例在于能够发现至今为止未发现的错误

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

4.也有人提出软件测试不仅仅是为了发现缺陷,更重要的是要通过对软件质量的度量以提高软件的质量。

综上所述,软件测试的目的可以概括如下:软件测试是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。 同时,测试是以评价一个程序或者系统属性为目标的活动,测试是对软件质量的度量与评估,以验证软件的质量满足用户的需求的程度,为用户选择和接收软件提供有力依据。

备注: 测试是为了证明软件是否可以使用,即是符合用户的需求的。

五、软件测试的原则

原则1: 所有的测试都应追溯到用户需求

由于软件设计和开发的目的就是使用户完成预定的任务,并满足用户的需求,而软件测试所揭示的缺陷和错误使软件达不到用户的目标,满足不了用户的需求。

原则2: 应该尽早地和不断地进行软件测试

因为软件生命周期的各个阶段都有可能产生错误,所以不能把软件测试仅仅看作为软件开发活动中的一个独立阶段的工作,而应该将其贯穿于开发的各个阶段中。同时还应尽可能早的开始测试,只要测试在生命周期中进行得足够早,就能够提高被测软件的质量,这就是预防性测试的基本原则。

原则3: 完全测试是不可能的,测试需要终止

在有限的时间和资源条件下,找出所有的软件缺陷是不可能的,主要有三个方面的原因:

1.输入量太大

2.输出结果太多

3.路径组合太多

原则4: 测试不能显示软件潜在的缺陷

也就是说测试只能证明软件中存在缺陷而不能证明软件中没有缺陷。

原则5: 充分注意测试中的集群现象

经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目或检错率成正比。根据这个规律,应对错误集群的程序段进行重点测试,以提高测试效益。

原则6: 程序员应避免检查自己写的程序

这有两个原因,一个是心理原因,一个是思维定式原因,一个使人不大愿意承认自己的错误以及思维定式导致难以发现自己的错误,因此为达到测试目的,应该避免这种情况出现。

原则7: 尽量避免测试的随意性

应该从工程的角度去理解软件测试,他是有组织、有计划、有步骤的活动

附: 内容来自《软件评测师教程》