Cantata里的测试用例通常保存在C/C++测试脚本中,批量测试数据还可以使用表驱动测试方式管理。这里要分清两种情况:如果已有的是CSV格式的输入值、预期结果等测试数据,可以导入现有表驱动测试;如果已有的是另一套Cantata工程里的完整测试脚本,更适合把对应Test Script及关联文件迁到当前测试工程。测试用例导入失败时,问题经常出在CSV字段和函数接口对不上、测试脚本版本变化,或者原有Stub、全局数据已经和当前源码不一致。
一、Cantata怎么导入测试用例
Cantata支持表驱动测试数据的CSV导入和导出,适合一次加入多组输入值与预期值。已有Cantata测试脚本则可以继续在Test Case Editor或C/C++代码编辑器中维护。
1、先为目标函数建立表驱动测试
①打开Cantata测试工程,在【Project Explorer】中找到被测.c或.cpp文件。
②为目标源码生成对应【Test Script】。
③打开测试脚本,在【Test Script Manager】或【Test Case Editor】中找到目标函数。
④把准备批量录入数据的测试配置为【Table Driven Test】。
⑤检查函数的输入参数、返回值以及需要校验的输出参数。
⑥函数依赖全局变量时,把需要设置或检查的数据一并加入当前测试结构。
⑦保存测试脚本,确认测试脚本本身能够正常解析。
表驱动测试会按照数据表逐行产生测试输入,因此CSV中的字段要和当前测试表结构对应。函数接口还没有整理好时,先不要急着导入大批数据。
2、准备CSV测试数据
①可以先在当前【Table Driven Test】中建立一两组样例数据。
②使用对应的【Export CSV】功能导出一份现有数据。
③用表格工具打开导出的【CSV文件】,保留原来的字段结构。
④按照现有列填写各组输入参数。
⑤返回值需要校验时,填写对应的预期结果。
⑥指针、数组或枚举数据按照当前测试表要求填写,不自行增加无法识别的字段。
⑦保存时继续使用【CSV】格式,不改成普通Excel工作簿。
先导出再填写,比自己从空白文件手工设计表头更省事,也能减少字段名称、列顺序和数据格式不匹配。
3、把CSV数据导入测试脚本
①重新打开对应【Test Script】。
②进入目标【Table Driven Test】数据编辑区域。
③执行【Import CSV】。
④选择刚才整理好的【CSV文件】。
⑤导入完成后查看测试数据行数。
⑥打开几组数据,检查输入值、预期结果和输出参数有没有错位。
⑦保存测试脚本。
⑧执行一次Build,再运行少量导入后的测试数据。
⑨确认测试可以正常执行后,再运行整个数据集。
Cantata的CSV导入主要面向表驱动测试数据,并不是把任意格式的测试用例文件直接转换成完整Test Script。已有完整Cantata测试时,应保留对应测试脚本和关联测试文件。
二、Cantata测试用例导入失败如何解决
导入时报错,或者CSV能够读取但测试数据少了一部分,可以先对照当前函数接口和CSV结构。源码接口变化后,旧数据很容易和新测试脚本失去对应关系。
1、检查CSV字段和数据格式
①打开当前【Table Driven Test】,确认测试表中的字段数量。
②打开待导入【CSV文件】,逐列对照字段。
③检查有没有多出的列或缺少的列。
④确认数值字段没有混入说明文字。
⑤检查字符串里的分隔符有没有破坏CSV列结构。
⑥使用表格软件重新保存时,确认文件仍是【CSV】格式。
⑦重新执行【Import CSV】查看结果。
如果同一份CSV曾用不同表格软件编辑,可以先用Cantata重新导出一个模板,再把旧数据复制到新模板里。这样更容易排除编码、分隔符和字段结构带来的问题。
2、检查被测函数接口有没有变化
①打开当前源码,查看目标函数的参数列表。
②对比原测试脚本建立时的函数接口。
③检查参数数量有没有增加或减少。
④检查参数类型是否从普通变量改成了指针、数组或结构体。
⑤确认返回值类型有没有变化。
⑥接口已经修改时,重新解析源码并更新【Test Script】。
⑦让新的【Table Driven Test】生成当前字段结构,再导入测试数据。
旧CSV按照原接口保存,函数签名发生变化后,Cantata不会自动知道旧字段应该对应到新的哪个成员。接口改动较大时,保留可复用的数据列,再按新结构整理会更稳妥。
3、检查全局数据和Stub配置
①打开导入后的【Test Case】或表驱动测试配置。
②检查当前函数使用的全局变量是否仍然存在。
③查看【Stubs and Wrappers】中的外部函数列表。
④确认原来使用的【Stub】没有因为源码更新而变成未匹配状态。
⑤Stub函数接口修改过时,重新生成或更新对应Stub。
⑥检查每次Stub调用的【Expected Parameters】和【Return Value】。
⑦保存后重新Build测试脚本。
CSV数据本身已经导入,但执行时报调用异常时,问题往往已经从“导入”转到了测试环境。此时继续改CSV没有太大作用。
三、旧测试用例仍然无法使用怎么恢复
测试脚本和源码版本差距较大时,可以把可复用数据和旧测试结构分开处理,避免直接覆盖当前工程里的测试文件。
1、保留旧Test Script做对照
①复制旧工程中的【Test Script】和关联测试数据文件。
②不要直接覆盖当前工程中的同名脚本。
③在当前源码上重新生成一份新的【Test Script】。
④同时打开新旧脚本,对照被测函数、参数和Stub定义。
⑤可以继续使用的表驱动数据先导出为【CSV】。
⑥按照新脚本字段重新整理后再执行【Import CSV】。
⑦完成迁移后运行少量代表性测试,检查预期结果。
2、导入成功后做一次回归检查
①执行导入后的全部测试数据。
②打开测试结果,检查有没有【SCRIPT_ERROR】或构建错误。
③查看失败用例对应的实际值和预期值。
④检查函数接口变化后,旧预期结果是否还符合当前代码。
⑤再查看覆盖率结果,确认主要测试路径仍有执行记录。
⑥确认结果没有异常后,再把新的Test Script、CSV和工程配置一起纳入版本管理。
总结
Cantata测试用例迁移时,CSV更适合承载表驱动测试数据,完整测试脚本则要和源码接口、Stub以及测试工程配置一起维护。导入失败后,把文件格式问题和接口变化问题分开检查,更容易判断数据还能不能继续使用。旧项目迁移到新代码版本时,保留原测试脚本做对照,也能减少重复建立测试数据的工作。如需进一步了解Cantata测试用例导入、表驱动测试与测试脚本迁移方法,欢迎联系咨询。