【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

04-06 阅读 0评论

目录

前言

Tessy 如何进行打桩操作

普通桩

高级桩

手写桩

Tessy单元测试之指针相关测试注意事项

 有类型的指针(非函数指针):

 有类型的函数指针:

 void 类型的指针:

结语

前言

进行单元测试之后,但凡稍微复杂一些的软件都难以避免需要在设置中遇到桩函数,今天就来记录一下如何在TESSY中使用桩函数。

首先介绍一下什么是桩函数:

桩函数(Stub)是模拟被测试模块所调用的模块。

桩,或称桩代码,是指用来代替关联代码或者未实现代码的代码。如果函数B用B1来代替,那么,B称为原函数,B1称为桩函数。打桩就是编写或生成桩代码。

Tessy 如何进行打桩操作

在tessy里如何给外部函数进行打桩呢?

首先需要按照正常流程进行分析函数,函数分析没有问题之后再打开TIE,这里可以看到函数里有用到的外部函数,内圈是白色说明该函数虽然使用到了,但是却没有打桩,如果返回值是void型,直接右击点击 Create Stub (for current Testobject),如果返回值非void型,需要右键点击 Create advanced Stub(for current Testobject)

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

要注意的是, Create Stub 之后不需要设置passing和target passing,Create Advanced Stub 之后需要设置passing和target passing,默认的passing和target passing很可能不正确。

普通桩

1)函数没有返回值没有形参,可以打普通桩

2) 如果函数不影响后续实现以及变量,可以打普通桩

3) 如果函数本身有返回值但并不使用,可以打普通桩

4) 函数有形参,但不观测可以打普通桩

例如:

extern void STUB_1();
extern hirain_u8 STUB_2();
static hirain_u8 STUB_3(hairain_u8 temp){return temp*temp;};
void test_fun_stub_1(void){
            STUB_1();
}

STUB_1()

在当前 c 文件中没有定义,直接执行会报未定义错误

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

要对该函数打普通桩

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

高级桩

1) 如果用到函数返回值,需要打高级桩,手动控制其返回值

2) 如果函数有形参,并且需要接口传参检测,需要打高级桩

extern void STUB_1();
extern hirain_u8 STUB_2();
static hirain_u8 STUB_3(hairain_u8 temp){return temp*temp;};
hirain_u8 test_fun_stub_2(void){
            hirain_u8 temp = STUB_2();
            return temp;
}

被测函数中用到了STUB_ 2 函数的返回值, 打普通桩 会报以下错误:

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

所以需要打高级桩,在TDE 界面中设置函数调用预期返回值。

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

例如:

extern void STUB_1();
extern hirain_u8 STUB_2();
static hirain_u8 STUB_3(hairain_u8 temp){return temp*temp;};
hirain_u8 test_fun_stub_4(hirain_u8 temp){
            hirain_u8 trm = STUB_3(temp);
            return tem;
}

对STUB_3() 函数进行传参检测,需要给该函数打高级桩,第一个接口为返回值,

其余 为形参接口

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

手写桩

如果需要让桩函数有额外的功能(传参检测、局部数据处理、多传参检测、函数

实现变更等) 可以进行手写桩:

hirain_u8 loop_test3(hirain_u8 temp){
        for(hirain_u8 i = 0;istr2 = pl->strl;
}

 首先进入TIE界面查看passing 和target passing,不能设置的有冲突

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

 接着回到TED,选择需要赋值的指针,在表格处右键 Create Pointer Target Value

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

创建完指针变量之后需要在 Dynamics里给指针变量赋值

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

 有类型的函数指针:

构建与指针类型相同的函数对象,将地址传入指针接口

在 Declarations /Definition 模块写函数的声明和定义 。

例如:

hirain_u32(*T_pon)(hirain_u32 i);
hirain_u32 hirain_stuv(hirain_u32 temp){
            temp = (*T_pon)(temp);
            return temp;
}

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

 void 类型的指针:

需要新建一个有类型的全局变量,然后将指针 指向该变量,

将变量地址传入指针接口。

例如:

hirain_u8 TS_FUN_PON_1(int *p,void *p1)
{
    hirain_u8 temp = 0;
    int *temp1 = p1;
    a = *p;
    return *temp1;
}

新建一个变量且命名

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

 在TED界面赋值

【回眸】Tessy 单元测试软件使用指南(三)怎么打桩和指针赋值和测试

结语

本文介绍了当使用Tessy对软件进行单元测试时如何打桩和指针相关测试的注意事项及操作要点,希望能给正在摸索Tessy的网友一点点启发。


免责声明
本网站所收集的部分公开资料来源于AI生成和互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (暂无评论,人围观)

还没有评论,来说两句吧...

目录[+]