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

目录

前言

[Tessy 如何进行打桩操作](#Tessy 如何进行打桩操作)

普通桩

高级桩

手写桩

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

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

有类型的函数指针:

[void 类型的指针:](#void 类型的指针:)

结语

前言

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

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

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

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

Tessy 如何进行打桩操作

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

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

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

普通桩

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

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

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

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

例如:

cpp 复制代码
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 文件中没有定义,直接执行会报未定义错误

要对该函数打普通桩

高级桩

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

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

cpp 复制代码
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 函数的返回值, 打普通桩 会报以下错误:

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

例如:

cpp 复制代码
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() 函数进行传参检测,需要给该函数打高级桩,第一个接口为返回值,

其余 为形参接口

手写桩

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

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

cpp 复制代码
hirain_u8 loop_test3(hirain_u8 temp){

        for(hirain_u8 i = 0;i<temp;i++){
                        STUB_3(i);
        }
        return 1;
}

想要获取每次函数被调用获取的值,可以创建普通桩,新建变量,然后手写桩函

数完成传参记录。

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

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

构建 合适 的对象 ,将地址传入指针接口。

例如:

cpp 复制代码
hirain_u8 a;
void TS_FUN_PON_2(hirain_u8 *p,STR *pl)
{
        
           a = *p;
           pl->str2 = pl->strl;



}

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

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

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

有类型的函数指针:

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

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

例如:

cpp 复制代码
hirain_u32(*T_pon)(hirain_u32 i);
hirain_u32 hirain_stuv(hirain_u32 temp){

            temp = (*T_pon)(temp);
            return temp;
}

void 类型的指针:

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

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

例如:

cpp 复制代码
hirain_u8 TS_FUN_PON_1(int *p,void *p1)
{

    hirain_u8 temp = 0;
    int *temp1 = p1;
    a = *p;
    return *temp1;

}

新建一个变量且命名

在TED界面赋值

结语

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

相关推荐
王解2 小时前
Jest项目实战(4):将工具库顺利迁移到GitHub的完整指南
单元测试·github
Devil枫13 小时前
Vue 3 单元测试与E2E测试
前端·vue.js·单元测试
小袁在上班19 小时前
Python 单元测试中的 Mocking 与 Stubbing:提高测试效率的关键技术
python·单元测试·log4j
测试199819 小时前
外包干了2年,快要废了。。。
自动化测试·软件测试·python·面试·职场和发展·单元测试·压力测试
安冬的码畜日常1 天前
【The Art of Unit Testing 3_自学笔记06】3.4 + 3.5 单元测试核心技能之:函数式注入与模块化注入的解决方案简介
笔记·学习·单元测试·jest
王解1 天前
Jest项目实战(2): 项目开发与测试
前端·javascript·react.js·arcgis·typescript·单元测试
程序员小雷2 天前
软件测试基础:单元测试与集成测试
python·功能测试·selenium·测试工具·单元测试·集成测试·压力测试
王解2 天前
Jest进阶知识:深入测试 React Hooks-确保自定义逻辑的可靠性
前端·javascript·react.js·typescript·单元测试·前端框架
程序员雷叔2 天前
外包功能测试就干了4周,技术退步太明显了。。。。。
功能测试·测试工具·面试·职场和发展·单元测试·测试用例·postman
安冬的码畜日常2 天前
【玩转 Postman 接口测试与开发2_005】第六章:Postman 测试脚本的创建(上)
javascript·测试工具·单元测试·postman·bdd·chai