1、线上数据测试模型
  1.1、背景

  随着移动互联网的发展,移动app质量要求越来越高, 传统行业质量的保证方式是测试人员在app开发过程中进行阶段性的测试,这种测试方式我们可以称之为主动测试, 即测试人员主动对app进行测试。这种测试典型的模型如下:


    图1 传统测试

  测试质量的高低取决于用例输入的全面性,体现在产品上莫过于包含场景和数据。
  虽然测试人员借助于自身测试经验和一些测试理论(探索性测试、化测试等)已覆盖了产品绝大部分功能,但依然存在不够全面和不具有针对性等问题。 某些功能测试人员是无法测试保证的,如视频播放器app播放失败,文件打开app打开文件失败等, 测试人员构造的用例输入根本没有办法完全覆盖有问题的视频和文件。
  移动端app发布一般经历功能测试,集成测试,内测和几轮的灰度测试,灰度测试阶段已经放到部分用户手上,后完成发布,移动app面对的移动终端,场景环境都是千差万别,使用传统的构造输入用例方式无法测试充分。这里介绍一种利用线上数据提升移动app质量的测试模型, 模型核心的思想是利用埋点上报异常数据,提炼一种利用聚类分析、关联分析等数据分析模型抽取具有针对性和全面性的测试输入数据,通过真机验证等方式找出产品质量问题,提供给开发分析解决,提升app质量。在传统测试基础场,补充异常线上数据输入,提升app质量。


  图2 补充线上数据源测试

  1.2、线上数据提升移动app质量模型
  测试人员需要挖掘提升一个app的质量核心前提是对这个app有足够的了解, 线上数据分析测试模型需要一定的积累准备才能深入使用,通过在QQ浏览器视频和文件能力方面的使用经验, 总结线上数据测试的一般流程:


  图3 线上数据智能测试模型


  1.2.1 数据统计上报
  移动app功能异常上报指的是记录程序运行过程中遇到的功能错误、程序crash和ANR等信息,并将这些信息上报到后台。移动app功能异常上报是线上数据测试的基础,只有通过异常上报,才能记录用户使用app过程中遇到的问题。 上报信息的全面性决定着上报数据的有效性,一般上报信息可以通过下面方式进行统计。
  (1) 功能细分
  基于对app功能的熟悉,可以将app的功能分类,对于那些app中使用频率高和后续容易使用自动化方式验证的功能点进行上报信息分析。容易使用自动化验证主要目的是在后续的线上数据分析验证种可以使用自动化方式找到有价值的用户输入数据,可以直接提供给开发定位问题,提高线上数据测试的效率。
  (2) 状态埋点
  基于基本的测试模型,用户的不同测试输入可能产生除了正常结果外不同的异常情况,这里可以进行统计上报,将测试输入和输出上报。在线视频播放:输入的视频播放地址,播放状态失败,超时等;文件打开:输入的文件信息,打开失败超时或者空白等。
  (3) 基本信息
  手机相关信息:版本,系统,相应的硬件信息
  App版本信息:版本号,插件版本号,其它信息
  (4) 系统资源
  系统内存使用,cpu使用等,对一些特别重要的功能场景,资源消耗可能是导致问题发生的原因。
  1.2.2 数据仓储
  移动app的用户量庞大惊人,一般会使用专门的集群存储大量上报数据。为了获取使用集群存储上报数据,一般步骤如下:
  (1) 集群存储环境学习
  一般公司集群环境可以通过服务器直接登录,腾讯内部需要通过跳板机连接到集群服务器; 如果对服务器操作有权限等限制,了解是否提供了便捷的集群服务入口,可以针对集群数据进行二次开发利用,腾讯这边提供了米格数据服务平台,只要简单的权限申请,可以很便捷的对集群数据进行操作。
  (2) 操作脚本学习
  测试人员可以根据集群使用对应的操作脚本,从集群获取需要的数据。一般的集群操作可以使用类SQL语言进行,比如Hive SQL.
  Hive SQL的学习地址在:
  https://cwiki.apache.org/confluence/display/Hive/GettingStarted
  对于腾讯QQ浏览器项目中文件和视频能力,分别使用如下形式的Hive SQL语句得到需要的数据:

  1.2.3 数据分析
  数据分析的目的是对大批量的异常上报的数据进行统计分析,挖掘出有用的数据,使其能够更加直观的体现移动app的质量问题,提供有效数据帮助开发提升移动app的质量。不同产品对上报数据分析不一样,这里根据QQ浏览器视频和文件能力项目,抽象出一套数据分析模型:


    图4 数据分析模型