如何解决C++中如何测量执行部分的代码覆盖率
我有两个 C++ 二进制文件(A 和 B),两个二进制文件之间有套接字连接。
二进制 A 正在侦听 B。并且,B 连接到 A。
A 接受 B 的消息并根据消息内容执行一些功能。
我们创建了一种单元测试来测试各种消息类型。
从这些测试中,我想从我们的测试消息中测量 A 的执行行。
我搜索了衡量代码覆盖率的工具,我找到了 lcov
。
然而,lcov 测量了总执行的代码行数,包括初始化和其他无用的块。
我可以创建一个新代码来测试没有套接字连接的功能。
但是代码结构复杂,实现测试需要很长时间。
因此,我想跳过 lcov
中的那些行,以获得由我们的测试消息引起的纯执行行。
如果不可能并且有更好的工具可以解决这种情况,请推荐合适的工具来衡量这一点。
谢谢。
解决方法
在测试用例之前调用 __gcov_reset 以丢弃从初始化收集的数据。
,重要的是要了解“覆盖范围”是一组源代码位置。 您可以对集合进行“算术”:并(“加”)、补、差(“减”)。
关键是要得到一个工具,可以(设置)减去测试覆盖率数据集。
然后您收集用于启动/停止程序的测试覆盖率。这包括初始化和设置。称这个集合为 I。
现在为执行感兴趣的活动的程序收集测试覆盖率, 例如,“通信”部分。称这个集合为 X。
您想要的是通过从 X 中减去 I 计算出的集合:集合表示法中的“X-I”。
这意味着您需要一个工具来收集这些集合并进行计算。
我相信你可以用 lcov 收集 X 和 I。但我不认为 lcov 为您提供了一种计算集差的方法。如果是这样,宾果游戏,你在做生意。
如果没有,您可以考虑使用我公司的测试覆盖率工具。它们提供了一种明确的方法来收集测试覆盖集,并且可以任意执行 在用户界面中设置计算,例如设置并集、设置补集、设置差分。您无需更改代码即可执行此操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。