【回眸】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过程中遇到的问题!也欢迎其他开发者的加入,世界因为有你们,因此变得更加美好。

相关推荐
软件检测小牛玛2 天前
具备软件功能测试资质的机构哪家更权威?山东软件测评机构 中承信安
功能测试·单元测试·软件测试报告·软件测评机构
闻哥2 天前
从测试坏味道到优雅实践:打造高质量单元测试
java·面试·单元测试·log4j·springboot
Warren983 天前
Pytest Fixture 作用域与接口测试 Token 污染问题实战解析
功能测试·面试·单元测试·集成测试·pytest·postman·模块测试
知行合一。。。3 天前
程序中的log4j、stderr、stdout日志
python·单元测试·log4j
测试秃头怪3 天前
面试大厂就靠这份软件测试八股文了【含答案】
自动化测试·软件测试·python·功能测试·面试·职场和发展·单元测试
测试大圣3 天前
软件测试基础知识总结(超全的)
软件测试·python·功能测试·测试工具·职场和发展·单元测试·测试用例
CodeCraft Studio4 天前
【Parasoft案例分享】在 DO-178C 标准下,如何实现航空嵌入式软件测试自动化
单元测试·自动化·静态分析·代码覆盖率·parasoft·do-178c·软件自动化测试
懒羊羊大王&4 天前
软件测试之博客系统项目实战(补充和解析部分)
selenium·单元测试·测试用例·集成测试
真智AI4 天前
用 LLM 辅助生成可跑的 Python 单元测试:pytest + coverage 覆盖率报告(含运行指令与排坑)
python·单元测试·pytest