📜  测试覆盖率与代码覆盖率

📅  最后修改于: 2021-08-25 16:25:35             🧑  作者: Mango

测试覆盖率和代码覆盖率是评估代码生存能力的最主流哲学。尽管事实上这些术语有时是相互使用的,因为它们的基本标准是等效的。无论如何,它们都不像您可能会怀疑的那样具有可比性。通常,我已经看到测试小组和晋升小组对这两个短语的使用感到困惑。这就是我想到撰写这篇文章来详细讨论代码覆盖率和测试覆盖率之间的差异的原因。

代码覆盖率与测试覆盖率:它们有何不同?

  • 代码覆盖率:
    显示通过用Selenium或其他某种测试机械化结构进行的手动测试和计算机化测试,通过测试用例保护的代码级别。例如,如果您的源代码具有直截了当的if … else圆圈,那么如果您的测试代码可以覆盖两种情况(例如,在that和else情况下),则代码覆盖率将为100%。
  • 测试范围:
    结合测试作为功能先决条件细节,编程必要性和其他必需档案的一部分而实现的重点。例如,如果您要对Web应用程序执行跨程序测试,以确保您的应用程序是否能从各种程序中顺利交付?您的测试覆盖范围是已批准Web应用程序程序相似性的程序+ OS混合数量。

    理解了代码覆盖率和测试覆盖率之间的本质对比之后,让我们跳入有关代码覆盖率和测试覆盖率的更多细微差别。

深入了解代码覆盖率:
设计人员在单元测试期间执行代码覆盖,以确认代码使用,从而实际上执行了所有代码声明。很大一部分代码覆盖设备使用静态工具,其中屏蔽执行的关节被嵌入到代码中的重要区域。尽管扩展了检测代码会导致应用程序大小和执行时间的增加,但与通过执行检测代码生成的数据相比,开销却微不足道。产量包括一个报告,该报告可细化测试套件的测试范围。

为什么要执行代码覆盖率?
由于单元测试是由设计人员组成的,因此他/她具有更好的可感知性,应将其作为单元测试的一部分。单元测试可以改善产品的一般性质,但是,对于包含单元测试的测试数量,将始终存在疑问。测试套件中是否有足够数量的测试情况?对我们来说,包括更多测试是一个好主意吗?代码覆盖范围是对这些查询中每一项的响应。

随着项目进度的进展,新的重点内容,以及针对修复(针对测试过程中产生的错误)的补充,将其添加到发布周期中。这意味着测试代码可能同样需要进行更改,以使产品代码在升级过程中保持更新。重要的是,在风险投资开始时设定的测试原则必须与最终的排放周期保持一致。可以利用代码覆盖率来确保您的测试满足那些准则,并且最好的质量代码进入创建阶段。

仪器种类:

有三种重要的检测手段:

  1. 代码检测–
    在这里,源代码是在扩展检测语句之后组装的。聚会应该利用普通的工具链完成,卓有成效的安排带来了仪器仪表聚会的时代。例如,为了检查执行代码中的特定函数花费的时间,可以在函数的Start和End中包括检测语句。
  2. 运行时检测–
    与代码检测方法相反,这里的数据是从运行时条件中收集的,例如在执行代码时。
  3. 中途代码检测–
    在这种检测中,检测类是通过将字节码扩展为已安排的类文档来产生的。

    根据您的测试必要性,您应该选择正确的代码覆盖设备和由仪器支持的最佳检测方法。

代码覆盖范围的设备:
有各种各样的代码覆盖设备支持独特的编程方言,并且它们中的相当多也随着QA设备而弯曲。大量的设备可以与制造工具和任务执行器设备相结合,这使它们实质性地更加令人印象深刻且更有价值。在选择开源代码覆盖设备时,应检查设备支持的突出显示以及仪器的功能是否有改进。考虑到这些变量,下面是众所周知的开源代码覆盖工具的一部分。

  1. Coverage.py –
    它是Python的代码覆盖设备。顾名思义,它可以分解源代码并区分执行的代码级别。它是用Python创建的。
  2. 宁静BDD –
    Serenity BDD支持Java和Groovy编程方言,是众所周知的开源库,它从根本上被用于更快地编写出色的质量确认测试。您可以利用故事和Sagas进行测试,并为这些帐户和图例处理代码覆盖率。因此,生成的测试报告本质上更具说明性和解释性。您可以在先决条件中计划那些机械化测试。

    它倾向于与JUnit, Cucumber和JBehave一起使用。 Serenity BDD可以与Maven,Cradle,JIRA和Ant有效地协调。如果您正在利用Selenium WebDriver或Selenium Grid结构进行机器人测试,则选择Serenity。

  3. JaCoCo –
    JaCoco是Java的代码覆盖率工具。尽管事实上有诸如Cobertura和EMMA之类的不同选择,但是由于相当长一段时间没有更新,因此对这些工具进行了指责。 JaCoCo设备是Eclipse Foundation的一部分,它取代了Eclipse中的EMMA代码覆盖设备。除了JaCoCo的动态发展之外,利用它的另一个首选位置是与CI / CD和任务保持一致的连接。
  4. JCov –
    JCov是测试系统理性主义者代码覆盖率的工具。它往往易于与Oracle的测试基础JavaTest和JTReg进行协调。尽管事实并非是事件的动态转变,但仍要对动态进行支持。
  5. PITest –
    PITest是非常著名的代码覆盖设备,用于Java和JVM的转换测试。它通过更改您的测试代码来执行变更测试的责任,并且目前已对该调整后的代码执行单元测试。例如,在PITest包含其他代码后,如果发现使用此代码存在错误,则单元测试是白痴证明;否则,由于问题不熟悉,它需要进行更改。 PITest几乎没有什么可以利用,快速且处于动态事件中。