移动测试基础 移动端自动化多机并行测试-数据 mock 篇

xiaomingpapapa · May 18, 2019 · Last by xiaomingpapapa replied at May 20, 2019 · 533 hits

前言

前面提到,面对 android 系统的碎片化问题,如何在应用快速迭代的过程中,尽可能早地发现应用的版本兼容问题。

当前我们的想法是通过 多机并发运行测试用例,以此检测应用针对不同机型,不同系统的兼容性问题,提升开发,测试人员的工作效率。

测试设备

真机

使用真机进行并发测试存在问题

  • 使用真机来运行测试用例,对资源的要求较高(测试机比较紧缺)
  • 真机存在网络切换,电量, usb 连接等问题

解决方案

针对真机测试的种种问题,我们决定使用虚拟机设备来模拟多机并发自动化测试,好处如下

  • 不抢占真机资源,方便测试的正常运行
  • 不存在网络切换,电量,usb 连接问题
  • 可从PC端统一管理,创建开启虚拟机(只要硬件设备足够,可开启多台虚拟设备)
  • 各系统设备覆盖全面

虚拟机设备

使用虚拟设备,同样存在一些问题

  • 被测应用不允许在虚拟设备上运行
  • 虚拟机网络切换问题(需要通过切换网络来测试指定环境的应用)
  • 在运行测试用例的过程中,后台接口的波动会影响用例的正常运行

解决方案

针对上面的问题我们的解决方案如下

  • 应用适配虚拟机设备运行(某些 sdk 的调用增加指令集兼容)
  • 搭建 dns server 来模拟网络环境切换(虚拟机无法读取宿主机本地 host 文件)
  • 实现部分网络请求数据Mock,降低与后台接口的依赖程度

数据 Mock

本文主要描述的是关于接口数据 Mock 的实践流程,咱们先看看效果(基本流程使用的都是 Mock 接口数据)。

Mock 平台选择

我们选择 EasyMock 作为数据 Mock 平台,有如下原因

  • 支持随机生成接口数据(通过正则表达式,占位符等方式)
  • 支持基于 Swagger 创建 Easy Mock 项目,根据现有 Swagger 文档动态生成 Mock 接口

  • 响应式数据,支持在接口 mock 文本中加入代码逻辑

移动端应用请求处理

通过开始的演示图片可以发现,我们将数据 Mock 功能嵌入到了开发者工具当中,在测试应用前先在开发者工具当中选择需要被 Mock 的接口 url,那么这些接口在请求的过程中就会被转发到我们搭建的 Mock Server

大致原理为应用内部在请求处理的过程中,将请求拦截,转发到对应的 Mock 接口

自动化测试脚本

  • 支持配置是否需要 Mock 数据
  • 在 Mock 模式下运行时首先需要开启数据 Mock 功能(在 UI 层面控制开关)
  • 在某些步骤下需要区分是否为 Mock 模式(Mock 数据不包含业务逻辑)

总结

  • 虚拟机相关问题解决
  • 数据 Mock 平台搭建
  • 移动应用请求转发
  • UI 自动化脚本适配数据 Mock 运行
共收到 2 条回复 时间 点赞

你们厂启动的时候mock选择是开发接入的吗?还是?

文贤平 回复

是的,开发接入的 mock,在 app 上有开关

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up