软件测试基本原则

  软件测试经过几十年的发展,测试界提出了很多软件测试的基本原则,为测试管理人员和测试人员提供了测试指南。软件测试原则非常重要,测试人员应该在测试原则指导下进行测试活动。
  软件测试的基本原则有助于测试人员进行高质量的测试,尽早尽可能多的发现缺陷,并负责跟踪和分析软件中的问题,对存在的问题和不足提出质疑和改进,从而持续改进测试过程。

原则1: 测试显示缺陷的存在
  测试可以显示缺陷的存在,但不能证明系统不存在缺陷。测试可以减少软件中存在缺陷的可能性,但即使测试没有发现任何缺陷,也不能证明软件或系统是完全正确的,或者说是不存在缺陷的。

原则2: 穷尽测试是不可能的
  穷尽测试是不可能的,当满足一定的测试出口准则时测试就应当终止。考虑到所有可能输入值和它们的组合,以及结合所有不同的测试前置条件,这是一个天文数字,我们没有可能进行穷尽测试。在实际测试过程中,测试人员无法执行“天文”数字的测试用例。所以说,每个测试都只是抽样测试。因此,必须根据测试的风险和优先级,控制测试工作量,在测试成本、收益和风险之间求得平衡。

原则3: 测试的尽早介入
  根据统计表明,在软件开发生命周期早期引入的错误占软件过程中出现所有错误(包括最终的缺陷)数量的50%~60%。此外,IBM的一份研究结果表明,缺陷存在放大趋势。如需求阶段的一个错误可能会导致N个设计错误,因此,越是测试后期,为修复缺陷所付出的代价就会越大。因此,软件测试人员要尽早地且不断地进行软件测试,以提高软件质量,降低软件开发成本。

原则4: 缺陷的集群性
  Pareto原则表明“80%的错误集中在20%的程序模块中”。实际经验也证明了这一点,通常情况下,大多数的缺陷只是存在测试对象的极小部分。缺陷并不是平均而是集群分布的。因此,如果在一个地方发现了很多缺陷,那么通常在这个模块中可以发现更多的缺陷。因此,测试过程中要充分注意错误集群现象,对发现错误较多的程序段或者软件模块,应进行反复的深入的测试。

原则5: 杀虫剂悖论
  杀虫剂用得多了,害虫就有免疫力,杀虫剂就发挥不了效力。在测试中,同样的测试用例被一遍一遍反复使用时,发现缺陷的能力就会越来越差。这种现象的主要原因在于测试人员没有及时更新测试用例,同时对测试用例及测试对象过于熟悉,形成思维定势。
  为克服这种现象,测试用例需要经常的评审和修改,不断增加新的不同的测试用例来测试软件或系统的不同部分,保证测试用例永远是最新的,即包含着最后一次程序代码或说明文档的更新信息。这样软件中未被测试过的部分或者先前没有被使用过的输入组合就会重新执行,从而发现更多的缺陷。同时,作为专业的测试人员,要具有探索性思维和逆向思维,而不仅仅是做输出与期望结果的比较。

原则6: 测试活动依赖于测试内容
  项目测试相关的活动依赖于测试对象的内容。对于每个软件系统,比如测试策略、测试技术、测试工具、测试阶段以及测试出口准则等等的选择,都是不一样的。同时,测试活动必须与应用程序的运行环境和使用中可能存在的风险相关联。因此,没有两个系统可以以完全相同的方式进行测试。比如,对关注安全的电子商务系统进行测试,与一般的商业软件测试的重点是不一样的,它更多关注的是安全测试和性能测试。

原则7: 没有失效不代表系统是可用的
  系统的质量特征不仅仅是功能性要求,还包括了很多其他方面的要求比如稳定性、可用性、兼容性等等。假如系统无法使用,或者系统不能完成客户的需求和期望,那么,这个系统的研发是失败。同时在系统中发现和修改缺陷也是没有任何意义的。
  在开发过程中用户的早期介入和接触原型系统就是为了避免这类问题的预防性措施。有时候,可能产品的测试结果非常完美,可最终的客户并不买帐。因为,这个开发角度完美的产品可能并不是客户真正想要的产品。

