参数表已经导入Squish,运行时却只输入第一组数据,或者界面始终重复同一组值,通常需要检查脚本与数据的连接方式。导入文件只是准备数据,逐条执行还需要循环读取记录,并在每一轮完成输入、操作和校验。如果循环范围、字段引用或应用初始状态没有处理好,表格有多少行都可能只测到其中一部分。
一、Squish如何配置数据驱动测试
配置前,可以先录制并跑通一组固定数据,再将其中需要变化的输入和预期结果替换为参数字段。这样出现问题时,更容易区分是操作流程失效,还是数据读取错误。
1、准备并导入参数表
①建立CSV或TSV文件,第一行填写字段名,例如CaseId、InputValue和Expected;后续每行填写一组输入与对应预期结果。
②将CSV或TSV保存为UTF-8编码,在Squish IDE中打开【File】→【Import Test Resource】。
③在【Import As】中选择【TestData】,点击【Browse】选择文件,按使用范围决定放入当前用例还是测试套件共享位置,点击【Finish】。
④在【Test Suite Resources】→【Test Data】中打开导入的文件,检查表头、列数及数据内容。
每组数据最好有独立编号。输入值允许重复,CaseId仍应能够区分记录,后续才能判断究竟是哪一行未执行。
2、将测试流程放入数据循环
①打开测试脚本,把光标放到准备插入循环的空行,右键选择【Make Code Data Driven】。
②在向导中选择参数文件,点击【Next】,检查修改预览后点击【Finish】。
③将每组数据都需要执行的输入、提交和结果校验移入循环体,检查缩进或代码块边界。
④在参数赋值位置右键选择【Replace With TestData Field】,选择对应字段,用当前记录的字段值替换原来的固定值。
⑤点击【Run Test Case】,先用少量数据验证,再增加参数行数。
脚本通过testData.dataset读取记录,通过testData.field取得当前记录中的字段。预期结果也应跟随当前行读取;如果只替换输入值,校验仍引用第一组预期值,就会产生连续失败。
二、Squish参数表中的数据未被逐条执行怎么办
先确认数据是否被读全,再确认每条数据是否进入业务流程。界面只出现一次操作,可能是循环之外只执行了一次;日志显示多轮执行,也可能每轮都取了同一条记录。
1、核对实际读取的数据文件
①打开脚本中的testData.dataset调用,检查文件名或路径,再对照【Test Data】中的实际文件。
②检查当前用例的testdata目录,以及测试套件的shared/testdata目录,确认是否存在同名旧文件。
③将本轮参数表保存后重新运行,并用CaseId输出读取结果,核对记录编号。
只传文件名时,Squish会先查找当前用例的数据目录,再查找套件共享数据目录。修改了共享表,实际却读到用例内的旧表,表现就会像“新增行没有生效”。
2、检查循环是否覆盖完整流程
①查看循环是否遍历整个数据集,排查固定下标、写死的循环次数及调试时保留的数量限制。
②检查输入、点击和校验是否都位于循环内,尤其注意Python缩进及其他脚本语言的代码块范围。
③检查是否在每轮都引用第一条记录,或把字段值提前读取到循环外,导致变量没有随记录更新。
④排查break、return和continue的位置,确认它们没有提前终止执行或跳过业务操作。
数据行进入循环,不代表该行已经完成测试。可以分别记录“开始处理”和“完成校验”,用两个位置的日志判断流程停在哪里。
3、检查表头、格式和Excel工作表
①对照第一行字段名与testData.field使用的名称,检查大小写、拼写和多余空格。
②在【Test Data】中检查每条记录是否正确分列,排查把制表符文件误存为逗号格式等问题。
③使用Excel时,核对数据所在工作表;需要指定工作表时,通过testData.datasetExcel明确传入工作表名称。
④检查脚本是否自行过滤了空值、特定编号或某类数据,并确认这些筛选符合本轮测试要求。
Excel读取默认使用第一个工作表。数据添加到另一个工作表后,原读取方式不会因此自动切换。
4、定位首个异常及状态残留
①打开【Test Results】,展开最后一条已执行记录,点击错误项定位脚本语句。
②检查是否发生对象查找超时、字段转换错误或未处理异常,先修复中断位置。
③每轮开始前恢复相同页面状态,清空旧输入、关闭残留弹窗,并等待目标控件可操作。
④涉及新增账号、订单等操作时,准备独立测试数据或清理机制,避免后续记录因重复数据被应用拒绝。
上一行提交成功后,应用可能停留在详情页;下一行仍按新增页操作,就会中断。此时需要补齐页面恢复过程,单纯增加等待时间未必有效。
三、如何验证所有参数记录都已执行
修正后,可以先用三条容易区分的数据做检查,再恢复完整参数表。验证重点是记录与结果能否对应,而不是只看测试用例显示通过。
1、逐条核对执行记录
①在循环开始和校验结束处使用test.log记录CaseId,避免输出密码等敏感字段。
②点击【Run Test Case】,在【Test Results】中核对三条编号是否依次出现,以及每条是否都有对应校验。
③分别统计数据读取数、实际执行数和完成校验数;存在主动跳过的记录时,注明跳过原因。
同一个脚本内部循环执行多组数据,并不意味着结果中一定自动生成同等数量的独立测试用例。应根据编号和校验记录确认执行情况。
2、检查参数变化是否真正生效
①修改其中一行的输入和预期值,保存后重新运行,确认界面操作及校验使用了新值。
②在测试副本中让一行产生可识别的校验失败,检查结果能否明确对应到该CaseId,再恢复正确数据。
③换回完整参数表,保存本轮脚本、数据文件和结果,便于复现遗漏问题。
总结
数据驱动测试的便利,在于新增一组业务场景时,不必重新录制整套操作。但参数表逐渐变大后,失败记录能否找到、单行数据能否复现,也会影响日常维护效率。给每行保留清楚的编号,并让输入、预期与结果对应起来,开发人员接到问题后就能直接重现,测试人员更新数据时也更省心。希望这些操作能帮助大家顺利配置Squish数据驱动测试。如果有参数化设计、脚本排查等方面的需求,欢迎联系咨询。