【回眸】Tessy 单元测试软件使用指南(五)进阶报错之解决指南(含泪整理)

前言

[运行Test Case时遇到的报错:](#运行Test Case时遇到的报错:)

[报错1:error 0x4: [tstcom:readFromBuffer] unable to receive block size](#报错1:error 0x4: [tstcom:readFromBuffer] unable to receive block size)

报错2:执行RS结果是×

报错3:OUT一直是×,输出值已经完整且正确

报错4:执行某些case的时候一直卡在执行界面无法结束

[报错5:error: ecepted '=', ' ,' ,' ; ' , 'asm' or 'attribute' before 'const'](#报错5:error: ecepted '=', ' ,' ,' ; ' , 'asm' or 'attribute' before 'const')

[相似问题报错:error: expected ';' , ',' or ')' before '&' token](#相似问题报错:error: expected ';' , ',' or ')' before '&' token)

[报错6:error: assignment of read-only location '*_Src'](#报错6:error: assignment of read-only location '*_Src')

[报错7:Prepare Test : Missing return statement for non-void function 'wcsnlen'](#报错7:Prepare Test : Missing return statement for non-void function 'wcsnlen')

[报错8:undefined reference to 'XXXXX'](#报错8:undefined reference to 'XXXXX')

报错9:结果显著性调用次数不对

报错10:一些寄存器相关的代码测不通

[报错11:Error: no such instruction:'dmb''cpsid''cpsie'](#报错11:Error: no such instruction:‘dmb’‘cpsid’‘cpsie’)

[报错12:Error:number of operands mismatch for 'ds'](#报错12:Error:number of operands mismatch for 'ds')

报错13:误关了TDE的这个视图​编辑

[报错14:The test object's interface is incomplete.](#报错14:The test object's interface is incomplete.)

[报错15:multiple defiition of '__acrt_iob_func';](#报错15:multiple defiition of '__acrt_iob_func';)

[报错16:ERROR: Test driver slave has detected corruption of its global variables by the test object in test step 3.1](#报错16:ERROR: Test driver slave has detected corruption of its global variables by the test object in test step 3.1)

后记


前言

没想到单元测试报错的博文还有更新,又积攒了一些报错和解决方法,今天终于有时间整理出来了。2025年攒的素材~

分析过程中出现的报错比较基础,本次博文暂不收录了。但是如果编译器不匹配,在分析过程中还是有很多需要加宏的报错,主要集中在不识别的结构体 关键字。

运行Test Case时遇到的报错:

报错1:error 0x4: [tstcom:readFromBuffer] unable to receive block size

情况1解决方案:

接口问题,根据源代码可知round、char(*state)[4][4]和RoundKey是待测函数输入的参数,需要将passing和指针target passing 均设置成IN。

这个也是接口的问题,前面一个case的buf指针设置成空指针所以报错了,非空指针如果这样选target passing就会无法赋值

后面的也需要改成IN

情况2解决方案:

有时候我们会遇到一种特殊情况,当其他test case可以正常运行,但是新增了一个 test case 之后新的case 执行遇到这个报错,这个时候说明不是接口的问题,很有可能是测试Cese里有非空指针需要赋值,但是给的指针是空指针(给的指针里的值为0也一样),也会报这个错,这个时候需要检查case里有没有空指针,再做进一步排查。

报错2:执行RS结果是×

解决方案:

由于有些函数是无返回值的,所以直接执行RS会是×,这个时候需要将 No Call Expected移到前面来执行。

这样RS就没有×了

当有很多Function Call时,可以点击中间位置的蓝色按钮,一键实现Expected calls 与实际值一致,这个功能真是救老命,有一个有几千个的Function Call就是这样搞定的,节约了很长时间。

报错3:OUT一直是×,输出值已经完整且正确

解决方案:

在没打桩的时候就新增了case,导致接口方向设置错误,这个问题除了接口方向设置错误,也有可能和一些指针设置成NULL 非法有关,指针不要设置成空,再试试吧!

报错4:执行某些case的时候一直卡在执行界面无法结束

情况1解决方案:

一直无法成功结束的原因可能是死循环,也可能和接口相关,这里是因为有一个用到的接口我设置成extern,排除这个错误用了很久!崩溃

这里是给了野指针导致的错误

情况2解决方案:

另一个原因也遇到过,代码里需要大小为100以上的结构体,赋值小于这个数,也导致了死循环,具体需要结合代码分析。数组给的不够多。本来给16个,不够循环的了,给100个就够了,这个具体数值需要根据代码试错而来的。

报错5:error: ecepted '=', ' ,' ,' ; ' , 'asm' or 'attribute' before 'const'

情况1解决方案:

除了代码问题:缺少 } ;之外,最可能的原因就是有以下划线开头的函数打桩导致的这个错误,这个时候需要取消这个自动打桩的函数(全部取消打桩)

情况2解决方案:

这个错误是因为一些一下划线开头的变量在tessy里自动打桩,一打桩就会出错,取消打桩即可,注意其他以下划线开头的函数也不要打桩,不然也会报错。

取消自动Define Variable

相似问题报错:error: expected ';' , ',' or ')' before '&' token

解决方案:

也是给下划线开头的函数打桩导致的,这个错误也恶心人,新手基本上不知道是这个原因,干一天都不知道怎么处理。

报错6:error: assignment of read-only location '*_Src'

解决方案:

将src改成Out,因为这是一个只读的指针,改成OUT后该错误消失

报错7:Prepare Test : Missing return statement for non-void function 'wcsnlen'

解决方案:

有使用到的函数没有正确打桩,名字为wcslen,找到后正常打桩刷新一下这个错误就没了。

报错8:undefined reference to 'XXXXX'

解决方案:

这个错误比较简单,原因是没有给PORT_Init 打davanced 桩

报错9:结果显著性调用次数不对

结果显著性为X,打开Call Trace 将rand移到左边。

重新执行,悬浮在rand上,发现实际值为4x,将1改成4,重新执行一下,没有问题了

报错10:一些寄存器相关的代码测不通

解决方案:

注释相关寄存器操作/写封装函数测试

注释死循环,否则tessy会卡住

报错11:Error: no such instruction:'dmb''cpsid''cpsie'


解决方案:打桩

发现下面这三个有用

报错12:Error:number of operands mismatch for 'ds'

解决方案:涉及到寄存器的代码会出现这个错误,在TIE里搜索,然后打桩就好

报错13:误关了TDE的这个视图

解决方案:

右键TDE - Test Data Editor 点击Reset,可以看到视图又回来了。

报错14:The test object's interface is incomplete.

解决方案:

遇到这种不能添加case的情况,都是因为默认的有变量的passing 默认为unknow,根据代码passing改正后能够正常添加Test case

报错15:multiple defiition of '__acrt_iob_func';

解决方案:

在TIE里搜索找到相应函数,取消打桩,问题解决。

报错16:ERROR: Test driver slave has detected corruption of its global variables by the test object in test step 3.1

解决方案:

数据越界,试试赋值小一点的数吧!也有可能给的指针大小太小了,也会出这个错误,如果一个指针满足,一个指针不满足,则会出现代码一直在执行的错误,这个具体要结合代码,给出准确的IN值.

后记

还有很多很多tessy的错误没有展示,欢迎联系博主添加群聊下载资料一起探讨使用Tessy过程中遇到的问题!也欢迎其他开发者的加入,世界因为有你们,因此变得更加美好。

相关推荐
小二·1 天前
前端测试体系完全指南:从 Vitest 单元测试到 Cypress E2E(Vue 3 + TypeScript)
前端·typescript·单元测试
无心道人c1 天前
SonarQube7.6实现C#自定义规则
单元测试·自动化·sonar
汽车仪器仪表相关领域1 天前
多气精准检测,全场景适配——NHA-506/406型汽车排放气体测试仪项目实战分享
大数据·功能测试·单元测试·汽车·可用性测试·安全性测试
卓码软件测评2 天前
第三方软件国产化测评机构【API验收测试,除了Postman,还有什么推荐工具?】
测试工具·ci/cd·性能优化·单元测试·测试用例·postman
shughui2 天前
JMeter(二):什么是jmeter参数化?为什么需要它?如何使用
测试工具·jmeter·性能优化·单元测试
卓码软件测评3 天前
首版次软件认证测试机构【Apifox GraphQL支持详解:查询、变更和订阅】
测试工具·ci/cd·性能优化·单元测试·测试用例
llilian_163 天前
如何挑对一款数字式频率计数器?时间间隔测量仪 国产频率计
单片机·测试工具·单元测试·自动化
原野风霜3244 天前
Test Harness单元测试如何导入已有的Harness文件
单元测试·simulink·test harness
卓码软件测评4 天前
第三方CMA/CNAS双资质软件测评机构【Gatling Recorder录制工具详解:HTTP/HTTPS请求捕获和脚本生成】
测试工具·ci/cd·性能优化·单元测试·测试用例