Testbed中文网站 > 最新资讯 > Testbed覆盖率分析怎么运行 Testbed覆盖率缺口怎么定位到代码
教程中心分类
Testbed覆盖率分析怎么运行 Testbed覆盖率缺口怎么定位到代码
发布时间:2026/06/29 18:32:10

  Testbed覆盖率分析在实际操作时,不能简单当成去点击运行报告,因为覆盖率分析是动态验证里的一环,工具首先要针对代码进行插桩或者把测试环境准备好,接着靠着测试用例的运行结果,来算出来哪些语句、分支或者函数被执行到了;在LDRA工具链里面,结构覆盖分析能够看到语句、分支判定还有函数调用这些指标,TBrun也支持过程调用等内容,并且在生成的报告里,能把具体走到的语句和条件都显示出来。

 

  一、Testbed覆盖率分析具体怎么去运行

 

  在开始做覆盖率分析以前,测试人员最好先确定静态分析的配置已经稳定了,若是头文件路径或者编译器选项没配对,后面做动态分析就很麻烦;特别是对于嵌入式项目而言,主机和板子的环境不一样,像测试入口、桩函数还有外设这些东西,都得提前弄好。

  1、确认工程能够被正常解析出来

 

  在进入到Testbed工程之后,需要检查源文件、宏定义还有语言标准等配置是不是全的,代码最起码要能跑出中间信息,不能有太多的解析错误;毕竟覆盖率分析没法脱离工程环境自己运行,需要指望前面的工程配置。

 

  2、挑选需要去统计的覆盖率类型

 

  根据手头项目的指标要求来选覆盖率,要是普通的单元测试,一般先看语句和分支覆盖;如果是安全要求高的项目,就会更看重判定或者MC/DC这些指标,千万别一上来就把所有指标都打开,因为覆盖率要求变高了,设计测试用例的压力就会很大,在项目刚开始的时候,可以先跑简单的语句,等后面测试框架稳定了,再去补细致的条件覆盖。

 

  3、把测试入口和用例都准备好

 

  通过TBrun或者别的动态测试模块把测试单元建好,选好要测的函数,再把输入参数、全局变量还有检查返回值这些都填上,另外桩函数也要补上;LDRA工具可以把覆盖结果和需求、用例还有代码连在一起,方便后面拿来当验证证据。

 

  4、编译插桩好的代码并去运行测试

 

  等配置都弄好以后,就要生成测试驱动和插桩代码,接着进行编译和运行;在电脑上测试的话通常直接就能跑,要是目标板测试,就得考虑交叉编译器、怎么下载、串口怎么接,还有怎么把运行数据拿回来;等运行完了,工具会把数据收上来并出报告,要是失败了就先去查编译和运行日志,先别急着看百分比。

 

  二、Testbed覆盖率缺口怎么在代码里找到

 

  找覆盖率缺口不只是看差了多少百分比,主要是得找哪一行没跑、哪个分支没走到,还有为什么用例没包含这里;Testbed的报告一般可以让人从总结果里面,一层层点进去看具体的文件、函数、代码行以及控制流。

  1、从报告的汇总结果进到低覆盖率的模块

 

  先看总体的覆盖率怎么样,再去瞧瞧文件和函数级别的覆盖,不要把所有文件都平均对待,要先去管核心模块或者风险高的模块;比如有些文件只有几个工具函数,就算覆盖率低也不用急着管,但如果是诊断、状态机或者控制策略这些模块覆盖率低了,就需要抓紧分析。

 

  2、顺着颜色标记去瞅瞅没运行的代码

 

  进到源文件界面以后,去看看没覆盖的语句和没走到的分支,TBrun可以用流程图、调用图或者逐行视图把结果摆出来,让人看清哪些跑了、哪些空着;这功能对找缺口挺省事的,写代码的人就不用光盯着数字,可以直接回源码位置看逻辑。

 

  3、理清缺口是因为用例不够还是代码走不进去

 

  找着没覆盖的代码之后,先别急着补写用例,得先想想这段代码有没有机会真的运行;像是一些异常的分支、超时处理的分支,往往是用例没触发它,但也有代码是以前剩下来的、或者被宏开关给关掉了,在有些配置下根本走不进去;属于前者的就去补测试,属于后者的就得写个说明或者把代码删掉。

 

 

  三、覆盖率的结果怎么去整理成复查材料

 

  覆盖率分析跑完之后,光存个百分比的截图是不行的,因为项目评审的时候,大家更关心哪些缺口补测了、哪些确实没法覆盖,还有哪些是死代码;LDRA工具能让人把需求、代码还有结果互相追踪,这也有利于发现没测到的孤立代码。

  1、按照原因给缺口归归类

 

  我们可以把覆盖率缺口分成好几种:有用例不够的、有异常路径没跑到的、有桩函数没弄好的,还有环境限制或者走不进去的代码;这么分完了以后,处理起来思路会清晰一些,不至于乱成一团,用例少的就去补用例,环境有问题的就调环境,走不进去的就找人评审确认。

 

  2、补完测试以后重新跑一遍覆盖率分析

 

  新加了用例以后,得重新跑测试并出个新报告,这时候不能只盯着总覆盖率涨了没有,必须回到之前的缺口位置上,去确认那几行或者那个分支是不是真的被跑到了;不然的话,很容易出现总百分比上去了,但是关键的路径还是没动弹的情况。

 

  3、针对没办法覆盖的代码要把原因写清楚

 

  有些代码确实没办法用普通的测试去触发它,比方说硬件报错、极端的保护机制,或者某些编译配置下进不去的路;等确认好了就要把字码明白,交代清楚是因为环境限制还是需求不合适,后面需不需要换别的方法测,字写得越具体,后面审起来越省心。

 

  结论

 

  针对Testbed覆盖率分析的运行问题,重点在于先把工程环境配好,接着选指标、准备入口和用例,把插桩、编译、运行到出报告这套流程走完;至于缺口怎么找,关键是顺着汇总报告往下点,进到文件和代码行里去,再看看缺口是因为用例少、配置错、进不去还是缺异常场景;做覆盖率分析并不是为了硬生生把数字填满,而是为了让大家瞧瞧哪些代码测过了,哪些路实际上还没真正跑过。

135 2431 0251