录制环境

1. 开始录制

点击开始录制

添加用例信息

注意: 如果用例回放需要在云测真机上进行,需要选择虚拟帐号进行录制,点击头像进行切换即可,为了确保回放环境和录制环境一致,录制的时候需要勾选清除缓存操作

2. 录制操作

目前普通的操作都支持录制

2.1 tap 事件

比如点击视图容器,记录为 tap 事件,右边的点击事件详情,可以编辑修改

点击事件信息

注意: 在回放的时候,如果这个操作的下一步发生了页面变化,会等待页面 path 的变化是否符合预期,而且等待新页面在指定时间内没有异步请求了,表示页面加载完成了。

2.2 scroll 事件

1. 目标对象为/,表示在当前 page 下滑动

2.如果有具体的目标对象,则表示在指定的区域内滑动

因为 scroll 事件会录制的比较多,会有一些误操作。比如页面在跳转中,但是多录制了一个 scroll 操作,但是这个 scroll 的下一步操作 path 发生了变化,其实这个变化不是 scroll 带来的,回放的时候会自动忽略这个检查。

2.3 input 事件

input 有两种情况:

会触发 confirm 事件,带回车键的情况会自动录制下来,注意新版的工具修复了这个问题,如果没有录到 confirm 事件,可以检查版本

2.4 longpress 事件

长按事件

2.5 trigger 事件

如果没有匹配到以上事件,会统一用 trigger 来触发

2.6 picker 组件事件

会录制到hidepicker的时候触发的 change 事件,记录 change 事件的参数,回放的时候,minitest 用 trigger 事件来触发,传入记录的参数。

如果有不生效的情况,可以先看有没有录制到hiderPicker View事件,其次可以看看 change 的传参是否为录制的数据。

2.6 原生操作

由于工具上能录制的原生操作有限,目前支持的原生操作有:

注意: 真机回放的时候如果跳转到原生页,框架会失败,不建议录制跳转到原生页的操作,比如地址设置/分享出去等操作。

3.断言

目前有 5 种情况

3.1 Data 快照

会记录当前的小程序的 data 值

校验模式分为全匹配和指定 key 校验,如果选择了指定的 key,那么校验的粒度可以细化到指定的 key 值。

3.2 Wxml 快照

会记录当前页面的 wxml,进行完全匹配

3.3 检查页面元素

记录了页面元素的 target 和文本,校验模式有 4 种:

3.4 检查页面路径

校验录制的 path,对于 query,有 3 种校验模式:

3.5 截屏

截屏会截取当前的屏幕,在真机回放的时候只会截屏,不会对比,因为真机回放,不指定机型,容易对比失败

3.6 修改 target

由于录制的 case,在小程序几轮更新后,页面结构发生变化,如果重新录制,会导致工作繁琐,现在提供编辑功能

如果选择应用到全局用例,那么会遍历全部 case,查找 path 相同,且 target 相同的步骤,同步修改 target 值。也可以应用到当前用例

target 输入框,可以输入,也可以下拉选择,下拉会选择录制当前 target 的所有查找元素的方式可以选择。

4. 模块化管理

4.1 普通模块插入

对于一些操作,多个 case 都有的部分,可以抽出来做基础模块来管理,可以避免重复的录制操作,比如登录操作,大部分 case 都需要在有登录的情况下进行,那么每个 case 都从头录制,会很繁琐。如果能抽出成公共模块部分,可以方便很多。

入口:点击 用例栏右侧 icon,点击录制基础模块,可以录制你需要的公共部分,录制的所有的 case 都会进入到基础模块目录里。

基础模块的 case,有一个选项为公共变量,这里可以定义要使用的公共变量,类似函数的参数,这里可以对公共变量进行增删改操作,比如这个 case 定义了一个叫 message 的公共变量,那么这个变量怎么使用呢?

对于 case 的 target 和 text,点击输入框,会出现下拉框,可以选择定义的公共变量,用来占位。那怎么使用这个 case,以及这个 case 的公共变量的值怎么填入呢?

可以进入到要使用这个基础模块 case的地方,比如我们想在第一行的位置插入基础模块的 case,点击右侧+ ,会出现一个弹框,可以选择添加位置,在当前操作之前还是之后,以及选择基础模块的 case,如果当前的基础模块的 case 设置了公共变量,这里需要把公共变量的值填进去,就好比实现了一次函数调用,填入了调用值。

插入后,可以设置是否忽略,如果设置为忽略,会批量忽略该基础模块 case 的所有步骤,同时可以修改公共变量的值

