如何看待软件测试在保证,如何理解完美测试

如何理解什么是完美的测试?然后又如何把测试工作做得完美?于是在微博上发出帖子,问大家如何理解什么是完美测试,但得到的答案也是不一样的。

@张定勇_darren:值得思考的问题。我的理解,软件测试是建立对产品信心的过程,将产品引发最终用户损失的风险降低到一个“可接受”的程度。因此,“完美”只能是相对的,或者说测试永达不到完美的程度(这也是测试的魅力所在)。比如我们都知道的一个基本事实是,产品的缺陷是不可能100%消除的。

@小马老矣:简单地讲,满足用户需要就可以了。从实践来看,重在测试需求分析。根据软件需求,先从功能角度,分析所有的功能点及非功能需求,并根据实际应用分级;其次是从技术角度,分析可能对功能产生影响的因素,根据风险高低分级。以此产生测试用例,并妥善安排测试计划。

@Eagle_Yu:我心中“完美测试”的结果是产品推出之后,所有使用该产品的客户都认为它是一款设计合理、性能稳定并且没有什么Bug被发现的产品。(从实现完美测试角度看)我们测试人员希望产品初期PM、RD、QA、UED能通力合作:即产品经理能明确规划出用户的需求,用户体验设计能设计出符合用户操作习惯的用户界面和性能,开发人员能分析出将要做的产品技术上是否可行、减少正式开发过程中因为技术达不到而做的返工,品质保证能明确测试范围。而且,测试计划达到测试范围明确、阶段目标清楚、风险分析准确、可执行性高。测试案例达到覆盖面广、优先级权重准确、可维护性强。测试人员经验丰富、时间充裕。同时,开发部门开发能力强、产品高内聚、松耦合。

@狂奔的小溪流:要做到完美测试,就是在规定的时间内通过各种测试方法把软件各个方面(如功能、性能……)的质量状态全面地体现出来。

@赵枚:一个自证明的系统!当这个系统交付的时侯,已经完成了其各部分的功能验证。

那我个人的理解又是如何呢?

我认为“完美测试”是通过最有效的手段(包括方法、技术和工具)完成所有必要的测试,达到事先所要求的功能需求和非功能需求的测试覆盖率、代码的测试覆盖率, 最终能准确地给出软件产品一个完整的质量评估。因此,最有效的手段、必要的测试、测试覆盖率、准确又完整的质量评估是构成“完美测试”的关键要素。

1)最有效的手段:即以最短的时间或最少的资源来有效地完成给定的测试任务。自动化测试方法是一种有效的方法,但不一定是最有效的,需要具体问题具体分析。自动化测试方法的投入产出比(ROI)在某些测试场合低于手工测试的ROI,例如一次性的软件项目(而不是产品的系列开发),这时自动化测试方法就往往没有手工测试效率高。适合用自动化测试方法就一定要用自动化测试,该用手工测试的(如软件产品的易用性测试等)就一定用手工测试。

2)必要的测试:没有执行多余的测试任务,也没有漏掉该执行的测试任务。不需要的测试功能模块、不需要测试的特性、不需要测试的代码等能被隔离出来,它们会被排除在测试范围之外;而且能确定代码改动的影响范围,能够确定测试任务的优先级,从而根据有限的资源和时间,完成所需要执行的测试任务。如果时间非常有限,就完成优先级最高的那部分测试;如果时间稍微宽松些,就完成更多的测试任务,包括优先级较高的那部分。如果有足够的时间,那就完成所有任务的测试。

3)测试覆盖率:没有覆盖率的衡量,就不能确定测试的效果、不能确定完成了多少应有的测试任务;没有覆盖率的衡量,就很难知道测试什么时候可以结束;没有覆盖率的衡量,就难以对测试工作进行评估,甚至难以控制测试的进度。测试覆盖率包括两方面:实际用户需求验证的覆盖度和被测试代码的覆盖度。

