起初,我虽然是一样的,但在两难之间却似乎有所不同。但是我找不到任何东西。

评论

我不是谁对此表示反对,但是这个问题似乎完全合理。对待新手的好方法。 +1以抵消。

按照我与@Ira达成的协议进行了投票

#1 楼

测试覆盖率和代码覆盖率(作为通用术语)可能意味着所覆盖内容的多种不同衡量标准:代码行,布尔表达式的子条件,对数据的访问,对API函数的调用,...

在普通的语言中,对于几乎所有可用的工具,“测试覆盖率”和“代码覆盖率”告诉您在使用的任何测试过程中执行了什么代码(无论是单元测试,功能测试,非正式测试,交互式测试...)。

唯一被广泛使用的变体是MC / DC(测试/代码)覆盖率,它告诉您逻辑表达式中的布尔布尔条件中的哪一个已被执行,控制布尔表达式的结果。只有很少的工具可以提供此功能。

我相信eclemma可以提供标准类型的测试/代码覆盖率。是否提供其他功能...我不知道。

#2 楼

这是我使用这些术语的方式。代码覆盖率是对响应刺激(例如运行测试)执行多少代码的度量。测试覆盖率是对测试结果执行了多少功能集的一种度量。

其他人会有其他定义。当有人使用这些术语时,如果您不确定它们的含义,请询问他们。

#3 楼

这是我使用这些术语的方式(尽管我几乎从未真正使用过这些术语)。

代码覆盖率是测试期间执行多少代码的量度。

测试覆盖率是测试期间执行了多少个测试用例的度量。

您的工作量可能会有所不同...

#4 楼

由于上述回答,定义有所不同。有时我会说代码覆盖率对我来说并不重要,但是测试覆盖率却对我很重要。

通过测试覆盖,我的意思是在这种情况下,类的任何可能的行为都应由测试记录下来(即,如果您查看测试,则应该能够对输出和该类任何方法的行为(提供任何给定的输入集),其中还包括无效输入的假设

不影响行为的代码行显然是不希望的,但如果存在,通常对我而言,此类行的典型示例是实际上很少使用的小型最佳实践方法,因此我可能无法测试是否在写入文件时捕获异常,并在尝试写入文件之前检查其是否存在。通常进行检查要比不编写或测试这种代码要好。

#5 楼

我的2美分:

代码覆盖率是指自动测试运行的非测试代码的比率。经过某种方式评估和运行的每一行代码或指令都与此相关。

测试覆盖率是指经过逻辑测试的行为的比率。在这种情况下,“行为”表示方法应根据其描述进行的所有操作:验证错误的输入并对其做出反应,返回所有正确输入的预期结果。

请考虑方法add(a, b)将两个数字相加并返回总和。现在考虑一个测试,该测试使用两个正数调用该方法,但仅查找错误而不检查逻辑结果。这可能意味着100%的代码覆盖率(运行整个方法),但是测试覆盖率却要低得多,因为该方法仅针对一种错误行为进行了测试:错误输入正确。既未使用不同的输入测试结果,也未测试错误/意外的输入。

#6 楼

代码覆盖范围:作为人类,我们可能会犯错误或遗漏一些导致产品错误和缺陷的重要问题。全面的测试使产品质量高。进行单元测试是一个好的开始,但有时很难衡量或改进。

代码覆盖率

首先,让我们了解代码覆盖率。该度量标准的主要目的是计算测试用例覆盖的行数。它报告代码中的总行数和测试执行的行数。可以将其视为运行测试套件时程序源代码执行的程度。目的是,代码覆盖率越高,出现未检测到的软件错误的可能性就越低。

子类型

覆盖率分为几种子类型-条件覆盖率,分支覆盖率,循环覆盖率,函数覆盖率,语句覆盖率和参数值覆盖率。

为了清晰起见,让我定义子类型。

·如果测试覆盖了代码中的每个函数调用,函数覆盖率被称为100%。

·类似地,如果代码中的所有分支(即所有if-else条件都已通过所有可能的输入进行了测试),则分支覆盖率被称为100 %。

·如果执行代码中的所有循环语句,则循环覆盖率和语句覆盖率将分别为100%。

·在理想情况下,条件覆盖率应为可以完美地测试100%的每个条件以及所有可行的条件参数组合。可以通过将所有通用值传递给函数调用中的条件来检查Parameter值的覆盖范围。

覆盖率测试工具

这些测试工具现可用于每种主要语言。注意,大多数只与单元测试有关,而与所执行的完整测试(系统,集成,单元​​,手动等)无关。

现在来看一下其中的一些内容,以了解代码覆盖率工具的场景。

Cobertura是Java代码覆盖率报告工具。它基于覆盖率,并且可以在具有Java 5或更高版本的任何平台上使用。您可以将Cobertura与ant,maven或命令行访问一起使用。在检测类时,Cobertura会生成Cobertura.ser文件,其中包含有关每个类的基本信息。检测,运行和创建报告时将使用此文件。检测时也使用ASM。在运行测试时,它会创建一个报告,其中包含每个程序包,每个程序包中的所有类以及相应的分支覆盖率,行覆盖率和复杂性。

对于Python,覆盖率度量的一个广受赞誉的工具是Coverage .py。它在3个不同的阶段中起作用–执行,在该阶段运行代码并对其进行监视,以查看执行了哪些行。确定可以运行的行。

·报告是将执行和分析的结果相结合以生成覆盖范围编号和执行遗漏指示的地方。

此度量工具Goco广泛使用的是gocov。这种工具提供了4个关键命令-测试,转换,报告和注释。使用这些命令,您可以生成带有注释的文本报告,以给出每个go文件中每个功能的覆盖率信息。 GUI包装器也可用于名为GoCovGUI的gocov。它在GUI中显示该工具生成的整个报告,这很容易理解。它还具有包装程序,可以以HTML和XML格式生成报告。

测试覆盖率

测试覆盖率旨在以定性的方式衡量测试的有效性。它评估测试用例是否涵盖了整个功能需求。当测试用例不是与代码相反而是根据用户要求或预期功能编写的,您可以相信它是一种黑盒测试。

/>
用于测试覆盖率测量的通用结构和方法是单元测试,功能测试,性能测试,集成或系统测试和验收测试。

单元测试是逐级编写的检查功能/方法是否按预期执行。在功能测试中,将对需求文档中提到的每个功能进行测试。性能测试通常是一种对代码在各种工作负载下的稳定性,可伸缩性和响应性进行压力测试的方法。进行集成测试或系统测试以测试完全集成的产品是否按预期方式工作。通常在开发周期结束时进行验收测试。为了进行验收测试,将产品移交给利益相关者,并由他们进行测试以确定产品是否处于可接受状态。

工具

此类测试覆盖率工具旨在定性地衡量测试工作量。这里的想法是查看是否通过测试在逻辑上涵盖了所有需求和功能。但是,与代码覆盖率相比,计算起来并不容易和直接。诸如测试驱动开发(TDD)之类的方法也可用于分析测试覆盖率,并引入从一开始就添加测试的规范。要衡量此类测试的影响,您将需要手动列出需求,然后分析测试用例以了解其中涵盖哪些需求。

仍然,您需要框架来编写测试。

让我们看一些适用于各种编程语言的测试框架。

·流行的Java测试框架JUnit是在Java虚拟机上启动测试的基础。借助对假设,断言,默认测试技术和其他功能测试功能的支持,JUnit是测试基于Java的软件的更好选择。

·对于Python,提供了一个称为PyUnit的框架。顾名思义,它与Python等效。但是,还有其他各种测试框架也可以为您提供帮助。

Go还为程序提供了内置的测试包,使您可以轻松编写,计划,组织和运行测试。它还提供了一些性能分析工具,以了解在不同负载下软件的行为。

#7 楼

测试覆盖率是代码覆盖率,但从运行测试的角度进行衡量。
您应该争取100%的测试覆盖率。 ;)

