TESSY代码插桩主要用于收集软件运行过程中的覆盖率数据,例如语句覆盖、分支覆盖以及MC/DC覆盖等。在汽车软件测试项目中,代码插桩通常会和单元测试结合使用,通过插入统计代码记录被测函数执行情况。实际使用时,插桩后的程序可能出现运行异常,例如测试程序启动失败、执行结果异常、目标环境运行不稳定等问题。这类情况通常和插桩配置、编译参数、内存空间以及目标平台限制有关,需要结合构建日志和运行环境逐项检查。
一、TESSY怎么设置代码插桩
TESSY中的代码插桩主要依靠测试环境配置完成,需要根据测试目标和编译环境设置对应插桩方式。
1、开启代码覆盖率分析功能
进行代码插桩前,需要先在测试项目中启用覆盖率相关配置。
①、打开【TESSY】测试项目。
②、进入【Project Settings】。
③、打开【Coverage Analysis】配置页面。
④、启用【Code Coverage】功能。
⑤、选择需要统计的覆盖率类型。
⑥、保存当前项目设置。
不同项目需要关注的覆盖率指标不同,例如功能测试可能关注语句覆盖,而功能安全项目通常需要关注更严格的分支覆盖或MC/DC覆盖。
2、配置插桩源文件范围
并不是所有文件都需要插桩,需要根据测试目标选择范围。
①、打开【Test Project】中的源文件列表。
②、选择需要测试的【Source File】。
③、确认目标文件已经加入测试环境。
④、取消不需要统计覆盖率的第三方库文件。
⑤、检查被测函数是否包含在插桩范围内。
⑥、重新生成测试环境。
如果插桩范围过大,会增加测试程序体积和运行开销,嵌入式目标环境中尤其需要控制范围。
3、配置插桩编译选项
代码插桩会改变测试程序源码,需要保证编译器能够正确处理生成内容。
①、打开【Compiler Configuration】。
②、检查当前编译器类型。
③、确认插桩相关编译选项。
④、检查【Include Path】是否包含覆盖率支持文件。
⑤、确认【Preprocessor Definitions】保持一致。
⑥、重新构建测试程序。
插桩代码通常需要依赖TESSY生成的支持文件,如果路径或者宏定义缺失,可能导致构建失败。
4、生成带插桩的测试程序
完成配置后,需要重新生成测试环境。
①、打开【Test Environment】。
②、执行【Generate Test Environment】。
③、确认生成过程没有错误。
④、查看【Build Output】。
⑤、检查插桩文件是否参与编译。
⑥、生成新的测试程序。
5、配置覆盖率数据保存方式
插桩代码执行后,需要将运行数据返回给TESSY分析。
①、打开【Coverage Settings】。
②、选择覆盖率数据输出方式。
③、配置目标环境数据回传方式。
④、检查数据保存路径。
⑤、保存覆盖率配置。
⑥、执行一次测试验证。
二、TESSY代码插桩后测试程序运行异常如何处理
代码插桩后出现异常,需要先判断问题发生在编译阶段、启动阶段还是测试执行阶段。不同阶段对应的排查方向不同。
1、检查插桩后程序是否构建成功
如果测试程序没有正常生成,需要先查看构建输出。
①、打开【Build Output】窗口。
②、查看插桩文件编译错误。
③、检查缺失的【Header File】。
④、确认覆盖率支持文件是否加入工程。
⑤、检查编译器报错位置。
⑥、重新生成测试程序。
如果插桩代码无法通过编译,通常和编译环境配置或者支持文件路径有关。
2、检查运行内存是否不足
插桩会增加额外代码和数据空间,嵌入式平台中可能导致内存不足。
①、查看测试程序链接结果。
②、检查【Map File】中的代码大小。
③、确认RAM和Flash使用情况。
④、减少不必要的插桩文件。
⑤、调整测试程序内存配置。
⑥、重新运行测试。
目标资源有限时,完整插桩可能让程序体积明显增加,需要根据测试目标选择覆盖范围。
3、检查插桩代码与编译选项是否一致
如果插桩环境和原工程编译环境不同,可能导致程序运行异常。
①、打开原工程【Build Settings】。
②、查看编译宏定义。
③、检查优化等级设置。
④、确认TESSY使用相同配置。
⑤、重新生成插桩代码。
⑥、重新执行测试。
例如条件编译代码在两个环境中选择不同分支,会导致测试程序行为和实际软件版本不一致。
4、检查目标平台接口配置
部分嵌入式项目需要通过目标接口收集覆盖率数据。
①、打开【Target Interface】配置。
②、检查目标通信方式。
③、确认数据收集接口。
④、检查初始化代码。
⑤、重新下载测试程序。
⑥、观察运行日志。
如果测试程序能够启动,但覆盖率数据无法返回,需要重点检查目标接口和数据传输配置。
5、检查测试结果异常
有时程序可以运行,但测试结果和插桩前不同。
①、打开【Test Execution】。
②、比较插桩前后的测试结果。
③、检查全局变量变化。
④、检查时间相关代码。
⑤、确认插桩是否影响实时行为。
⑥、调整测试环境。
插桩会增加额外执行代码,对于时间敏感的软件,需要确认测试环境不会因为额外开销产生行为变化。
三、TESSY代码插桩问题处理后怎么验证
完成调整后,需要重新确认测试程序、覆盖率数据和测试结果是否正常。
1、验证插桩功能
①、打开【Coverage Analysis】。
②、执行测试用例。
③、查看覆盖率数据是否生成。
④、检查覆盖率报告。
⑤、确认目标函数覆盖结果。
⑥、保存测试结果。
2、验证测试程序稳定性
①、重新运行【Test Execution】。
②、执行多组测试用例。
③、检查程序启动状态。
④、查看运行日志。
⑤、确认测试结果一致。
⑥、记录验证结果。
3、保存稳定测试配置
①、保存【Test Project】。
②、保存【Coverage Configuration】。
③、记录编译器版本。
④、记录目标平台信息。
⑤、保留可正常运行的测试环境。
总结
TESSY代码插桩主要用于获取软件覆盖率数据,但插桩过程会改变测试程序结构,因此需要关注编译环境、资源占用以及目标平台运行情况。遇到插桩后测试程序异常时,可以先检查构建过程,再分析内存使用、编译参数和目标接口配置。保持插桩配置与实际开发环境一致,并保存稳定测试环境,有助于后续持续开展单元测试和覆盖率分析。