软件测试7大原则

软件测试七大原则与分类

2015年09月20日 10:30:50 15届-HP-EPM测试4-王娇 阅读数:1882

软件测试七大原则

一、测试显示缺陷的存在

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

二、穷尽测试是不可能的

 穷尽测试是不可能的,当满足一定的测试出口准则时测试就应当终止。考虑到所有可能输入值和它们的组合,以及结合所有不同的测试前置条件,这是一个天文数字,我们没有可能进行穷尽测试。

三、测试的尽早介入

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

四、缺陷集群性

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

五、杀虫剂悖论

 论杀虫剂用得多了,害虫就有免疫力,杀虫剂就发挥不了效力。在测试中,同样的测试用例被一遍一遍反复使用时,发现缺陷的能力就会越来越差。这种现象的主要原因在于测试人员没有及时更新测试用例,同时对测试用例及测试对象过于熟悉,形成思维定势。为克服这种现象,测试用例需要经常的评审和修改,不断增加新的不同的测试用例来测试软件或系统的不同部分,保证测试用例永远是最新的,即包含着最后一次程序代码或说明文档的更新信息。

六、测试活动依赖于测试背景

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

七、不存在缺陷的谬论

 系统的质量特征不仅仅是功能性要求,还包括了很多其它方面的要求比如稳定性、可用性、兼容性等等。假如系统无法使用,或者系统不能完成客户的需求和期望,那么,这个系统的研发是失败。同时在系统中发现和修改缺陷也是没有任何意义的。

软件测试分类

 

1)是否关心内部结构:白盒测试、黑盒测试、灰盒测试

白盒测试: 又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。

黑盒测试:也称功能测试,它是通过测试来检测每个功能是否都能正常使用。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。

灰盒测试:是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段,不仅关注输出、输入的正确性,同时也关注程序内部的情况。

2)开发过程级别:单元测试、集成测试、系统测试、验收测试

单元测试:是指对软件中的最小可测试单元进行检查和验证。

集成测试:(也叫组装测试,联合测试)是单元测试的逻辑扩展。它最简单的形式是:把几个已经测试过的单元组合成一个组件,测试它们之间的接口。

系统测试:是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试。

验收测试:是部署软件之前的最后一个测试操作。在软件产品完成了单元测试、集成测试和系统测试之后,产品发布之前所进行的软件测试活动。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。

3)是否执行程序:静态测试(  用例评审,代码走读)、动态测试

静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试。而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。

4)执行是否需要人工干预:手工测试、自动化测试

手工测试:就是由人去一个一个的输入用例,然后观察结果,和机器测试相对应,属于比较原始但是必须的一个步骤。

自动化测试:  是把以人为驱动的测试行为转化为机器执行的一种过程。

5)测试实施组织:开发测试、用户测试、第三方测试

第三方测试:有别于开发人员或用户进行的测试,其目的是为了保证测试工作的客观性。

 

 

 

软件测试的7大原则

发表于:2014-11-27 13:33  作者:Amir Ghahrai/大头   来源:测试窝

字体:大 中 小 | 上一篇 | 下一篇 |我要投稿 | 推荐标签: 软件测试 软件测试技术

软件测试7大原则_第1张图片

  软件测试是一个极有创意以及挑战智力的任务。当根据下述的原则来进行测试,测试设计和执行将比其他任何软件开发步骤更具有创造性。

  测试显示bug的存在

  测试应用程序只能显示在应用程序中存在一个或多个缺陷,但是,仅仅通过测试并不能证明应用程序没有错误。因此,设计测试用例使其尽可能多的找到缺陷是很重要的。

  穷举测试不可能

  除非受测试应用(UAT)具有非常简单的逻辑结构和有限的输入,进行所有测试数据和场景的组合是不可能的事。出于这个原因,风险评估和优先级被用于集中测试最重要的方面。

  尽早测试

  我们越早开始测试活动,就越可以更好的利用可用的时间。当最初的产品,例如要求或设计文件完成后,我们就可以开始测试。测试阶段常会在开发周期的最后部分也就是开发完成之后遭到时间压缩。因此,尽早开始测试,我们可以针对开发生命周期的每个阶段进行测试的准备。

  另一个关于尽早测试的重要的一点是,当缺陷在生命周期中更早的被发现时,它们更容易解决而且成本更低。改变不正确的要求比起必须改变一个大型系统中没有按照要求或设计来工作的功能要成本低得多!

  缺陷群

  在测试过程中,可以观察到,大多数报告的缺陷都与少数几个系统内的模块有关。即少量模块包含了系统中大部分的缺陷。这也是帕雷托法则(二八定律)在软件测试方面的实际应用:约80%的问题被发现在20%的模块中。

  杀虫剂悖论

  如果持续运行同一套测试一遍又一遍,有可能那些测试用例就无法发现新的缺陷。因为随着系统的发展,许多以前报道的缺陷将会被修好,旧的测试用例就不再适用了。每当修复完缺陷或添加了新的功能后,我们需要做回归测试,以确保新更改的软件不破坏该软件的任何其他部分。然而,这些回归测试用例也需要根据软件本身的变化作出改变,使其能够更加适用并找到新的缺陷。

  测试是上下文相关的

  不同的测试方法,测试技术和测试类型是根据应用程序的类型和性质来决定的。例如,运用于医疗设备上的软件应用程序相比游戏软件需要进行更多的测试。更重要的是医疗设备软件需要基于风险测试,需要符合医疗行业监管以及可能的特殊测试设计技术。出于同样的原因,一个非常受欢迎的网站,需要经过严格的性能试验,以及功能性的测试,以确保性能不受服务器上的负载的影响

你可能感兴趣的:(面试)