前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >移动端自动化测试-远程设备调度

移动端自动化测试-远程设备调度

作者头像
测试开发社区
发布2019-11-15 20:13:56
9970
发布2019-11-15 20:13:56
举报
文章被收录于专栏:测试开发社区测试开发社区

作者:张志阳

前言:

“云测” 是近几年业内的热词, 不仅仅商用的云测平台越来越多,各大厂也早早的着手构建适合自己的云测平台上 ,经常可以听到相关的分享,十分精彩,受益匪浅。对这些平台做调研和比较后可以发现,云测平台包含的通用功能基本分为 远程真机、自动化测试 两大类。

今天主要向大家介绍一下,转转 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. 调用执行接口执行 指定测试计划/指定自动化测试类型:可指定设备,也支持与定时任务相同的设备分配规则

后续计划:

当前的设备调度流程和调度策略,都试用于使用设备默认状态(无代理、无特殊设置)下的测试需求,但其实在大家日常的测试工作中,经常会有比如 通过线下环境测试业务、通过对设备特殊设置&准备后再测试 等特殊需求,若想在现在的自动化远程执行流程中 也支持这些需求,设备的调度流程和策略必然都需要一些修改。

后续则会根据实际的需求,一一进行修改,支持更多的自动化策略。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 测试开发社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档