大致需要按照下面几步进行:
  (1) 字段含义理解
  数据记录一般按照关系数据库字段形式导出内容,第一步要了解每个字段的含义;第二步需要了解每个字段内容的解析方式,得出有用有价值的信息。
  (2) 功能分类
  集群数据的每条记录都是用户操作app某项功能异常上报上来的,为了明确功能点,需要对批量数据按照功能进行分类。通常可以使用记录中得到的信息进行区分,将相同功能点的记录归为一类,便于后续统一进行分析。比如浏览器文件打开能力这块我们可以将在线文文件打开、浏览器内部文件打开和第三方调用文件打开作为功能划分;浏览器视频播放能力也可以划分为本地播放,在线播放功能。
  (3) 聚类分析
  聚类分析是针对功能的输入数据而言,将具有相似特征的数据划分成一类,得出移动app在对某一类输入处理上的问题占比。 聚类分析可以作为对移动app的问题监控使用。 比如QQ浏览器的在线视频播放,我们可以将不同的视频网站作为一个聚类进行监控,比如youku,腾讯视频等;文件打开能力我们可以对不同的文档格式进行聚类统计,比如doc(x),ppt(x),xls(x),pdf都各成一个聚类,监控聚类间的问题比例。聚类分析本身应该是层级关系,按照从粗到细的方式进行聚类细化(漏斗分析),比如将出现播放多次的url合并处理,记录播放失败次数等,聚类分析结果一般可作为质量监控使用。


 图5 聚类分析

  (4) 关联分析
  关联分析的目的是找到与记录相关联的信息, 这些信息可以直接或者间接补全记录数据,更容易的得到问题的有效用例输入数据。关联分析的关键在于从记录中找到与另外的数据平台相对应的键值,从而找到对应数据。比如视频播放数据记录中通过用户手机的guid和用户反馈平台对应起来找到用户反馈信息,找到播放失败的问题描述等信息。


    图6 关联分析

  (5) 测试数据提取
  测试数据抽取的主要目的是对一些可以通过自动化方式验证的功能特性,从上报数据中抽取出可以直接自动化输入测试的测试数据, 通过真机的验证方式重现问题,后将数据和验证结果可视化方式提供开发解决。
  QQ浏览器视频播放能力播放失败上报记录,可以通过记录中分析摘取到视频播放所在的页面url, 这个数据可以作为真机验证的输入数据; 文件打开能力可以通过记录分析或者关联分析得到用户打开失败的文档作为真机验证的输入。
  1.2.4 测试验证
  目的:通过真机验证客户端异常上报的数据是否真的出现功能问题
  输入:数据分析得到的测试数据,这些数据均是用户遇到的异常数据
  输出:真机验证结果,分为正常和异常两种。
  条件:满足真机验证的功能一般是平时的测试中已经实现自动化测试的模块和功能, 可以自动化得出程序运行的结果。 大批量的数据如果没有自动化方式验证,人工检测基本不可能,也失去了线上数据测试的意义。
  优点:真机验证过程虽然使用平时的自动化测试框架验证程序功能,但是大的区别在于自动化的输入数据,这些数据均直接来自于用户,并且是用户使用时出现的有问题的数据,体现了线上数据测试的优点:测试输入的针对性和全面性,让我们平时测试不到的情况可以很好的解决。
  虽然输入的是用户异常上报的数据,可能大部分情况下真机验证的结果是正常的,这个时候需要考虑可能影响测试结果的因素,比如机型,系统资源使用等。比如可以对这些验证正常的记录的机型进行数量排序,对发生问题前几名的机型通过人工验证等方式验证结果等。QQ浏览器文件和视频播放都可以用真机验证方式找到打开失败的文件和视频,帮助产品提升打开成功率。
  1.2.5 结果展示
  一般通过web页面形式将真机验证的结果展示出来,页面设计的宗旨是简单,明了,开发可以便捷获取解决问题需要的测试数据。比如QQ浏览器文件线上数据处理的结果展示页面如下:


  
  图7 结果展示

  开发可以便捷得到打开失败的文档, 可以通过状态看出文档在QQ浏览器下打开是失败还是超时,可以通过后面文件大小头文件得到解决问题的必要信息等。
  1.2.6 问题修复和自动化验证
  问题修复包含:开发解决问题,输入源自行修复等情况,其中关系到产品质量核心的是开发修复bug。 线上数据经真机验证有问题的数据放在结果处理中心,开发可以直接拿到数据分析解决,解决后需要将新版本进行提测,为了验证解决情况,我们可以使用自动化验证的方式测试提测的新app, 确认有问题的数据是否结果正常。在结果展示界面标记提测后经过自动化验证后数据的状况,从而得到此次解决了哪些问题。
  2、案例
  依据第一章中对线上数据提升移动app质量模型分析,这里以QQ浏览器文件打开能力和视频播放作为案例 进行线上数据测试实践。
  2.1、线上数据提升文件打开成功率
  (1) 文件打开能力线上数据质量模型
  文件用户异常数据自动化验证系统的整体结构如下图,系统整体结构主要分为:数据仓库数据分析和获取、线上数据下载验证、验证结果处理中心和插件更新自动校验。线上数据下载验证模块验证得到打开失败和超时的文档库,结果处理中心负责展示和分析,插件更新自动校验模块针对开发修复后插件提测进行打开失败文档的自动化验证工作。


  
  图8 QQ浏览器文件打开能力线上数据测试结构图

  (2) 结果展示
  验证结果处理中心接收到自动验证系统发送来的验证结果后,负责结果数据的存储、处理和展示功能。这里重点介绍展示功能,为了尽可能方便开发定位问题,将已验证打开失败或者超时有问题的文档形式展示如下图:


  
  图9 文件真机验证结果展示

  结果展示的目的是直观的提供给开发解决问题,并且对修复状态进行验证展示,字段说明如下:

  (3) 收益
  每天发现打开失败或者超时文档100+, 累计搭建失败文档库:4000+, 积累正常文档库:20000+
  开发修复了doc和xls格式打开失败的某类问题,通过线上监控系统,我们可以直接的看到收益:线上doc插件失败率降低1.4%, 线上xls插件降低1.8%, 优化效果明显。
  说明线上数据的挖掘对文件打开成功率提升起到直接效果。
  2.2、线上数据提升视频播放成功率
  Android QQ 浏览器每天都会遇到大批量播放失败的片源,为了提升播放成功率,利用线上数据提升播放成功率,质量处理模型如下:


  
  图10 视频线上数据测试流图

  通过对异常上报播放失败的url的校验和真机验证,不断完善视频播放器质量,视频线上数据测试每天会将测试结果按照邮件形式进行发送。视频结果展示如下:


 
  图11 视频真机验证结果图

  视频累计处理验证异常上报30000+,确认问题1200+
  3、总结
  线上数据提升移动app质量的方案核心的原理是利用用户上报线上数据构造更具有针对性,更加全面的测试输入, 这些测试输入能更加高效的发现app的质量问题。通过问题占比的分析解决,大幅度提升移动app的产品质量。
  本文使用线上数据提升QQ浏览器文件打开和视频播放成功率,这套方案流程是线上数据挖掘使用的一种场景,对于移动app不同的功能,未来还需要挖掘出更多更丰富的线上数据测试模型。
  未来方向:潜在问题的挖掘。 异常上报经过二次验证 有问题数据还是处于少数,大部分数据经过真机验证未能复现用户当时的问题,需要进一步挖掘这部分问题出现原因。