首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >软件测试中“质量门”的概念

软件测试中“质量门”的概念
EN

Software Engineering用户
提问于 2016-03-14 17:26:49
回答 2查看 5.1K关注 0票数 7

我们正在使用SonarQube进行代码质量测试。它测试代码的质量,而不是测试代码的功能。它有质量门的概念,因此您可以设置一个90%的质量门,这意味着任何超过90%的质量都被认为是通过的。

这里的一些人喜欢这个想法,并决定将其应用于功能测试和单元测试。在运行我们的功能测试和单元测试之后,我们检查通过了多少百分比的测试,并在足够高的测试百分比通过时将代码提升到下一个环境。要将代码提升到生产,所传递的百分比必须为100。

对我来说,测试本身就是质量之门。测试绝不能失败。如果测试失败,就会给整个应用程序带来风险,必须立即修复。

我很难找到一个有效的论点,因为它要求只有一定比例的功能测试和单元测试通过,因为代码在通往生产的过程中通过了不同的环境。有人能提供吗?

EN

回答 2

Software Engineering用户

回答已采纳

发布于 2016-03-14 17:55:38

只有当所有测试都通过时,测试套件才能通过。否则,这些测试就会变得毫无价值。什么是重要的失败,什么是可以忽略的失败?结果是所有的测试失败都会在一段时间后被忽略。坏的。

有一个例外:测试套件可能包含已知的失败测试,因为必要的功能尚未实现或bug尚未修复。这样的测试是有价值的,因为它们清楚地记录了一个bug。但是,因为它们的失败不会是一种倒退,所以它们的失败不应该使整个测试套件失败(相反,如果它们开始通过测试套件将表明您的测试套件与您的代码不同步)。理想情况下,您的测试框架有这样一个“TODO测试”的概念。

质量度量是另一回事。如果一个质量度量跨过了一个阈值,这就意味着某些事情可能已经成熟,但并不一定成熟到可以重构。但是,在该代码的上下文中,一些“违规行为”可能是可以的。只要某些代码区域可以被排除在特定的分析工具之外,在质量度量上设置门是可以的。显然,任何明确的排除都将是代码评审中的一个危险标志,并受到额外的审查,但对于异常情况,保持这样的逃生舱口打开是很重要的。

特别是,要求提高质量的想法,就像一件艺术品穿过释放管道一样,并不一定是好的。必要的质量增值从何而来?从开发人员那里改进代码,并重新提交一个新的仿制品进入管道。由于预先知道穿越整个管道所需的质量指标,因此提交任何没有这种质量的艺术品都是浪费时间。那你为什么要这么做?很可能,管道中的各个阶段为您的程序提供反馈,这在主版本发布之前是有用的。要获得这种反馈,您必须提交代码,即使您没有经过管道的意图。再一次,虚假的否定是不好的。这样的工作流不适合于管道模型,反馈应该是独立可用的。

这并不意味着你应该放弃优质浇口。但是,如果您的目标是100%的发布度量,那么当前的质量度量将成为项目的进度指标,就像技术债务的刻录图表一样。

票数 11
EN

Software Engineering用户

发布于 2016-03-14 21:07:14

在阿蒙的好答案中,我想补充一点:

...the测试本身就是质量之门。

它们是生产代码的门户,但是测试本身可以有自己的(潜在的)质量度量,包括:

  • 是否在每个测试中克隆了常见的设置/拆卸代码?或者它是否位于测试套件所支持的任何安装/ClassInitialize/TestInitialize等方法中?
    • 如果被测试的代码没有充分利用契约,那么在必要时测试是否涵盖了可接受的参数范围?正在测试边缘值吗?空集合?空收藏品?等等,即使覆盖率很高,您也可能没有充分地使用代码。
    • 测试要花太长时间才能运行吗?
    • 他们跑了吗?还是有人用@Ignore标记了许多测试,使套件通过了测试?
    • 当然,覆盖率是否可以接受?

这些属性,当然还有更多的属性,都是您可以选择测量的关于测试套件本身的东西(有些测试套件是由SonarQube支持的),以获得不仅测试,而且有效测试的信心。

票数 1
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/312729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档