`
softstone
  • 浏览: 477793 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

软件测试的复杂性与经济性

阅读更多

软件测试的复杂性与经济性

(本文转载自软件工程专家网www.21cmm.com

  人们常常以为,开发一个程序是困难的,测试一个程序则比较容易。这其实是误解。设计测试用例是一项细致并需要高度技巧的工作,稍有不慎就会顾此失彼,发生不应有的疏漏。

  不论是黑盒测试方法还是白盒测试方法,由于测试情况数量巨大,都不可能进行彻底的测试。所谓彻底测试,就是让被测程序在一切可能的输入情况下全部执行一遍。通常也称这种测试为“穷举测试”。 “黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。 “白盒”法是穷举路径测试,贯穿程序的独立路径数是天文数字,但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。E.W.Dijkstra的一句名言对测试的不彻底性作了很好的注解:“程序测试只能证明错误的存在,但不能证明错误不存在”。

  在实际测试中,穷举测试工作量太大,实践上行不通,这就注定了一切实际测试都是不彻底的。当然就不能够保证被测试程序中不存在遗留的错误。软件工程的总目标是充分利用有限的人力和物力资源,高效率、高质量地完成测试。为了降低测试成本,选择测试用例时应注意遵守“经济性”的原则。第一,要根据程序的重要性和一旦发生故障将造成的损失来确定它的测试等级;第二,要认真研究测试策略,以便能使用尽可能少的测试用例,发现尽可能多的程序错误。掌握好测试量是至关重要的,一位有经验的软件开发管理人员在谈到软件测试时曾这样说过:“不充分的测试是愚蠢的,而过度的测试是一种罪孽”。测试不足意味着让用户承担隐藏错误带来的危险,过度测试则会浪费许多宝贵的资源。

  测试是软件生存期中费用消耗最大的环节。测试费用除了测试的直接消耗外,还包括其它的相关费用。能够决定需要做多少次测试的主要影响因素如下:

①、系统的目的

  系统的目的的差别在很大程度上影响所需要进行的测试的数量。那些可能产生严重后果的系统必须要进行更多的测试。一台在Boeing 757上的系统应该比一个用于公共图书馆中检索资料的系统需要更多的测试。一个用来控制密封燃气管道的系统应该比一个与有毒爆炸物品无关的系统有更高的可信度。一个安全关键软件的开发组比一个游戏软件开发组要有苛刻得多的查找错误方面的要求。

②、潜在的用户数量

  一个系统的潜在用户数量也在很大程度上影响了测试必要性的程度。这主要是由于用户团体在经济方面的影响。一个在全世界范围内有几千个用户的系统肯定比一个只在办公室中运行的有两三个用户的系统需要更多的测试。如果不能使用的话,前一个系统的经济影响肯定比后一个系统大。除此而外,在分配处理错误的时候,所花的代价的差别也很大。如果在内部系统中发现了一个严重的错误,在处理错误的时候的费用就相对少一些,如果要处理一个遍布全世界的错误就需要花费相当大的财力和精力。

③、信息的价值

  在考虑测试的必要性时,还需要将系统中所包含的信息的价值考虑在内,一个支持许多家大银行或众多证券交易所的客户机/服务器系统中含有经济价值非常高的内容。很显然这一系统需要比一个支持鞋店的系统要进行更多的测试。这两个系统的用户都希望得到高质量、无错误的系统,但是前一种系统的影响比后一种要大得多。因此我们应该从经济方面考虑,投入与经济价值相对应的时间和金钱去进行测试。

④、开发机构

  一个没有标准和缺少经验的开发机构很可能开发出充满错误的系统。在一个建立了标准和有很多经验的开发机构中开发出来的系统中的错误不会很多,因此,对于不同的开发机构来说,所需要的测试的必要性也就截然的不同。 然而,那些需要进行大幅度改善的机构反而不大可能认识到自身的弱点。那些需要更加严格的测试过程的机构往往是最不可能进行这一活动的,在许多情况下,机构的管理部门并不能真正地理解开发一个高质量的系统的好处。

⑤、测试的时机

  测试量会随时间的推移发生改变。在一个竟争很激烈的市场里,争取时间可能是制胜的关键,开始可能不会在测试上花多少时间,但几年后如果市场分配格局已经建立起来了,那么产品的质量就变得更重要了,测试量就要加大。测试量应该针对合适的目标进行调整。

分享到:
评论

相关推荐

    非常实用的软件测试综合资料库

    四、软件测试的复杂性与经济性 五、软件测试的心理学问题 六、好的测试工程师应具备的素质 七、参考文献   一、概述 信息技术的飞速发展,使软件产品应用到社会的各个领域,软件产品的质量自然成为...

    软件测试、面经刷题、测试岗位刷题

    4. 软件测试的原则:软件测试的原则包括测试的独立性、测试的充分性、测试的可重复性和测试的经济性。 5. 软件测试的工作流程:软件测试的工作流程包括测试计划、测试用例设计、测试环境搭建、测试执行、测试结果...

    《软件测试技术基础教程》习题解答参考.pdf

    软件测试的经济性是软件测试的重要方面之一。软件测试的费用除了测试的直接消耗外,还包括其他的相关费用。影响测试费用的主要因素有软件的功能、目标用户的数量、潜在缺陷造成的影响、开发机构的业务能力和测试的...

    软件测试技术 测试基本概念和单元测试

    另一方面,由于软件系统的规模和复杂性不断增加,一旦出现问题,可能导致巨大的经济损失和社会影响。因此,提高软件质量成为了一个亟待解决的问题,而软件测试作为提高软件质量的重要手段,其重要性不言而喻。 **...

    软件测试培训感想

    进入90年代,随着软件规模的扩大和复杂性的增加,测试活动变得更为重要且需要更高的效率。因此,自动化测试工具应运而生,它们提高了测试效率,减少了人工比对的疏漏,使得夜间测试和无人测试成为可能。 软件测试的...

    软件测试技术与前景 ppt

    在当前信息化社会中,软件应用无处不在,其复杂性和规模日益增长,因此软件测试的重要性也愈发凸显。 首先,我们需要理解为什么需要软件测试。微软的Word错误输入“此致”后的日语问候语就是一个典型的例子,说明...

    软件测试报告 调研报告 主流软件测试工具

    《主流软件测试工具详解与应用》 在软件开发过程中,软件测试扮演着至关重要的角色,它确保产品的稳定性和可靠性。为了提升测试效率和质量,众多的软件测试工具应运而生。本文将针对调研报告中的主流软件测试工具...

    软件测试方法与技术:2软件测试策略与过程.ppt

    软件测试策略应考虑软件的复杂性,合理安排测试资源,制定适当的测试计划,以确保测试的有效性和经济性。测试充分性的原则,如单调性、非复合性、非分解性和复杂性,有助于指导测试工作的进行。同时,理解测试的回报...

    基于云计算的计算机软件测试技术.pdf

    云计算中的大规模分布式计算能力、弹性可伸缩的资源利用模式以及按需付费的商业模式,为软件测试提供了高效、灵活、经济的测试环境。云计算使得测试者可以迅速获得大量的计算资源和存储资源,从而在较短的时间内执行...

    软件测试课后题

    软件测试中的群集现象是指在软件测试中,某些模块或组件可能存在多个错误或缺陷,而这些错误或缺陷可能会相互影响和交叉,从而增加了软件测试的难度和复杂性。 九、软件测试的 reports 和文档 软件测试的 reports ...

    软件测试毕业实习报告

    随着信息技术的发展,软件产品的复杂度不断提高,软件测试的专业性和重要性也越来越受到业界的重视。 - **实习目的**:本次实习旨在让实习生通过实际参与软件测试工作,了解软件测试的基本流程和技术,掌握必要的...

    软件测试(完整版)

    总之,软件测试是一项复杂的活动,涵盖了多种测试技术和策略。通过综合运用黑盒测试、白盒测试、集成测试、系统测试以及面向对象的测试方法,软件开发团队可以全面评估软件的质量,确保产品满足用户需求和期望。同时...

    软件测试教学文档

    软件测试的复杂性与经济性是需要考虑的重要因素。随着软件规模的增大,测试的复杂度会显著增加,因此,需要合理规划测试资源,以获得最大的效益。同时,测试过程中的心理学问题也不容忽视,如测试者的主观判断、疲劳...

    软件测试必看 入门级的教程

    11.5 软件测试的经济目的 54 11.5.1 满足用户需求,提高产品的竞争力,最终提高产品的销售量 54 11.5.2 尽早发现缺陷,降低后继质量成本 54 11.6 何时应当停止测试 56 十二 整体性能测试剖析 57 十三 性能测试...

Global site tag (gtag.js) - Google Analytics