发布时间: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的静态分析,以及怎样确认它产生的误报,许多开发团队在引入代码检查的时候,都会遇到这类问题。静态分析并不是把工具装好,点一次扫描就结束了,在这之前,要去看工程的配置是否准确,挑选的规则集是否合适,在那之后,还要看扫描出来的结果,能不能被开发人员弄明白,愿不愿意去处理。如果配置与真实项目差别很大,告警就会大量出现;如果判断误报时缺少依据,后面的评审又容易反复争论。...
阅读全文 >
Parasoft dotTEST和SonarQube有什么区别 Parasoft dotTEST更适合哪些 .NET 项目
一个.NET项目的规模逐渐变大以后,如果只靠开发人员手工去检查代码,就很难长期地把质量稳住。Parasoft dotTEST和SonarQube这两款工具,都可以参与代码的检查工作,也都能接入到持续集成的流程里面去,但它们处理问题的视角是有差别的。SonarQube更偏向于做统一的代码质量管控,这种工具非常适合在企业里跨多个代码仓库、多种编程语言的环境中,建立起一道道质量闸门;而dotTEST则更加集中地服务于C#和VB.NET项目,除了做静态分析,它还能把代码覆盖率的采集、测试的执行、代码变更带来的影响分析,以及满足合规要求的报告,全都放进同一套验证的流程里面去。...
阅读全文 >
Parasoft SOAtest录制接口用例总失败怎么办 Parasoft SOAtest请求参数该从哪里校对
接口用例在录制完成以后,一到回放环节就频繁报错,这通常并不是录制功能本身不能用了,而是代理、认证信息、动态参数或者请求结构没有被处理利索。Parasoft SOAtest可以借助Parasoft Recorder把接口流量采集下来,再照着流量生成Smart API Test;录制期间,SOAtest Web Proxy这个代理需要一直保持运行。着手排查的时候,不要一遍又一遍地重新去做录制,应该先看一看失败的请求和真实流量之间,究竟是在哪一个层面上出现了偏差。...
阅读全文 >
Parasoft Jtest怎么开启空指针检查 Parasoft Jtest空指针问题怎么定位
很多团队把Jtest接进项目后,第一反应都是先跑一遍规则,可真正到了空指针这一类运行时风险上,常见问题并不是工具没能力,而是配置没选对、规则没单独收口、结果出来后又不会顺着路径往回找。Parasoft官方文档已经把这条链路拆得很清楚,空指针问题主要落在Flow Analysis这一层,内置配置里【Flow Analysis Fast】、【Flow Analysis Standard】和【Flow Analysis Aggressive】都围绕运行时缺陷展开,而【Recommended Rules】和【Critical Rules】又默认带了【Flow Analysis Fast】的规则,所以想把空指针检查跑起来,关键是先选对配置,再决定要不要把规则单独拎出来。...
阅读全文 >