专栏首页京东技术京东JMAC,完美解决移动自动化测试的常见问题

京东JMAC,完美解决移动自动化测试的常见问题

来这里找志同道合的小伙伴!

>>>> 背景

提到移动端自动化测试就不得不提及目前几大开源的移动端自动化测试工具/框架,主流工具有Appium、Athrun、Robotium、UiAutomator、Monkey、Selendroid等。尽管有这么多开源框架,但在实施移动端自动化测试时,仍然面临着众多问题,以下列出几个常见问题:

  1. 安装执行环境繁琐,纯手动
  2. APP产品不可扩展
  3. 无法进行手机兼容性测试
  4. 每台设备对应多套脚本,复用率低,可移植性差、可维护性差、执行历史很难追溯
  5. 自动化执行局限于开发人员本地
  6. 测试结果展现不清晰,无法精准定位问题

针对这些问题,JMAC将自动化测试流程化、平台化。

>>>> JMAC概述

JMAC针对以上提到的一系列问题,对移动端自动化测试做了一系列流程处理、分布式调度、真机/测试账号分发、测试结果的分析的实现。之后会陆续开放远程真机、远程调试、在线编写测试脚本、安全扫描及性能检测,还有对H5和小程序的自动化测试支持。

JMAC整体架构图:

JMAC整体规划:

本文讲述JMAC的实现原理和调用执行流程。JMAC主要分为服务端、客户端、真机端三大部分。

主要功能模块如下:

  1. 用例脚本的版本化、模块化的云管理;
  2. 项目发布包的云服务版本管理;
  3. 适合CI项目的定时执行任务的配置;
  4. 概要/详细的测试结果数据分析与发送;
  5. 历史版本的回归和历史记录的查看。

>>>> 核心功能剖析

>>>> 服务端-实现原理

  1. 服务端基于Spring MVC + MyBatis框架集成,以用户为角度对脚本和发布包树状云端管理;
  2. 脚本存放至源码库,发布包及用例截图结合京东云存储实现云管理;
  3. 定时任务执行基于Springboot整合Quartz实现动态任务配置,实现个性化定时任务配置满足持续迭代下高频次的自动化回归测试。

底层实现架构:

首页-模块

  1. 首页导航:指引新用户快速创建项目/加入已有项目,引导用户前往用例管理、发布包管理、测试账号管理、执行任务等界面进行个性化配置。
  1. 项目动态:根据近7天/30天执行情况对执行任务动态跟踪,快速前往任务执行界面查看执行结果。
  2. 数据分析:对近7天/30天的任务执行结果进行数据分析和BUG的跟踪管理。

用例管理-模块:

对项目用例进行版本划分、模块划分、用例组装等操作。

测试执行-模块:

用户自定义创建测试计划、测试任务,系统分布式调度客户端,执行自动化测试用例;与持续集成系统打通直接获取测试包地址,配置定时任务,执行后查看/发送测试报告。

>>>> 客户端-实现原理

客户端主要包含真机识别、真机同步、环境配置/设备分发、调度执行功能。客户端基于JAVA SWING编写,内部集成android sdk、svn、appium等功能。真机同步通过实时对USB连接设备的监控将最新在线设备信息同步至JMAC服务端。调度执行通过前端执行时选定的PC及设备参数将调度任务分发至各客户端进行自动化测试。

底层实现架构:

Agent-模块:

支持操作系统:

部署客户端环境,开启客户端服务,将本地真机加入云真机库;实现将本地资源共享,远程调度资源,定时执行任务;不必因设备型号匮乏而担心兼容性测试不够全面。

>>>> 真机端-实现原理

1、脚本:Android和IOS脚本框架都基于TestNG框架JAVA语言编写,底层封装智能等待,截图,CPU监控用例结果、log日志回传、图片回传等驱动方法。

2、App:真机设备(非root)安装JMAC的app实现项目安装时自动允许安装操作以及实现远程真机共享功能。

运行速度:1分钟/用例

支持系统:

运行效果:

真机远程调度执行。测试结果实时更新,问题进度一目了然。告别混乱无序的测试管理,确保产品质量可控。真机端安装辅助服务实现自动允许安装程序,自动点击系统级权限弹框以实现无需人工手动干预手机的APP自动化测试。

测试结果展示至JMAC,概览与详细报告如下:

本文分享自微信公众号 - 京东技术(jingdongjishu)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-08-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 小巧“玲珑”—京东物流自动化测试平台核心功能首次曝光

    负责京东物流研发的全部产品线的质量保障工作,是京东集团最早开始全面实施自动测试的团队之一。经过多年的技术沉淀,围绕质量、效率、过程改进、技术提升等方面,去发现、...

    京东技术
  • 【专访】京东智能服务平台技术负责人任强:耕耘未来,京东Alpha的万物智联时代

    ? 任强 京东智能服务平台技术负责人 京东技术平台架构峰会讲师 在万物智联的时代背景下,“无界”定义在用户日常的衣食住行之中,京东Alpha平台依赖于京东的销...

    京东技术
  • 飞哥教你使用异步编程提升服务性能

    京东技术
  • Redis分布式锁服务(八)

    蘑菇先生
  • 【吊打面试,击中要害】http三次握手四次挥手,https证书验证阶段和数据传输阶段

    客户端发送一个SYN标记的数据包、Seq(Synchronize Sequence Numbers)同步序列编号x;发送完成后客户端进入SYN_SEND状态。

    java乐园
  • 网络编程基础-socket的简单实用

    如QQ、pycharm等,手机端的微信、王者荣耀等等 缺点:1.若用户想在同一台设备上使用多个软件,必须下载多个客户端。 2.软件的每一次更新,客户端也必须...

    GH
  • 基础篇|PHP如何解决网站大流量和高并发

    并发,在操作系统中,是指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行

    你好我是森林
  • 因证书问题,Xcode 真机调试时经常遇到的问题

    报错原因: 虽然开发证书不同,但是手机上已经有一个相同的bundle Identifier的应用。 解决方案: 删除手机上的应用即可!

    honey缘木鱼
  • MQTT心跳机制

      Keep Alive指定连接最大空闲时间T,当客户端检测到连接空闲时间超过T时,必须向Broker发送心跳报文PINGREQ,Broker收到心跳请求后返回...

    心跳包
  • 我的第三个网页制作:b、i、s、u、sub、sup标签的使用

    1 <!doctype html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 ...

    Angel_Kitty

扫码关注云+社区

领取腾讯云代金券