0


单元测试覆盖率之工具链——gcov的介绍及启用

gcov的介绍及启用

随着单元测试的开展和普及,也随着产品功能的越来越多,产品代码糅合更多的功能,面对几十个工程项目、成千上百的类、超过

10

万的代码…………会不会有一丝丝恐惧,眼见它平地起高楼……眼见它……

那么有什么办法可以给自己足够的底气,胸有成竹的放心下班?单元测试是这底气的基石,那么如何才能让这个基石落到心上?如何衡量这个基石是否足够的完美、牢固?答案可以是——代码覆盖率。

代码覆盖率(Code coverage) 是软件测试中的一种度量,描述程序中源代码被测试的比例和程度,所得比例称为代码覆盖率。

代码覆盖率有很多衡量的维度:函数覆盖率、行覆盖率、分支覆盖率、指令覆盖率……等,笔者不是软件测试专业人员,就不班门弄斧以免误导旁人了,所以这里选用行覆盖率和分支覆盖率进行讲述,如何基于以往开展的单元测试生成被测目标的代码覆盖率。

尤其是有了分支覆盖率,就可以更有针对性的设计一些用例补全尚未覆盖到的分支,提高程序的健壮性。


gcov

是一个代码覆盖率统计的工具。不用单独下载,伴随

GCC

一起发布(即你安装有

GCC

,也就有了

gcov

这个工具)。与

GCC

协同使用、分析被测代码,有助于创建更稳健的代码,并能发现程序中未经测试的部分。

基于

gcov

是隶属于

GCC

,所以其仅适用于使用

GCC

编译的代码。
原文:

gcov works only on code compiled with GCC. It is not compatible with any other profiling or test coverage mechanism._

gcov

可以搭配其他工具一起使用,更能有助于发现代码性能、测试覆盖程度等,例如

gcovprof

lcov

……

那么如何使用这个

GCC

自带的工具呢?

使用

gcov

的准备工作非常简单:就是在使用

GCC

编译文件时,加入编译参数

-fprofile-arcs

-ftest-coverage

-fprofile-arcs : 编译时在源码相同路径下产生

gcno

文件
-ftest-coverage : 在运行带

-fprofile-arcs

编译过的程序时,在

gcno

文件相同目录下产生

gcda

文件

首先,我们在

utdemo.pro

工程中的

QMAKE_CXXFLAGS

/

QMAKE_CFLAGS

下追加

-fprofile-arcs
-ftest-coverage
QMAKE_CXXFLAGS +=-fpermissive -fprofile-arcs -ftest-coverage
QMAKE_CFLAGS +=-fpermissive -fprofile-arcs -ftest-coverage

然后,需要连接到

gcov

的库

LIBS +=-lgcov
CTRL+R

运行,一切正常,没有什么不同,就像还没有增加上述配置一样。那么上文提到的

gcno

gcda

文件在哪里?在

qt

build-\*\*\*

目录下:
image.png

代码覆盖率的第一步:**

gcov

*** 已经被我们成功应用起来了
但由于

gcov

生成的是程序树,非常不便于阅读,所以下一节我们将更进一步使用工具来将

gcno

gcda

来生成更加人性化易于阅读的报告。

也可扫码关注博主同名公众号 “不解之榬” 查看
不解之榬


本文转载自: https://blog.csdn.net/LT450196683/article/details/139584195
版权归原作者 不解之榬 所有, 如有侵权,请联系我们删除。

“单元测试覆盖率之工具链——gcov的介绍及启用”的评论:

还没有评论