使用Cantata做C/C++单元测试时,工具可以先生成测试框架,但测试能否真正验证需求,仍取决于输入数据和预期结果是否合理。处理Cantata测试脚本怎么生成Cantata测试脚本中的输入和预期结果怎么填写,需要先明确被测函数的参数、全局变量、返回值和外部调用,再把每个测试场景拆成可重复执行的数据组合。
一、Cantata测试脚本怎么生成
Cantata可以解析选中的源文件或头文件,建立代码信息模型,并据此生成C/C++测试脚本、测试用例框架和配套Makefile。测试人员可以继续在图形化测试编辑器中修改,也可以直接编辑生成的C/C++代码,两边的修改能够同步。
1、从源文件生成测试脚本
源码已经完成时,可以直接围绕源文件中的函数生成测试框架。
①在Cantata测试工程中找到被测源文件。
②选中一个或多个需要测试的.c或.cpp文件。
③启动【Test Script Wizard】。
④在被测函数列表中勾选需要生成测试的函数。
⑤选择单函数测试、表格驱动测试或其他测试方式。
⑥填写测试脚本名称和保存位置。
⑦完成向导并等待脚本生成。
生成后,项目中通常会出现测试脚本、代码信息文件以及构建测试程序所需的Makefile。多个函数存在公共依赖时,可以放进同一个脚本;函数关系比较复杂时,拆开管理会更清楚。
2、从头文件提前生成脚本
函数只有声明、实现还没完成时,也可以从头文件建立测试框架。
①选中包含函数原型的头文件。
②启动【Test Script Wizard】。
③选择准备测试的函数声明。
④设置参数和返回类型的处理方式。
⑤生成测试脚本。
这样可以先写测试条件和预期行为,等函数实现完成后再构建执行。Cantata支持从头文件中的函数原型生成测试框架,适合测试驱动开发或接口已经确定、实现仍在编写的项目。
3、选择合适的测试用例样式
生成脚本时,常见测试方式主要有以下几种。
(1)每个函数生成一个基础测试用例,适合先把框架跑通。
(2)表格驱动测试,在同一结构中填写多组输入和预期值。
(3)健壮性测试,使用边界值、异常值和预定义数据组合。
(4)AutoTest,根据目标覆盖率自动补充测试路径。
AutoTest可以生成完整测试脚本,也可以向已有脚本追加测试用例,并围绕函数参数、全局数据、调用参数和返回值生成测试向量。
4、打开测试用例编辑界面
①在项目中双击生成的测试脚本。
②打开【Test Script Manager】或【Test Case Editor】。
③在函数节点下选择目标测试用例。
④查看输入、预期结果和期望调用区域。
⑤需要新增场景时复制现有测试用例。
刚生成的测试用例通常已经带有默认输入值、默认预期输出和初始调用顺序。这些内容只是可编辑起点,不能不检查就直接当成需求预期。
二、Cantata测试脚本中的输入和预期结果怎么填写
填写时可以把每条用例理解成三个阶段:运行前准备数据,调用被测函数,调用后检查实际结果。输入不是只填函数参数,函数执行前读取的全局变量、指针数据和外部函数行为也可能属于测试前提。
1、填写普通参数输入
假设被测函数如下:
int calculate_total(int price,int count);
可以先设计正常值、边界值和异常值三类场景。
①在测试用例中找到【Inputs】区域。
②把price设置为本次测试的单价。
③把count设置为本次测试的数量。
④确认数据类型和取值范围正确。
⑤在用例说明中写明测试目的。
例如正常场景可以填写price=20、count=3。边界场景可以测试count=0,异常场景则要按照接口要求填写负数或较大数值。输入要对应明确的需求条件,别为了增加用例数量随意填几组数字。
2、填写指针、数组和结构体
指针参数不能只填一个地址,还要准备它指向的数据。
①为指针创建测试缓冲区或测试对象。
②填写数组长度和各元素内容。
③将指针指向准备好的测试数据。
④结构体参数按成员逐项赋值。
⑤检查被测函数是否会修改这块数据。
例如函数接收uint8_t*buffer和size_t length,输入区域要同时准备缓冲区内容和长度。长度填5,数组却只准备3个有效元素,测试本身就已经不一致。
3、填写返回值和输出参数的预期结果
函数执行后的检查通常包括返回值、输出参数和全局变量。
①在【Expected Results】中找到函数返回值。
②填写需求规定的预期返回结果。
③展开指针或引用参数的调用后状态。
④填写执行后应得到的数据内容。
⑤补充需要检查的全局变量。
例如输入price=20、count=3时,预期返回值可以填写60。若函数通过指针返回状态,还应填写指针所指数据执行后的预期内容。
预期结果不能直接照着当前程序运行结果填写。这样虽然容易通过,却可能把现有错误固化成“正确答案”。更合适的依据是需求、接口设计、算法公式或经过确认的业务规则。
4、填写外部函数的返回和调用预期
被测函数内部调用其他函数时,可以通过Wrapper或隔离调用控制其行为。
①在测试脚本中找到被调用函数。
②为本次测试添加对应调用实例。
③设置模拟返回值或输出参数。
④填写被测代码传入的预期参数。
⑤设置预期调用次数和调用顺序。
Cantata的调用控制可以拦截或模拟函数调用,并检查调用参数、返回值及调用顺序。一个测试用例中同一函数被调用多次时,可以为每次调用设置不同实例。
比如被测函数调用read_sensor(),正常用例可以让它返回有效温度,异常用例可以让它返回错误码。这样不用修改生产代码,也能验证故障处理分支。
三、输入和预期结果填写后怎么检查
脚本能够编译并不代表测试数据已经正确。正式执行前,最好从需求对应关系和测试结果两个方向各检查一次。
1、检查每条用例是否形成完整闭环
①确认用例说明写清测试条件。
②核对参数、全局变量和外部调用输入。
③确认预期返回值有明确依据。
④检查输出参数和全局状态是否需要验证。
⑤执行测试并查看实际值与预期值的差异。
正常值、边界值、异常值和故障注入场景应分开编写。一个用例塞入太多目的,失败后反而不好判断是哪项条件引起的。
2、结合覆盖率补充遗漏场景
需求用例执行完后,可以查看语句、分支或MC/DC覆盖情况。存在未覆盖路径时,再分析需要补充哪组输入,而不是为了让覆盖率变高随便改预期值。
AutoTest适合寻找较难想到的路径组合,但自动生成的输入和预期仍要经过人工复核,尤其是涉及业务含义、异常处理和硬件接口的场景。
总结
Cantata测试脚本怎么生成Cantata测试脚本中的输入和预期结果怎么填写,关键是先让工具生成可执行框架,再按照真实测试条件补齐参数、全局数据、外部调用和结果检查。输入要覆盖正常、边界与异常场景,预期值则应来自需求和设计判断,不能直接复制当前程序输出。希望本文能为大家编写和完善Cantata测试脚本提供参考,如需进一步了解相关内容,可联系咨询。