原则8: 测试的标准是用户的需求
  提供软件的目的是帮助用户完成预定的任务,并满足用户的需求。这里的用户并不特指最终软件测试使用者。比如我们可以认为系统测试人员是系统需求分析和设计的客户。软件测试的最重要的目的之一是发现缺陷,因此测试人员应该在不同的测试阶段站在不同用户的角度去看问题,系统中最严重的问题是那些无法满足用户需求的错误。

原则9: 尽早定义产品的质量标准
  只有建立了质量标准,才能根据测试的结果,对产品的质量进行分析和评估。同样,测试用例应该确定期望输出结果。如果无法确定测试期望结果,则无法进行检验。必须用预先精确对应的输入数据和输出结果来对照检查当前的输出结果是否正确,做到有的放矢。

原则10: 测试贯穿于整个生命周期
  由于软件的复杂性和抽象性,在软件生命周期的各个阶段都可能产生错误,测试的准备和设计必须在编码之前就开始,同时为了保证最终的质量,必须在开发过程的每个阶段都保证其过程产品的质量。因此不应当把软件测试仅仅看作是软件开发完成后的一个独立阶段的工作,应当将测试贯穿于整个生命周期始末。
  软件项目一启动,软件测试就应该介入,而不是等到软件开发完成。在项目启动后,测试人员在每个阶段都应该参与相应的活动。或者说每个开发阶段,测试都应该对本阶段的输出进行检查和验证。比如在需求阶段,测试人员需要参与需求文档的评审。

原则11: 第三方或独立的测试团队
  由于心理因素,人们潜意识都不希望找到自己的错误。基于这种思维定势,人们难于发现自己的错误。因此,由严格的独立测试部门或者第三方测试机构进行软件测试将更客观、公正,测试活动也会达到更好效果。
  软件开发者应尽量避免测试自己的产品,应由第三方来进行测试,当然开发者需要在交付之前进行相关的自测。测试是带有破坏性的活动,开发人员的心理状态会影响测试的效果。同时对于需求规格说明的理解产生的错误,开发人员自己很难发现。
  但是,第三方或者独立的测试团队这个原则,并不是认为所有的测试完全由他们来完成。一定程度的独立测试(可以避免开发人员对自己代码的偏爱),可以更加高效的发现软件缺陷和软件存在的失效。但独立测试不是完全的替代物,因为开发人员也可以高效的在他们的代码中找出很多缺陷。在软件开发的早期,开发人员对自己的工作产品进行认真的测试,这也是开发人员的一个职责之一。

时间: 2024-10-13 23:52:10

软件测试基本原则的相关文章

什么是软件测试及软件测试基本原则

一.软件测试: 测试是对软件产品质量的检验和评价.它一方面检查软件产品质量中存在的质量问题,另一方面对产品质量进行客观的评价. 测试目的:简单地说,就是替用户受过,测试的最终目的是确保最终交给用户的产品的功能符合用户的需求,把尽可能多的问题在产品交给用户之前发现并改正. 具体地讲,测试一般要达到下列目标: (1)确保产品完成了它所承诺或公布的功能,并且所有用户可以访问到的功能都有明确的书面说明------在某种意义上与ISO9001是同一种思想. 产品缺少明确的书面文档,是厂商一种短期行为的表现

软件测试的几个基本原则

我一直认为软件测试是一件很有原则的工作,这个原则是最重要的,方法都应该在原则指导下进行.软件测试的基本原则是站在用户 的角度,对产品进行全面测试,尽早.尽可能多地发现 Bug,并负责跟踪和分析产品中的问题,对不足之处提出质疑和改进意见. 软件零缺陷(Zero-Bug) 是一种理念,足够好(Good-Enough)是测试的基本原则.为了达到这个足够好,在软件测试过程中,应注意和遵循的一些基本原则,可以概括为以下几项,我认为适合绝大多数的软件测试工作了. 1. 所有测试的标准都是建立在用户需求之上.

面向对象的软件测试技术

相关知识点-面象对象(=Object Oriented)技术 1. 对象和类 l 面象对象的编程语言:以对象为中心,以消息为驱动,程序=对象+消息 l 类是一种新的数据类型,是设计的核心,是通过抽象数据类型的方法来实现的一种数据类型 l 类是对某一对象的抽象,对象是某一类的实例,两者密切相关 2. 封装.继承和多态性 (1) 封装:把数据和操作结合一体,使程序结构更加紧凑,避免了数据紊乱带来的调试与维护的困难 (2) 继承:可以从一个类派生到另一个类,派生类继承了父类和祖先类的数据成员和函数,增

