Parasoft中文网站 > 售前问题 > Parasoft C/C++test怎么做单元测试覆盖 Parasoft C/C++test覆盖率门槛怎么设更合理

Parasoft C/C++test怎么做单元测试覆盖 Parasoft C/C++test覆盖率门槛怎么设更合理

发布时间: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的单元测试覆盖给做好,还有把覆盖率的门槛设得合理一点,还是得把编译环境、测试的配置、覆盖的那些指标、代码的风险,还有持续集成里头的门禁,这些东西放在一块儿来看。先把覆盖率的数字搞得能让人信得过,然后再照着模块的风险去立规矩,往后再去补测试的时候,才不会变成只是在单纯地追着一个数字跑。

展开阅读全文

标签:CWE软件测试

读者也访问过这里:
Parasoft
与世界保持同步创新的测试
立即购买
最新文章
Parasoft服务虚拟化怎么配置 Parasoft服务虚拟化环境连接失败怎么办
服务虚拟化用于测试时,需要让Virtualize Server、虚拟资产、传输连接和被测应用地址保持一致。主机名、端口、路径或证书不匹配,都可能出现连接失败或请求未命中。因此,弄清Parasoft服务虚拟化怎么配置Parasoft服务虚拟化环境连接失败怎么办,重点是把创建、部署、转发和验证连成完整链路。
2026-07-27
Parasoft接入Jenkins怎么配置 Parasoft Jenkins构建失败日志怎么排查
Parasoft接入Jenkins应当怎样配置,以及Jenkins构建失败时日志又该如何排查,这两个问题,是不少团队在把静态分析、单元测试和覆盖率接入CI的时候,都会碰到的。这里需要先分清楚两件事情,Parasoft这个工具,它负责的是执行分析、生成报告;而Jenkins这边,它负责的是调度任务、展示结果,还有控制流水线的状态。如果前一个环节没有生成出有效的报告,那么后面插件的配置就算再完整,Jenkins的页面上,也不会有正常的结果出来。所以在进行配置的时候,不能只盯着插件那边的界面,而是要把工具的执行、报告的输出、路径的读取,还有质量的判断标准,这几样东西连在一起去看。
2026-06-30
Parasoft SOAtest怎么测试接口 Parasoft SOAtest接口断言怎么设置
Parasoft SOAtest测试接口的方法,和接口断言怎样设置,这两件事的关键,是先把接口的请求调通,然后再一步一步把需要校验的地方补上去。SOAtest这个工具,能够支持REST、SOAP、微服务、数据库这些不同的测试场景,也能够根据流量或者自然语言去生成API的测试,还可以创建那种靠数据来驱动、分好几个步骤的测试流程。所以,它的用处不只是发出一个请求然后去看返回的结果,它更适合把接口的调用、参数的准备、响应的校验,还有回归的执行这一整套东西都串在一起。
2026-06-30
Parasoft DTP报告怎么查看 Parasoft DTP质量趋势怎么分析
Parasoft DTP报告怎么查看,以及DTP里的质量趋势怎么分析,这通常是项目在接入静态分析、单元测试、覆盖率或合规检查之后才会碰到的事情。DTP这个工具,它并不是要你再单独跑一次测试,它更像是一个能把各类测试结果集中起来看的质量平台,它可以把静态分析、测试执行、覆盖率和合规状态这些数据,都放在一个统一的看板里面,用来帮助判断项目当前的风险和发布准备的情况。
2026-06-30
Parasoft C/C++test怎么导入工程 Parasoft C/C++test头文件路径怎么补齐
Parasoft C/C++test导入工程的方法,以及头文件路径的补齐方式,其关键并不在于仅将源码文件夹选中。C/C++项目对编译器、宏定义、头文件目录、目标平台和构建脚本都存在依赖,如果这些信息没有被一同导入,工具所看到的代码便不是项目在真实编译时的代码,后续的静态分析、单元测试和规则检查都会因此出现偏差。Parasoft的文档中也曾提到,C/C++test能够通过构建数据文件、Visual Studio工程、CMake生成的JSON等方式,来收集输入范围和构建信息。
2026-06-30
Parasoft MISRA规则怎么启用 Parasoft MISRA违规项怎么按等级筛选
Parasoft的MISRA规则应当怎样启用,以及MISRA的违规项又该如何按照等级去筛选,这两个问题的处理方式,主要取决于项目当前使用的是Parasoft C/C++test的桌面版本、命令行版本,还是结合DTP平台来统一查看结果。MISRA规则的启用,并不是简单地把开关打开就算完成了,在这之前,还需要确认项目代码能够被正常分析,编译配置、头文件的路径、宏定义,还有规则集,这几样都是正确的。Parasoft C/C++test这个工具,能够被用在C和C++代码的质量检查上,同时也支持面向安全关键软件的编码规范合规检查,其中就包含了与MISRA有关的规则。
2026-06-30

咨询热线 15601718224