从找缺陷到质量保障——接口测试方法论(03)

发表于:2022-8-08 10:26

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:陈磊    来源:51Testing软件测试网原创

  1.3  从找缺陷到质量保障
  在软件工程发展的早期,软件测试的主要目的就是寻找软件的缺陷,很多公司一度以发现的缺陷数量来考核测试工程师和研发工程师的工作成果。测试工程师为了得到好的绩效,拼命地找缺陷,研发工程师看着提交的一个个缺陷,对自己的绩效十分担忧。这种绩效考核机制导致测试工程师和研发工程师形成对立关系,更别提交付团队的质量文化了。Bill Hetzel很早就提出了测试不仅仅是为了发现软件缺陷与错误,更是为了对软件质量进行度量和评估,以提高软件质量。软件测试的最终目标,就是以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,然后通过修正各种错误和缺陷来提高软件质量,从而规避软件发布后,由潜在的软件缺陷和错误造成的隐患带来的商业风险,这一目标需要测试工程师和研发工程师努力交付高质量的系统才能达成。
  测试是以评价程序或系统属性为目标的活动,是对软件质量的度量与评估,因而测试能够帮助我们验证软件的质量满足用户需求的程度。通过分析错误产生的原因,我们可以发现当前开发工作中采用的软件过程的缺陷,以便进行软件过程改进。另外,通过对测试结果进行分析整理,我们还可以修正软件开发规则,并为软件可靠性分析提供依据。
  软件测试始终服务于交付系统,一定要构建团队自己的质量文化,虽然在测试过程中我们仍在不断地发现系统中的缺陷,但这既是为了保障交付系统的质量而必须要做的工作,也是为了降低项目的交付风险而存在的必要活动。虽然软件测试是交付过程中必须存在的环节,但软件测试只能证明系统存在缺陷,而不能证明系统没有缺陷。因此,我们没有办法交付完全没有缺陷的系统。
  每一次测试工作的开始都会受到项目工期、资源调配、预算开销等方面的约束,测试工作往往因为受到这些约束而不得不终止,这也正好符合软件测试原则(见图1-2)之一:“完全测试是不可能的,测试需要终止。”测试是不可能穷尽的,我们也不可能在测试过程中发现被测系统的全部缺陷。缺陷的发现成本会随着测试的不断投入而不断增加,而且我们也不可能无休止地测试下去,毕竟任何系统都有上线日期。要想在时间和资源有限的条件下实现更加完善的测试,能够按照某种测试用例设计方法设计一种覆盖度较为科学的测试用例来指导测试就显得尤为重要。测试的投入既要考虑工期、人力,也要考虑系统交付后的质量。越靠近测试后期,为发现错误所需付出的代价就会越大,因此,我们还要根据测试错误的概率以及软件可靠性要求,确定测试的最佳停止时间,毕竟我们不能无限地测试下去。
图1-2  软件测试原则
  所有的软件测试都应追溯到用户需求,因为软件的作用是使用户完成预定的任务并满足用户的需求,而软件测试揭示的缺陷和错误会使软件达不到用户的目标,或使用户需求得不到满足。所有的软件测试都应追溯到用户需求的原则也符合当前提倡的ATDD(Acceptance Test-Driven Development,验收测试驱动开发)理念。ATDD的实施一般是从需求开始的,当团队内部的产品经理、研发工程师和测试工程师围坐在一起讨论需求时,关于验收标准的讨论也就开始了,这样便于大家统一对每一个需求的理解和认知。接下来,自动化测试也好,手动测试也罢,在为每一个需求设计测试用例时,都需要更加注重对业务流程的正确性进行测试,这部分工作需要测试工程师独立完成,测试用例则由对业务需求最熟悉的人确认。然后研发工程师开始开发系统,这里推荐使用TDD(Test-Driven Development,测试驱动开发)的实践方法完成测试。系统开发完之后,测试人员就可以利用前面设计的验收测试用例并补充异常用例完成测试了。ATDD在敏捷团队中结合探索测试后更容易落地实现,但是对于传统测试团队来说,仅靠测试团队是完不成转变的。
  软件测试人员应当把“尽早和不断地进行软件测试”作为座右铭,软件缺陷发现越早,修复成本越低。由于软件自身的复杂性和抽象性,软件在生命周期的各个阶段都可能产生错误,软件测试不应仅仅看作软件开发中某独立阶段要做的工作,而应贯穿到软件开发的各个阶段。在软件开发的需求分析和设计阶段,我们就应开始测试工作,编写相应的测试文档。同时,坚持在软件开发的各个阶段进行技术评审与验证,因为只有这样才能在软件开发过程中尽早发现和预防错误,杜绝某些缺陷和隐患,提高软件质量。只要测试工作在软件生命周期中开展足够早,就一定能够提高被测软件的质量,这也是预防性测试的基本原则。
  测试无法找到软件全部的缺陷,即使世界上最优秀的团队也无法交付没有缺陷的软件。看到这里,您是不是会有如下疑问:那还有必要投入人力、物力、时间来进行软件测试吗?软件测试当然有存在的必要,软件测试工程师可以利用科学的手段设计测试用例,尽管没有办法达到完全的测试覆盖度,还是能够发现绝大部分的软件缺陷,这样就可以将最终用户在使用软件过程中遇到的很多缺陷提前发现并交由研发工程师修复。如果测试工期可以无限延长,那么对于同一个软件,我们将很有可能发现更多的缺陷,只是越往后发现缺陷的投入成本越高。也就是说,测试只能证明软件存在缺陷,而不能证明软件没有缺陷。
  软件测试工程师角色现在已经逐渐从软件开发角色中分离出来,这样就可以避免研发工程师测试自己的代码,毕竟每个人都有思维惯性,研发工程师往往很难发现自己开发的软件中存在的问题,他们更希望由其他人检查软件的交付结果,从而保证所交付系统的质量。
查看接口测试方法论》全部连载章节
版权声明:51Testing软件测试网获得作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号