Parasoft中文网站 > 技术问题 > Parasoft旗下C/C++test怎么配置单元测试桩函数 C/C++test桩函数返回值异常如何排查

Parasoft旗下C/C++test怎么配置单元测试桩函数 C/C++test桩函数返回值异常如何排查

发布时间:2026-08-31 10: 41: 00

在Parasoft C/C++test中做单元测试时,Stub可以替代外部接口、底层驱动或者当前测试环境无法直接调用的函数。真正容易出问题的并不是“有没有生成桩”,而是测试执行时究竟用了哪一个函数定义,以及当前Test Case的返回值配置有没有在调用前生效。碰到桩函数明明设置了返回值,被测函数却拿到0、false、空指针或者原函数结果时,可以从Stub类型、测试步骤顺序和Instrumentation配置三个方向检查。

一、Parasoft旗下C/C++test怎么配置单元测试桩函数

C/C++test提供User Stub和Auto Stub两种常用方式。需要主动覆盖一个已经存在的函数时,User Stub更合适;只是为了补齐缺失的Symbol,则可以生成Auto Stub。

1、从Stubs视图创建桩函数

①先执行一次准备使用的单元测试Test Configuration,让C/C++test完成Symbol收集。

②进入【Parasoft】→【Show View】→【Stubs】。

③在【Symbol】列中找到需要替换的函数。

④查看【Definition】,确认当前显示的是【Original】【Auto】【Safe】还是其他定义。

⑤如果原函数已经存在,但测试中不希望真正调用它,右键选择【Create User Stub】。

⑥选择Stub文件的保存目录和文件名。

⑦向导完成后,打开生成的Stub文件。

⑧检查函数参数、返回类型和原函数是否一致。

⑨保存文件后重新执行测试。

User Stub的优先级高于Original,因此即使项目本身已有函数定义,也可以让测试进入这个User Stub。

2、给缺少定义的Symbol生成Auto Stub

①继续在【Stubs】视图中检查目标函数。

②如果【Definition】显示【N/A】,说明当前没有可用定义。

③右键该函数,选择【Generate Auto Stub】。

④确认Auto Stub输出目录。

⑤打开自动生成的Stub文件。

⑥检查函数声明和返回类型是否完整。

⑦需要自定义默认行为时,修改Stub中的逻辑。

⑧保存后重新运行分析和测试。

Auto Stub的优先级低于User Stub、Safe Stub和Original。项目或库中已经存在原函数时,即使生成了Auto Stub,也不代表执行时一定会进入它。

3、按不同Test Case设置返回结果

同一个Stub在不同测试场景下经常需要返回不同值,这时可以通过Test Case Editor配置,而不必反复修改Stub源文件。

①确认【Enable Stub Callbacks】已经启用。

②打开目标Test Case。

③在调用被测函数之前加入【Stub Configuration】。

④在【Function】中选择对应Stub。

⑤需要修改简单类型返回值时,使用【SET RETURN VALUE】。

⑥填写本次Test Case需要的值。

⑦在后面再加入被测函数的【Call】步骤。

⑧执行Test Case并查看实际结果。

如果Stub Configuration放在Call之后,本次调用不会使用这项新配置。

二、C/C++test桩函数返回值异常如何排查

返回值和预期不一致时,先别急着改数值。更应该先确认测试到底进入了哪一个函数定义,因为不少问题都是“改了Stub,但执行的其实还是Original”。

1、先确认实际使用的Definition

①重新执行一次出现异常的单元测试。

②打开【Parasoft】→【Show View】→【Stubs】。

③找到目标函数并查看【Definition】。

④显示【User】时,当前使用的是User Stub。

⑤显示【Original】时,测试仍然调用原函数。

⑥显示【Auto】时,当前使用自动生成Stub。

⑦显示【Safe】时,当前调用的是C/C++test提供的Safe Stub。

⑧如果显示结果和预期不一致,先处理Stub选择问题,再继续查返回值。

C/C++test对不同定义存在优先级,因此Definition是判断桩是否真正生效的直接依据。

2、检查Stub Configuration执行顺序

①打开异常Test Case。

②找到目标【Stub Configuration】。

③确认它出现在被测函数【Call】之前。

④同一个Stub配置过多次时,检查离当前Call最近的一项。

⑤确认【Function】选择的是实际使用的Stub。

⑥检查【SET RETURN VALUE】里的值和数据类型。

⑦重新单独运行这个Test Case。

⑧观察被测函数获得的结果。

如果一个测试用例中多次修改同一个Stub行为,后续调用会使用调用前已经生效的配置,因此步骤位置会直接影响结果。

3、确认是不是回到了默认Stub逻辑

Auto Stub或其他C/C++test Stub如果没有为当前Test Case定义Stub Callback,会执行自身默认逻辑,简单类型通常会返回0、false或null。

①检查当前Test Case是否真的存在对应【Stub Configuration】。

②确认【Enable Stub Callbacks】已经开启。

③打开目标Stub文件查看默认逻辑。

④检查当前Test Case是否注册了对应Callback。

⑤没有测试用例专属配置时,补充Stub Configuration。

⑥再次执行测试并检查返回结果。

三、配置看起来正确但返回值仍异常怎么继续检查

如果Stubs视图已经显示目标Stub,Test Case中的返回值配置也没有问题,就要继续检查测试执行配置。Instrumentation不支持Stub,或者外部库中的原函数没有被替换,也会造成桩逻辑没有按预期执行。

1、检查Instrumentation配置

