作者:张志阳
前言:
“云测” 是近几年业内的热词, 不仅仅商用的云测平台越来越多,各大厂也早早的着手构建适合自己的云测平台上 ,经常可以听到相关的分享,十分精彩,受益匪浅。对这些平台做调研和比较后可以发现,云测平台包含的通用功能基本分为 远程真机、自动化测试 两大类。
今天主要向大家介绍一下,转转 App自动化流程中重要的一个环节 - 远程设备调度。
流程搭建:
移动端自动化云测的两个组成部分:远程设备、自动化流程。
远程设备在哪里?
云测平台,远程设备是关键,如果没有远程设备,当然也就不能称之为云测了。
当前转转QA的设备均已由云设备平台(MCP)进行统一管理,大家在日常工作中,都会在MCP上申请&操作远程设备,有效的利用设备资源。
这些设备都连接在一个个MCP专用管理设备的服务器上, 并且在每台服务器上都有一个 Agent 服务,实时的监控设备的状态 &同步设备信息给MCP。
所以,实现调度远程设备,需要MCP提供支持。
远程设备应该如何调度?
MCP 中有一些对设备的初始化、重启、安装应用、上传文件等常用操作,当用户在MCP上触发以上操作时,MCP会向Agent 发送对应指令,Agent执行对应操作后再同步给MCP执行结果。这其实就是一套完整的远程设备的操作过程,自动化测试也可以参考这个流程。
自动化测试任务有很多自定义的配置,在独立的测试平台上统一管理,所以只能通过接口与MCP通信。
当时大致的流程设想如下:
1. 在自动化测试平台上,配置自动化任务,触发自动化请求MCP执行接口,告知使用的设备及对应的自动化任务和自动化参数
2. MCP在接收到请求之后,解析参数,获取自动化选择的设备
3. MCP向设备所在服务器的Agent发送自动化指令,并传递自动化参数
4. Agent 接收自动化指令,解析参数,下载自动化所需的文件,拼装自动化Command,执行
跟负责 MCP 和Agent 的相关同事进行了方案讨论,发现原设想的方案中,遗漏了很多细节,都需要提前确定清楚,最终又补充了一些细节,如下:
1. 自动化应该是独立的状态标识,在前端显示,便于设备筛选,也便于一些设备管理功能的区分处理
2. 自动化可能同时下发 Android + iOS 的多端多个设备,执行接口设计时需要考虑
3. 自动化Command 会持续新增,不能写死,需要预留参数接收一些动态的信息,便于Agent 解析&拼装Command, 也避免自动化有变化就需要修改Agent的现象出现
4. 多设备在同一服务器上执行不同任务,使用的自动化文件需要按设备区分,避免互相影响
5. 执行完自动化,需要将设备归还给MCP,初始化后,释放给他人使用,MCP提供归还接口
6. 如性能测试会出现连续执行多次的情况,为避免单次执行归还后,碰巧被他人或其他自动化任务占用,自动化执行接口应支持可以使用正在执行自动化状态的设备执行
7. 自动化任务可能有因误操作/临时任务变动/设备急用等需要立刻中断设备占用&中断自动化执行的情况出现,所以需要MCP提供中断自动化任务接口,及时结束正在执行的自动化任务、释放设备。
任务分工:
自动化测试平台:
1. 根据已有的自动化测试类型 、自动化测试执行策略、测试框架支持的Command,整理出自动化执行时使用的所有数据信息
2. 增加MCP设备的信息同步及展示,区分远程设备与本地设备
3. 增加 调用MCP执行接口执行测试计划
4. 增加 设备同步任务结束的接口(检查设备任务是否全部结束&无任务时归还设备)
5. 增加中断测试任务的功能
6. 在MCP的所有服务器上部署自动化执行环境
MCP:
1. 提供MCP设备信息获取接口
2. 提供执行自动化测试接口,包含一个args 变量,用于接收任意内容,直接传递给Agent
3. 提供中断自动化测试接口
4. 提供设备归还的回调接口
5. 增加自动化占用设备的相关管理逻辑
Agent:
1. 增加自动化测试类型的服务接口, 包含一个args 变量,用于接收任意内容,直接拼接在自动化执行Command 最后
2. 增加自动化进程的状态监控,汇报任务的 执行失败、执行成功、执行超时的状态
3. 增加中断自动化进程的服务接口
最终在大家的辛苦支持、共同努力下,调度远程设备执行自动化的流程搭建完成
最终流程:
绿色线条为调度远程设备执行自动化的完整流程,红色则为执行失败 或 中断执行时 的流程。这一套流程已经使用了近一年的时间,十分稳定,已经满足了调度远程设备执行自动化的需求。当自动化的任务类型增多时,也只需先扩展自动化框架的执行参数,并通过MCP的执行接口传递即可,MCP及Agent 不需要做任何修改。
设备调度策略:
在建立好完善的远程设备调度流程之后,便是我们怎样来利用远程设备执行自动化,这里向大家简单介绍3种已经在使用的调度策略
1. 常规的手动选择设备执行测试计划:多端多设备,随意选择
2.设置定时任务,定时执行测试计划:
a.默认使用已选择的设备
b.定时任务可通过参数指定设备
c.指定设备/已选择设备不可用时,优先分配相同数量的 与当前任务绑定的已调适设备(绿色表格部分),并邮件通知执行人分配的设备
d.若 无已调适/已调适设备都不可用/已调适设备不够分配 时,会根据所需设备的平台及数量在 支持自动化的设备列表里随机分配设备,并邮件通知执行人分配的设备
e.若 自动化设备池中 可用设备不足时,则会随机分配其他空闲设备,并邮件通知执行人分配的设备 & 提醒所分配的设备可能因未调适而导致执行结果异常
3. 调用执行接口执行 指定测试计划/指定自动化测试类型:可指定设备,也支持与定时任务相同的设备分配规则
后续计划:
当前的设备调度流程和调度策略,都试用于使用设备默认状态(无代理、无特殊设置)下的测试需求,但其实在大家日常的测试工作中,经常会有比如 通过线下环境测试业务、通过对设备特殊设置&准备后再测试 等特殊需求,若想在现在的自动化远程执行流程中 也支持这些需求,设备的调度流程和策略必然都需要一些修改。
后续则会根据实际的需求,一一进行修改,支持更多的自动化策略。