4)准确又完整的质量评估:在完成必要的测试之后,并有能力发现测试范围中的软件缺陷,然后根据所发现的缺陷,以及前面所参与的需求评审、设计评审和代码评审的结果,针对待发布软件的各种质量特性做出准确的评估,从而能够全面地、准确地了解软件产品的质量,从而能快速地对软件产品能否发布做出正确的判断,对如何持续改进软件质量也能提出明确的举措。

那么,又如何将测试工作做到完美的程度呢?不外乎从人、流程、技术等方面去考虑。人是决定的因素,又是不够稳定的因素,把每个测试工程师都打造成优秀的测试工程师,几乎不可能。但是,我们打造一支优秀的测试团队是完全可能的。即团队的每个成员都有特长,在某个方面有很强的能力、形成互补,这样,从团队来看没有弱项。基于一支优秀的测试团队,我们就能建立或引入良好的测试流程,拥有良好的测试方法、技能,最终交出一份满意的答卷。

谈到测试流程,首先还得考虑整个组织的研发流程,测试流程也只能算研发流程的一部分,需要和产品开发、项目管理流程和谐共处。如果开发采用IBM的统一过程模型(RUP),测试流程可以采用迭代的W模型;如果开发采用敏捷开发,测试也得采用敏捷测试的流程。即使选用W模型或敏捷测试模型,如何细化流程、如何引入最佳实践等问题还是需要仔细考量的,针对不同的团队、不同的项目类型需要定制、剪裁软件测试流程。例如,互联网创新产品的开发,对软件缺陷有一定的容忍度,软件测试强调协作、灵活和效率,比如某些对于缺陷零容忍度的关键系统(如金融系统、交通自动控制系统等)对缺陷是零容忍度,在测试流程上要严格、规范得多。

从技术上看,构建覆盖整个测试流程的自动化测试框架是重中之重。总体上看,基于自动化测试的方法能够提高测试的效率,也能更好地衡量测试覆盖率,但是自动化测试工具只是工具,很难进行测试需求的分析和设计,测试人员自身的智慧、技术能力依旧是最重要的。他们需要理解软件系统架构的设计、深刻了解软件实现的技术环节,包括如何让开发人员保证软件的可测试性,从而找到有效的测试方法,并能在技术上保证测试的顺利进行,获得高效的生产力。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件测试质量保证措施是为了确保软件在交付给用户之前具备高质量和稳定而采取的一系列措施。以下是一些常见的软件测试质量保证措施: 1. 需求分析和规格说明:在软件开发过程中,准确理解和明确需求是至关重要的。通过仔细分析和规格说明,可以确保开发团队和测试团队对软件功能和性能有一个一致的理解。 2. 单元测试:单元测试是对软件中最小的可测试单元进行测试,通常是函数或方法。通过编写和执行单元测试用例,可以验证代码的正确性,并及早发现和修复潜在的问题。 3. 集成测试:集成测试是将多个单元组合在一起进行测试,以验证它们之间的交互是否正常。通过集成测试,可以发现不同模块之间的接口问题和集成问题。 4. 系统测试:系统测试是对整个软件系统进行全面的功能和性能测试。它模拟真实的使用环境,验证软件是否满足用户需求,并且在各种条件下都能正常工作。 5. 性能测试:性能测试是为了评估软件在不同负载条件下的性能表现。通过模拟大量用户和数据,可以测试软件的响应时间、吞吐量和资源利用率等指标。 6. 安全测试:安全测试是为了评估软件系统的安全性和防护能力。通过模拟各种攻击和漏洞,可以发现潜在的安全风险,并采取相应的措施进行修复和加固。 7. 用户验收测试:用户验收测试是由最终用户或客户进行的测试,以验证软件是否满足其需求和期望。通过用户验收测试,可以确保软件符合用户的实际使用场景和预期效果。 8. 自动化测试:自动化测试是利用工具和脚本来执行测试用例,以提高测试效率和准确性。通过自动化测试,可以快速执行大量的测试用例,并及时发现问题。 9. 缺陷管理:缺陷管理是跟踪和管理软件开发过程中发现的缺陷和问题。通过建立缺陷管理系统,可以及时记录、分析和解决缺陷,确保软件质量的持续改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值