测量API的协议测试覆盖率

问题描述

鉴于自动化测试的重要性,我想知道是否有可能测量Pact测试的测试覆盖率。

请记住,对于单元测试,大多数框架/ IDE都提供了检查代码的哪些部分已执行,从而检查至少代码的每个部分(例如在类中)是否由某个测试执行的方法。>

相应地,Pact测试(旨在检查提供者或消费者是否符合API规范)通过测试个可能的交互方式来赢得信誉。如果是这样,那么它可以通过将e2e测试的逻辑划分为一个功能部分(由一个组件内的单元测试和集成测试所覆盖)以及断言两个组件都符合公认的API的协议测试来减少e2e测试的数量。 (有关更多详细信息,请参见https://docs.pact.io/getting_started/what_is_pact_good_for/。)

鉴于可以通过枚举或摇摇欲坠的库自动发现某些Web组件的REST API,我想知道是否有可能将它们的发现与PACT测试说明进行比较,以查看是否有任何重要的参数或端点在后者中失踪了。 (此外,我不确定这是否意味着要加倍努力以提供清晰的注释和PACT合同,但在我看来Java中的清晰注释并不那么繁重,即主要通过REST注释来识别REST端点。还是功能所必需的。)

如果我的问题对于stackoverflow来说太笼统了,请告诉我,而我应该在更多的学术网站(例如stackexchange)上提问。

解决方法

从docs.pact.io问题档案中:

如何判断我的API是否具有良好的合同测试覆盖范围?

这实际上是一个错误的问题。合同测试无意提供提供商的任何特定百分比覆盖率(这就是提供商自己的功能测试所针对的范围)。合同测试的目的是提供(接近)100%覆盖对提供方进行调用的消费者代码(您可以将其视为“提供者客户代码”)。如果您在测试套件的单独步骤中执行消费者Pact测试,则可以使用标准代码覆盖率工具确定Pact测试是否覆盖了提供商客户端代码的足够百分比。

https://docs.pact.io/faq/question_archive#how-can-i-tell-if-i-have-good-contract-test-coverage-of-my-api

这并不能告诉您是否不幸地涵盖了参数的所有不同变体。确保对每个参数变化都进行合同测试通常是不完全可行的(想象一下必须尝试覆盖特定枚举的20种不同组合)。在那个阶段,放置许多精心选择的测试用例,然后确保您的代码可以优雅地处理任何异常(例如,具有良好的监控功能,可以将意外的值报告给开发团队)是一种更有效的选择。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...