沪江无线持续集成的解决方案

演讲嘉宾:黄伟东,沪江教育科技资深测试工程师

前言

沪江无线有多款无线应用,面临很多质量问题,比如线上奔溃率高,开发提测质量差,测试回归耗费时间长等问题。为了提高测试质量和测试效率,大东所在团队搭建了一套持续集成的质量保障体系。本次大东老师为我们介绍这套体系包括哪些解决方案以及落地实施的情况。

持续集成解决什么问题

什么是持续集成?

持续集成是指通过自动化等手段高频率地去获取产品反馈并响应反馈的过程

集成什么?

  • 编译,自动化拉取代码编译
  • 单元测试,沪江的单元测试全部由开发来完成
  • 打包,同时提供Debug包和Release包
  • 自动化测试作为冒烟和回归测试

发现哪些问题

  • 编译问题,比如代码无法编译成功,提醒开发及时修复
  • 安装问题,打出来的包无法安装,应该直接打回
  • App页面可达性,关键业务都无法跑通,也应该直接打回
  • 专项指标,包括性能,稳定性等

为什么要做持续集成

  • 产品线过多
  • 迭代速度快
  • 测试时间被压缩

持续集成流程

  1. 自动构建
  2. Apk扫描
  3. 自动化测试
  4. 专项扫描
  5. 报告聚合及产品交付
Paste_Image.png

移动端常规测试流程

Paste_Image.png

这样一个流程中有哪些痛点问题呢?

  • App容易发生构建失败
  • App冒烟测试不通过
  • 接口没有自动化
  • 专项报告难产

持续集成怎么做?

编译打包

  • Android采用Gradle方式编译,通过Maven进行包依赖管理,同时产出Debug-apk和Release-apk
  • iOS采用Xcode编译,用Cocoapods进行包依赖管理,同时产出Debug-ipa和Release-ipa、Debug-app

Apk扫描

  • 静态扫描:反编译、字符串扫描
  • 包大小检查:包大小信息、历史包大小对比、与其他产品包大小对比

自动化测试(选取Appium)

自动化框架的特性:

  • 兼容多类App(Android,iOS,H5)
  • 兼容多类设备
  • 支持并发测试

自动化测试流程:


AC4801DF-F339-45CD-BE71-AD3EDF1D56A2.png

专项指标测试

测试哪些专项指标:

  1. Apk包大小检测
  2. 启动时间
  3. 稳定性测试
  4. 产品对比
  5. 性能测试:通过AOP埋点的方式实现程序内部性能数据的收集,并随BI数据一起上报,平台根据数据进行性能分析

持续集成的实现机制

主要流程:通过Jenkins新建一个job去拉取Gitlab中的源代码进行编译打包,然后启动apk扫描、自动化和专项测试,最后呈现测试结果。

BD9E972E-6094-4B41-9D9C-A21388ECF87E.png

CI编译:

  • Jenkins Job分发调度
  • 分布式CI
  • 多台Slave执行机
  • 执行机各自挂靠多台设备

设备管理平台

基于开源框架STF(Smart test farm)二次开发

  • 一台PC机管理6-7台设备
  • 实现远程调试
  • 接入域LDAP单点登录
  • 为自动化封装内部接口,方便调用
Paste_Image.png

主要成果

经过持续集成的质量控制,沪江各产品线的线上奔溃率,提测打回率以及测试回归时间占比都相比以前减少了很多。质量和测试效率得到了有效的提升。


91DA78D5-6029-4A58-8BAD-193E54245625.png

推荐阅读更多精彩内容