软件测试的几种基本方法

上次我们介绍了软件测试的基本概念及基本原则,今天我们就来看看软件测试的几种基本方法吧. 首先,当然就是我们大家熟悉的黑盒测试和白盒测试,这是按是否查看程序内部结构分的.其次,还可以按是否运行程序分为静态测试和动态测试,按阶段可分为单元测试.集成测试.系统测试.验收测试.回归测试.除此之外还有冒烟测试.随机测试等.接下来就详细介绍一下以上几种测试. 一.按是否查看程序内部结构分为: 1.黑盒测试(Black Box Testing): 黑盒测试是根据软件的规格对软件进行的测试,这类测试不考虑软件内

软件工程概论第十章--软件测试

软件测试在软件开发中起到相当重要的作用,本章主要讲了验证与确认.软件测试基础.软件测试策略.软件测试方法.面向对象软件测试及软件测试工具. 验证与确认讲了软件的错误.验证与确认.V&V的活动,软件的错误讲到有错是软件的属性,并用了几个实例开讲软件错误的危害.验证与确认是为了软件开发各环节的正确性.V&V活动即是验证与确认在各阶段制定和管理特定的任务. 软件测试基础讲了什么是软件测试即对软件产品生存周期内的检查.评审和确认,软件测试的基本原则讲了软件测试中的几个原则,测试文档主要包括测试计划

8 软件测试学习体会

软件测试在整个软件周期中的重要性,它存在于整个项目周期,在项目开始之初需求调研的时候就开始了,在形成需求规格说明书的时候就需要针对文档进行测试.这个环节在后续整个项目中占了很大的比重,能主导整个项目的走向,成败与否全在于开始阶段的决策. 体会一:软件测试的真正意义在于发现错误,而不在于验证软件是正确的. 再严密的测试也不能完全发现软件当中所有的错误,但是测试还是能发现大部分的错误,能确保软件基本是可用的,所以在后续使用的过程中还需要加强快速响应的环节.结合软件测试的理论,故障暴露在最终客户端之前

第十章、软件测试基础

1.基本原则 a.应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭. b.程序员应避免检查自己的程序. c.在设计测试用例时,应当包括输入合理的输入条件和不合理的输入条件. d.测试用例应该由测试输入数据和与之对应的预期输出结果这两部分组成. e.充分注意测试中的集群现象. f.严格执行测试计划,排除测试的随意性. g.应当对每一个测试结果做全面检查. h.妥善保存一切测试过的文档,为维护提供方便. 2.软件测试策略 a.单元测试 b.集成测试 c.确认测试 d.系统测试 e.软件调试

软件测试第五次作业——构建之法读后感

由于时间只有一周不到,所以书看的比较仓促,没有进行太多的深究,只是简单的谈谈自己第一遍简单看过之后的感受. 首先是重新审视了自己所学的专业,究竟什么才是软件工程?一千个人眼中有一千个哈姆雷特,抛去官方的定义,每个人对软件工程都有一个自己的认识,我重新的想法是:对一个项目从制定需求到售后维护一整套的人为操作,而算法加上数据结构所构成的程序从逻辑上来说是冰冷的,软件工程所做的就是赋予这些冰冷的程序灵魂,形成我们现在所熟知的软件. 其次,到目前为止我的实战项目经验很少,所以没有形成一个良好的代码规范,

木有带书之软件测试读后感

软件测试时软件质量保证的一项关键活动它是通过对需求规格说明,软件设计说明和程序代码等进行复审,以保证在软件产品交付前尽可能的发现软件中潜伏的问题. 软件错误是什么呢? 1.软件未达到产品说明书标明的功能 2.软件出现了产品说明书指明不会出现的错误 3.软件功能超出了产品说明书指明的范围 4.软件未达到产品说明书虽未指出但应达到的目标 5.软件测试人员认为软件难以理解,不易使用,运行速度缓慢,或者最终用户不满意. 软件测试的基本原则是什么呢? 1.应当把尽早地和不断地进行软件测试作为软件开发者的座