4.2 配置登录模块

由于大部分小程序需要登录才能进入到测试页面,而登录是一个适用于大部分 case 的前置操作,这里提供了一个全局配置登录模块的快捷操作,可以配置当前 case,也可以配置全局的 case,只在 minitest 云测平台的回放中生效,因为工具侧回放,在当前窗口是有缓存的,回放不需要重新登录,而在云测平台回放,需要重新拉起小程序,是全新的环境。

配置操作和插入公共模块的流程一致,只能插入一个公共模块的 case,可以选择应用全局或者当前用例,配置成功后,该公共模块的每个步骤都会设置为可忽略,即使失败不影响后续进行。
配置后,如果不想使用,可以删除,同样可以全局或者当前 case 删除。

5.云测平台真机回放

5.1 同步用例

点击同步用例,可以将工具插件录制的用例导入到云测平台。工具侧录制的 case 会相应地转化为 minium 的 case,右侧可以看到 py 脚本,可以配合 minium 的本地运行环境进行调试。

5.2 minitest 回放逻辑

用例导入到云测平台后,会转化为 minitest 的 py 脚本。
1. 首先进入到测试的起始页面,这里是通过 minium 的 relaunch 接口拉起小程序,因为云测只支持虚拟帐号,这样可以保证录制和回放使用同样的帐号数据,不会因为帐号不同而数据信息不一致而失败。

2. 接着,开始顺序执行录制的操作,对于普通的小程序操作来说,每一步会等待录制的时间间隔,同时会等待页面加载完成(这里通过判断页面的异步请求只有 2 个的情况下判断页面加载完成,默认超时时间为 20s),

3. 然后开始查找元素,如果是通过 target 查找,如果 target 是普通的选择器,会加多层兜底,先查找指定 target,如果找不到,会用 xpath 兜底查一次,如果还是找不到,会用录制的 text(text 不为空,且没有换行符),再进行全局完全匹配查找一次,找到元素后,会执行指定操作。

4. 执行完成后,如果发生了 path 变化,会判断跳页是否成功,完成成功后,才判定这个操作执行成功,才能往下执行,否则会报错退出。如果指定这个操作失败后忽略,那么即使执行失败也不会报出来,会继续执行。

断言操作,会根据录制的断言类型进行,失败则退出。

5.3 真机回放报告

如果执行失败,那么会有执行前后的截图,以及错误详情。如果查找不到元素,可以下载 wxml文件,将其拖动到开发者工具里面,点击右键格式化,检查当前的页面结构是否与录制的时候保持一致,如果不一致,可能小程序版本发生了变化,可以重新录制。

6.常见问题分析

6.1 录制没有清缓存,导致回放时进入到登录页面,不能顺利进入测试页面

比如上面回放的 case,进入测试页面后,点击进入了登录授权界面,导致校验页面跳转和预期不一致而失败
建议: 可以将登陆这种通用模块录制为基础用例,在每一个 case 之前插入登陆,可以避免重复录制带来的繁琐。

6.2 地理位置不一致导致回放和录制页面拉取的内容不一致

上图示例,回放定位的位置拉取的数据只有一条,而录制的数据时点击的是第九条数据,后台返回不一致会导致失败。
建议: 可以通过 mock 后台请求来,确保回放返回的数据和录制的数据保持一致,具体做法是,录制的时候打开 mock 开关。

或者 打开云测--项目管理–虚拟帐号配置 功能,mock 住地理位置,或者其他会影响数据的信息,可以使用这种方式来 mock。

6.3 回放多了弹框

上图在点击过程中多了蓝牙授权弹框,导致页面没有跳转而失败。

对于原生的系统弹框,可以在云测启动回放的时候,配置 Auto Authorize 开关,可以自动点确认,对于一些没有录到的系统弹框可以自动解决掉。

如果是业务的弹框,需要自己处理。

6.4 查找不到元素

这类错误很普遍,即使云测的回放逻辑对查找元素做了多层兜底。这里需要使用者将错误的wxml文件下载下来,拖动到开发者工具,点击右键格式化来手动确认该元素是否存在

对于小程序迭代比较快,页面结构变化就会导致 xpath 查找失败,可以检查录制的版本和回放的小程序版本是否一致,也可以建议开发增加 id 或者 class 等可以唯一查找到元素的标识,这样可以增加 case 的稳定性。

需要帮助


↙↙↙阅读原文可查看相关链接,并与作者交流