这里有一个10分钟的视频,演示了使用python的区别。
我建议加倍观看,所以只有5分钟。

https://youtu.be/7BJ_BKeeJyM



#8 楼

测试覆盖率和代码覆盖率度量标准都可以用于评估应用程序代码的质量。

代码覆盖率和测试覆盖率之间的差异

代码覆盖率

•代码覆盖率是测试期间执行多少代码的度量&

•子类型-覆盖率分为几个子类型-循环覆盖率,分支覆盖率,条件覆盖率,语句覆盖率,函数覆盖率和参数值覆盖率。

•工具-Cobertura是Java代码覆盖率报告工具。它基于jcoverage,可在任何Java 5或更高版本的平台上使用。您可以将Cobertura与maven,ant或命令行访问结合使用。在对类进行检测时,Cobertura会生成cobertura.ser文件,其中包含有关每个类的基本信息。在检测,运行和创建报告时使用此文件。

对于Python,用于代码覆盖率度量的主要和最受欢迎的工具是Coverage.py。它在三个不同的阶段工作-执行,在其中运行代码,并检查代码以查看执行了哪些行。

•分析,在其中检查代码以确定可以运行的行。

•报告是将执行和分析的结果相结合以生成覆盖范围编号和执行遗漏的指示的地方。



测试覆盖率

•测试覆盖率是对测试期间执行了多少个测试用例的一种度量方式

•子类型-用于测试覆盖率的常见机制测量是性能测试,功能测试,单元测试,集成或验收测试和系统测试。

•工具-JUnit,被称为Java测试框架,是在Java虚拟机上启动测试的基础。通过支持断言,假设,默认测试方法和其他功能测试功能,JUnit是测试基于Java的软件的绝佳选择。

对于Python,提供了一个称为PyUnit的框架。

顾名思义,它与Python等效。但是还有其他几种测试框架也可以为您提供帮助。