学习目标:
熟悉Tessy的使用
1. 关于 License 的添加
1.1 点击"开始键",在最近添加中有 Floating License Manager
1.2 之前看其他博主的截图都是在Teesy软件旁边打开的Floating License Manager,一直没有找到位置。偶然见发现在最近添加就有。
2. 关于函数的 Properties
2.1 Properties需要先点击“Test Project”中的工程里的内容,projecr、Folder、Module都行。选中了才能看到Properties中有内容
分割线-----------------------------------------------------------------------------
1. 导入工程后 Execute Test 遇到的问题
- D:\XXX\XXXX\XXX: warning: implicit declaration of function “ABCD” is invalid in C99 首先这段话的直接中文意思是 某路径下的警告:在C99的标准中函数"ABCD"是隐式声明的状态。
D:\XXX\XXXX\XXX: warning: implicit declaration of function “ABCD” is invalid in C99
由于项目时间比较短,加上刚接触Tessy软件,一直以为Tessy中的warning和其他IDE编译软件一样可以忽略,直到一个下午都无法往后推进单元测试才意识到问题的严重性。Tessy中如果一直是 Failed to execute ‘driver32.exe “C:\tessy\tmp\tbs\12960.tbs”’。其实就是warning的内容影响编译结果了。
Failed to execute ‘driver32.exe “C:\tessy\tmp\tbs\12960.tbs”’
解决方案:找到报错的函数,在需要进行测试的C文件中用extern 重新声明一下就可以了。
原因是:A.c文件中想要调用外部函数B.c中的D函数的话,必须要用以下两种方式进行。原先的warning刚好是调用了外部函数,但是该外部函数在.h文件中又没有进行声明导致的
方式1:
// This is A.c file
extern void Dfunction(void);
int main()
{
Dfunction();
return 0;
}
// This is B.c file
void Dfunction(void)
{
printf("This is a Tessy module Test");
}
方式2
// This is A.c file
#include "B.h"
int main()
{
Dfunction();
return 0;
}
// This is B.c file
void Dfunction(void)
{
printf("This is a Tessy module Test");
}
// This is B.h file
void Dfunction(void);
2. 桩函数的使用
使用Tessy对某个函数进行分析的时候,需要将整个C文件中所有涉及到的函数都进行打桩,否则无法进行后续分析。
D:\Project\Tessy\work\00000401\00000402\XXX.c:7770: undefined reference to ‘TestFunction’
出现以下情况,都是由于test case没有设置齐全导致的,可能是输入输出中的某个变量没有设置测试值。注意检查test case 的内容就可以解决这个问题
Test Object ‘App_A_Function’ removed from test; it is not executable.
Test Object ‘App_B_Function’ removed from test; it is not executable.
Test Object ‘App_c_Function’ removed from test; it is not executable.
…
结论:
由于还不是很熟悉Tessy的使用,先记录这些内容。后续碰到问题,有解决方案后继续和更新…