发布时间:2026-06-30 14: 09: 00
把代码编译通过,并不代表测试工作就告一段落了。要用Parasoft C/C++test把单元测试的覆盖情况摸清楚,以及把覆盖率的合格线定在什么水平才算合理,得看测试用例到底有没有跑进那些关键的分支、处理异常的路径,还有边界上的各种条件。这个工具本身支持单元测试、结构化的覆盖率分析,还有需求的追踪,跑出来的覆盖结果既可以在自己电脑上看,也可以传到Parasoft DTP里面,去做一些走势上的分析。
一、Parasoft C/C++test怎么做单元测试覆盖
1、先把工程弄到能正常编译的状态
要保证源文件、头文件的路径、那些宏定义,还有编译器和目标平台的配置,这些东西都齐活了。因为单元测试跑起来的时候会先生成一个测试用的可执行程序,要是工程本身就有头文件找不到,或者链接的时候出了错,那覆盖率的采集工作肯定也做不下去。
2、去运行单元测试的那套配置
在IDE里面先选好自己要测的工程,然后顺着【Parasoft】→【Test Configurations】点进去,找到一个内置的或者自己定制的【Run Unit Tests】配置,用它把测试跑起来。等运行结束,C/C++test就会把测试结果和覆盖的信息给收集起来。如果是在容器环境里面跑单元测试,这个工具也会自己去收结果和覆盖率。
3、看一看覆盖率的结果
测试跑完之后,进到【Parasoft】→【Show View】→【Coverage】这个菜单,就能看到当前这份资源的覆盖情况。那个Coverage视图里头展示的,就是最近那次测试跑出来的覆盖数据,而Test Progress视图呢,更多是用来看测试的状态,还有生成报告的。
4、把还没覆盖到的路径给补上
要是发现某一段代码没被覆盖到,就先查一查是不是给进去的输入条件里头少了边界上的那些值,再去看看桩函数返回的结果,是不是让程序提前就退了出来。有些分支确实很难进去,这时候就可以配合着Coverage Advisor这个功能,先瞄一眼覆盖没有命中的位置,然后再去把测试用例给补齐。
二、Parasoft C/C++test覆盖率门槛怎么设更合理
1、先把覆盖率的类型给分清楚
碰到普通的业务模块,可以先去看语句覆盖和分支覆盖;如果模块里面判断的逻辑特别多,那就还得再看看条件覆盖;至于跟功能安全挂钩的那些模块,就得照着项目的要求,去查MC/DC覆盖。C/C++test能报告的覆盖指标有很多种,像行覆盖、语句覆盖、基本块、决策、简单条件,还有MC/DC覆盖,这些它都能报。
2、按照风险的高低来分层设置门槛
对那些一般性的模块,可以先把语句覆盖和分支覆盖的门槛设在一个能执行的数字上,比如百分之八十上下,然后再看项目具体的情况慢慢往上提。至于算法、安全机制、诊断处理,还有边界判断这一类的代码,就要单独给它们定更严一些的要求。要是工作中涉及到了行业标准,那还是要以项目本身的安全计划和验证目标来定,别直接把那些通用的数值搬过来就用。
3、把注意力重点放在新增的代码上
老项目想一口气把历史上欠下的覆盖率全部补齐,这个执行起来太难了,不如就对新加的代码和改动过的地方先把门槛给立起来。Parasoft是支持在持续集成的流程里头,针对那些修改过的代码设置一个覆盖率的检查关口,还能通过DTP去看到对应的覆盖情况。
4、把那些不该统计进来的代码给排除掉
像自动生成的代码、第三方的库、硬件适配的文件,还有那些纯粹为了调试才加上的分支,就别把它们一股脑儿都塞进统计的范围里。在排除之前得留好记录,把排除掉哪些文件、为什么要排除,都给写清楚,免得为了把数字弄得好看一点,就随便去把统计的口径给缩小了。
三、Parasoft C/C++test覆盖率没有达到门槛怎么查
1、先去看一下那些没被覆盖到的代码在哪儿
把覆盖率的详细报告打开,在里面找一找是哪些行、哪些分支还没有被命中过。这份报告是可以生成那种在源码上面直接做标注的覆盖详情的,这样查起来就很方便,一眼就能看出来是哪些位置还缺着测试。
2、去检查一下那些桩函数的行为
外部的接口、文件的读写、通信用的接口,还有硬件寄存器这些地方,一般都是要用桩函数来模拟的。如果桩函数每次只是返回一个固定的值,那程序里头跟异常有关的那些路径就很难跑进去。可以在桩函数里面分别设置正常时候的返回值、失败时候的返回值、超时的情况,还有边界上的那些值。
3、确认一下看的结果是不是同一次执行产生的
C/C++test默认给出的报告,一般都只装着最近跑的那一次的结果。如果想要把单元测试的覆盖情况和应用的覆盖情况合在一起看,那就可以打开结果归档这个功能,然后再把前面归档好的结果加载进来,生成一份累积起来的报告。
总结
一个项目的测试到底做得扎不扎实,不能光看用了多少用例来下判断。要想把Parasoft C/C++test的单元测试覆盖给做好,还有把覆盖率的门槛设得合理一点,还是得把编译环境、测试的配置、覆盖的那些指标、代码的风险,还有持续集成里头的门禁,这些东西放在一块儿来看。先把覆盖率的数字搞得能让人信得过,然后再照着模块的风险去立规矩,往后再去补测试的时候,才不会变成只是在单纯地追着一个数字跑。
展开阅读全文
︾
读者也喜欢这些内容:
Parasoft静态分析怎么配置 Parasoft静态分析误报怎么确认
如何设置Parasoft的静态分析,以及怎样确认它产生的误报,许多开发团队在引入代码检查的时候,都会遇到这类问题。静态分析并不是把工具装好,点一次扫描就结束了,在这之前,要去看工程的配置是否准确,挑选的规则集是否合适,在那之后,还要看扫描出来的结果,能不能被开发人员弄明白,愿不愿意去处理。如果配置与真实项目差别很大,告警就会大量出现;如果判断误报时缺少依据,后面的评审又容易反复争论。...
阅读全文 >
CERT例外记录难维护从何入手 CERT例外审批与追踪字段应如何规范
在做CERT规则检查时,例外一多就容易失控,常见表现是同一类问题反复开例外、审批口径不一致、到期无人复审、审计时证据翻不出来。要把这件事做得“可维护”,关键不在于把表格写得更复杂,而是先把例外的边界、生命周期与承载载体定下来,再用一套字段与流程把审批和追踪压实到可执行的动作里,这样才能长期跑下去。...
阅读全文 >