①进入【Parasoft】→【Test Configurations】。

②打开当前真正用于执行测试的配置。

③进入【Execution】→【General】。

④查看【Instrumentation mode】。

⑤选择支持Stub Instrumentation的模式。

⑥使用Custom instrumentation时,打开详细设置。

⑦确认Function Stub相关功能已经启用。

⑧保存后重新Build Test Executable,再运行测试。

2、外部库函数检查Stub all calls

①回到【Stubs】视图查看目标函数的【Location】。

②如果函数来自外部Library,确认当前测试确实需要替换它。

③打开当前Test Configuration的Instrumentation设置。

④检查【Function stubs mode】。

⑤需要替换库中已经存在的函数时,可设置【Stub all calls】。

⑥重新构建测试可执行文件。

⑦再次查看【Definition】是否已经切换到目标Stub。

3、重新构建测试执行环境

①保存所有Stub文件和Test Case修改。

②执行【Build Test Executable】。

③确认没有重复Symbol或旧Stub相关错误。

④重新执行【Run Unit Tests】。

⑤再次检查【Stubs】视图中的Definition。

⑥使用固定输入运行目标测试。

⑦对照预期值和实际返回值。

总结

C/C++test桩函数返回值异常时,最先要确认的是当前测试究竟使用了User Stub、Auto Stub还是Original,然后再检查Stub Configuration是否在Call之前生效。若这两项都没有问题,就继续核对Instrumentation和Function stubs mode。把Stub定义、Test Case步骤和Test Configuration放在一起检查,比单独反复修改返回值更容易找到异常来源。如需进一步了解Parasoft C/C++test桩函数配置、Stub Callback与返回值异常排查方法,欢迎联系咨询。

展开阅读全文

标签:软件测试安全测试代码质量分析

读者也访问过这里:
Parasoft
与世界保持同步创新的测试
立即购买
最新文章
Parasoft怎么配置代码扫描项目 Parasoft项目配置错误导致分析失败如何处理
Parasoft常用于开发过程中的代码检查和静态分析,通过扫描项目源码,帮助开发人员发现代码规范、结构以及潜在质量问题。不过在配置扫描项目时,实际操作中经常会遇到一些细节问题,例如项目导入后无法正常分析、部分文件没有参与扫描、设置的规则没有生效等。这些情况多数和项目环境、源码路径以及分析配置有关。本文将介绍Parasoft代码扫描项目的配置方法,并整理项目配置异常时的排查思路。
2026-09-07
Parasoft怎么生成测试覆盖率报告 Parasoft覆盖率数据不完整如何检查
Parasoft在软件测试流程中经常用于单元测试、代码分析以及覆盖率统计。通过覆盖率数据,开发人员可以查看测试执行涉及的代码范围,了解函数、分支以及路径的验证情况。不过在项目实际运行过程中,覆盖率报告可能出现文件缺失、统计结果偏低、部分代码没有记录等问题。这些情况通常和测试配置、代码版本、编译环境以及覆盖率采集范围有关,需要结合具体项目逐步排查。
2026-09-07
Parasoft怎么创建单元测试用例 Parasoft单元测试执行失败如何定位
Parasoft在企业软件开发和质量验证场景中经常用于自动化测试、代码分析以及单元测试管理。对于使用C、C++、Java等语言开发的项目,单元测试能够帮助开发人员提前发现函数逻辑错误和接口调用问题。不过在实际使用Parasoft创建测试用例时,初次配置项目环境、设置测试对象以及执行测试流程时,容易遇到测试用例无法生成、执行失败、覆盖结果异常等情况。本文介绍Parasoft创建单元测试用例的方法,以及测试执行失败后的定位思路。
2026-09-07
Parasoft怎么配置静态代码分析规则 Parasoft静态分析规则设置后未生效如何排查
Parasoft静态代码分析可以帮助开发团队检查代码中的潜在缺陷、安全风险以及编码规范问题,通过配置不同规则集,可以满足MISRA、CERT、CWE等不同项目标准要求。但在实际使用过程中,规则启用后没有检测结果、修改严重等级未变化、规则配置无法同步等情况较为常见。造成这些问题的原因可能来自测试配置选择、规则状态、分析范围、项目环境以及规则库版本等多个方面。本文介绍Parasoft静态分析规则配置方法,以及规则设置后未生效时的排查方式。
2026-09-07
Parasoft旗下Virtualize怎么录制虚拟服务 Virtualize录制后的响应数据不匹配如何调整
Parasoft Virtualize可以通过Message Proxy截获真实系统之间的请求与响应,再根据录制流量生成Message Responder和Data Repository。录制完成后,如果同一个请求拿到了错误响应,或者请求参数变化后Virtualize仍返回上一组数据,通常要检查Responder分组方式、Request Matching和Data Source Correlation。录制数据只是生成虚拟服务的基础,最终返回哪条响应仍取决于请求匹配条件和数据关联规则。
2026-08-31
Parasoft旗下SOAtest怎么配置数据驱动测试 SOAtest测试数据没有正确替换如何处理
Parasoft SOAtest可以把CSV、Excel、数据库、Data Repository或内部Table中的数据绑定到SOAP、REST和其他测试工具,让同一条Test Case按照多组输入重复执行。数据驱动已经配置,但请求中仍然出现固定值、上一轮数据或空值时,通常要检查Data Source是否挂在正确的Test Suite、字段是否真正切换为Parameterized,以及Data Bank或变量有没有在运行时覆盖原来的数据源值。
2026-08-31

咨询热线 15601718224