MeterSphere 开源持续测试平台涵盖测试跟踪、接口测试、性能测试和 UI 测试等功能模块。MeterSphere 的 UI 测试模块基于 Selenium 浏览器自动化方案构建,内嵌高度可复用的测试脚本,测试团队无需复杂的代码编写即可开展低代码的自动化测试。
本期操作教程将结合 UI 测试中的实际场景,为大家介绍 MeterSphere 的 UI 测试模块中 “循环变量与流程控制” 的使用方法。其中包括通过变量来表示数据、存储用户输入的信息等,配合程序执行循环、判断等丰富的操作,让执行过程变得更加便捷和高效。以下就是在 MeterSphere 的 UI 测试模块实现上述场景的具体操作。
场景一:循环执行变量
在测试过程中,通常很多步骤需要输入多条测试数据来验证其不同的预期结果。通过变量定义测试数据,再使用循环操作将所有测试数据一次性执行完毕,可以大幅减少测试步骤。
① 进入 UI 测试场景,点击 “场景变量” 入口;
② 以登录流程为例,设置一个登录用户名变量,第一个值输入错误的用户名 “u1”,第二个值输入正确的用户名 “admin”。变量类型支持字符串、数组、JSON、数值多种类型。
① 创建登录流程及对象元素;
② 在需要循环的步骤前添加流程控制器,选择 “ForEach 循环” 选项;
③ 将需要循环的步骤用鼠标拖拽到 ForEach 循环器的子级;
④ 在 ForEach 循环中设置输出的变量名称,并引用场景变量;
⑤ 在 “用户名” 步骤中,“输入内容” 处引用 ForEach 循环设置的变量;
⑥ 另外,可以适当地设置 ForEach 循环的间隔时间,即每次执行间的间隔时间。
① 点击执行 “后端调试” 选项,可以在 “步骤结果” 选项卡中看到循环次数,通过查看截图也可以看到每次执行的变量是否正确:
用户名步骤 - 循环 1 截图:u1
用户名步骤 - 循环 2 截图:admin
登录步骤 - 循环 1 截图:登录失败
登录步骤 - 循环 2 截图:登录成功
最后,看一下使用本地调试的执行效果:
场景二:流程控制
测试过程中的判断几乎是无所不在的。如果条件满足,就执行某个操作;如果条件不满足,就执行另一个操作;或者什么也不做,等等。MeterSphere 的 UI 测试中也提供了使用 If、Elseif、Else 等多种指令来满足不同场景所需的流程控制能力。
还是以上面的登录场景为例,登录成功则执行 If 流程,登录失败则执行 Else 流程。这里同样需要将 If 和 Else 添加到 ForEach 循环中,以实现不同判断条件下的流程分支。
① 首先,获取登录成功后的账号元素信息;
② 在 “登录” 步骤中的 “高级设置”→“后置操作”→“数据提取” 中,提取该元素信息以及设置变量(将提取的内容保存到变量中);
③ 设置 If 条件表达式,引用 ${name}变量(表达式为真,则执行里面的步骤)。
Else 指令配合 If 指令使用,将其添加在 If 指令后即可。
① 执行第一遍循环时,使用的用户名为 “u1”,由于 “u1” 是一个错误的用户名,所以第一遍循环登录失败,不满足 If 条件,则第一遍循环会执行 Else 流程;
② 执行第二遍循环时,使用的用户名为 “admin”,这是一个正确的用户名,所以第二遍循环登录成功,满足 If 条件,则第二遍循环会执行 If 流程。