背景

知乎客户端发版周期为 1 周,前后端项目需求多且迭代快。客户端各模块虽然做了组件化,但仍然不可避免的存在耦合,导致商业功能会受第三方改动影响。而客户端线上故障需要发版解决,版本覆盖速度慢,且商业故障直接造成金钱损失影响较大。如何在时间紧、代码复杂的情况下,尽早发现问题,减少线上故障?运用核心数据进行测试验证,是知乎商业化测试团队目前尝试的一个办法。通过梳理核心数据,在项目流程中加入数据检查的环节,作为质量保障的最后一环。

如何构建核心数据模型

构建核心数据模型,需要深入了解业务,关注产品核心指标。客户端上广告的数据流程,主要包括客户端请求广告,引擎下发广告,客户端加载广告,滑动屏幕至广告可见,用户点击广告,用户在广告落地页产生转化几个步骤,形成如图一所示的漏斗模型。但这些指标的绝对值,受客户端覆盖用户变化影响,对判断客户端质量没有参考意义。通过相邻2个数相除,可以分别得到填充率,加载率,可见率,点击率,转化率,这些数据不受用户变化影响,是我们用来判断客户端质量的主要业务指标。

图一 广告漏斗模型

除了上述业务指标,我们还关注客户端上的性能指标:比如客户端崩溃率,图片加载时长,开屏广告白屏时长,落地页加载速度等。

服务端核心指标包括资源占用情况,如cpu,mem,线程,网络,磁盘IO;服务性能数据,如吞吐,平均响应时间,.99响应时间,失败率,超时率;业务数据,如消费、点击率、过滤情况、下发量等。

如何使用数据

在项目流程的各个环节,都可以运用数据,去辅助测试。并且需要把数据检查,作为项目流程的必经环节。

需求评审阶段

需求评审时,需要关注漏斗模型上的环节是否设计了埋点,埋点时机是否合理,埋点定义是否唯一。比如推广目标为app的广告,有广告卡片上一键下载和进入落地页后点击下载2种形式,埋点需要覆盖这2个下载流程,同时有不同的标记方便进行对比。

客户端灰度阶段

客户端运行环境复杂,功能测试覆盖场景有限。对比灰度版本和线上版本核心数据,可以辅助判断客户端功能是否正常。客户端版本灰度报表如图二所示。另外新开辟的广告位,在灰度期间进行试投放,能快速验证点击率等数据是否符合预期。值得一提的是,数据的获取和展示必须直观易用,如果数据的查询语句复杂,数据的对比需要手工多次处理,数据测试就很难落地。

图二 客户端版本灰度报表

服务端上线过程

不同的后端服务,可以制定不同的上线checklist。比如服务资源指标、性能指标和业务指标。在上线过程中,实时观察监控,判断上线是否成功。

项目上线后

项目上线后,需要及时分析数据是否达到预期。对于AB实验的功能,需要分析数据判断是否全量。比如落地页加速的需求,发版后需要验证广告落地页到达率是否有提升,提升的比例是否达到目标。

定期数据巡查

定期数据巡查,可以发现线上缓慢变差的指标,并及时修正。比如服务端内存占用持续上涨,超时率越来越高;客户端随新版本覆盖崩溃率上升。

如何分析数据

数据分析的模型如图三所示。为方便描述,定义了4层。

  • Level 1 是结果,所有的变化,最终都体现在消费的变化。
  • Level 2 是指标,对应漏斗模型的每层。
  • Level 3 是维度,Level 2 的每个指标,都可以按 Level 3 的每个维度(或维度组合)分组聚合。
  • Level 4 是变量,列出了引起数据变化的因素,比如流量的变化,服务上线,客户端发版,大客户的账户变化,频控等策略调整。
图三 数据分析模型

Level 1 的变化,受 Level 2 所有指标综合影响,分析起来比较困难,通常先找出变化最明显的指标。指标确定后,按Level 3 的各种维度聚合,找到发生变化的维度。维度确定后,变量就比较方便确定了。比如,加载率分小时维度统计,如果有突变,一般是后端服务上线这个变量引起;如果是渐变且趋势和新版本覆盖速度吻合,则是客户端发版引起。下面举例说明:

案例1:客户端某版本灰度过程中,转化指标里的下载成功率下降明显。
分析方法:
1、对比灰度版本和线上版本数据,只有灰度版本发生变化。Level 4的变量确定,新版本问题。
2、按Level 3的维度进行聚合,发现所有的广告,指标都下降
3、按网络环境聚合,发现4G环境下载成功率下降明显。至此,排查客户端4G下载逻辑。

案例2:客户端某版本灰度过程中,某第三方渠道加载率暴涨
分析方法:
1、对比灰度版本和线上版本,在1月2日都出现暴涨
2、分析1月1日的数据,灰度版本和线上版本,数据正常,基本判断和客户端无关
3、分析1月1日的数据,按小时聚合,发现19:00 数据开始暴跌,此时可以排查19点附近的服务端上线记录
4、继续按维度聚合漏斗模型的上游指标,缩小服务范围。

建立Level 4 各变量的数据报表,可以加快排查的过程,比如:

  • 大客户消费对比表。昨天 topN 消费广告主数据和今天 topN 消费广告主数据对比,能快速定位消费变化。
  • 广告商账户操作日志。广告定向条件的修改,出价的变化,都会影响广告的下发,进而导致消费发生变化。
  • 后端上线记录,实验放量记录,客户端发版记录。数据突变时,方便快速找到上线的项目。

数据测试的效果

在客户端灰度过程中,运用版本核心数据对比,发现多起数据异常,且可以通过数据分析快速定位问题,保证了发版的质量。服务端上线过程中加入数据检查,可以在小流量阶段发现问题时,及时回滚,避免多起线上故障。

后端数据操作超时_数据分析在知乎商业质量保障中的初步实践相关推荐

  1. axure9数据统计插件_数据分析太棘手?常用8大统计软件解决难题!

    在数据分析工作中我们常常需要处理大量的统计问题,这个时候就迫切的需要一个适合统计分析工具,今天小编就给大家介绍八个我们常用的统计分析软件,并且详细介绍各自的特点以及适用的专业,方面大家从中选择一个切合 ...

  2. python生物数据分析师职业技能_数据分析行业各个职业需要的技能是什么?

    就目前而言,很多人看到了数据分析行业的光明前景,于是就想进入数据分析的行业中.但是,想成为一名合格的数据分析师,需要掌握很多的技能.那么一名合格的数据分析师需要掌握哪些技能呢?其实数据分析行业的职业是 ...

  3. 怎么计算一组数据的波动_数据分析(一):数据描述统计

    一. 数据描述统计 看了一个纪录片 - The Joy Of Stats <统计的乐趣>,这虽然是一个关于数据统计分析的纪录短片,但短片中对于数据统计在实际应用场景中应用的效果还是很值得思 ...

  4. opta球员大数据预测胜负_数据分析视角下的世界杯冠军预测

    数据分析师看世界杯的正确姿势是什么? 约上老友,豪饮冰啤. 利用大数据,借助好工具,来一个数据分析视角下的冠军预测. 这才是数据分析师看世界杯的正确姿势. 今晚23:00,对全球的球迷来说都是个期盼已 ...

  5. python数据爬虫课程_数据分析之Python3爬虫视频课程

    第1章 python网络爬虫牛刀小试 1小时38分钟11节 1-1 编写第一个只网络爬虫1.使用requests模拟浏览器访问网址 2.使用美丽汤BeautifulSoup解析网页 3.提取出新闻的标 ...

  6. es java bulk 导入数据一直超时_亿级别记录的mongodb批量导入ElasticSearch的java代码完整实现...

    针对mongodb亿级别或者十亿级别的模糊查询,效率不高,解决方式是使用ES查询,这样就需要把数据导入的ES中 完整的代码实现如下所示:(仅供参考) import java.io.IOExceptio ...

  7. python数据展示库_数据分析与展示——Matplotlib库入门

    Matplotlib库入门 Matplotlib库介绍 Matliotlib库是Python优秀的数据可视化第三方库. Matliotlib库的效果见:http://matplotlib.org/ga ...

  8. 点云数据生成三维模型_可直接编辑的高质量3D生成模型:三维深度生成方法SDM-NET...

    机器之心发布作者:赵悠悠 中科院计算所.香港城市大学.英国卡迪夫大学以及加拿大西蒙弗雷泽大学的研究者,近日提出了一种能够表达几何细节和复杂拓扑结构的三维模型深度生成方法 SDM-NET,解决了之前方法 ...

  9. python读取csv数据画直方图_用csv文件作为inpu在python中绘制直方图

    我有一个csv文件,其中包含两列,第一列是水果名,第二列是计数,我需要绘制直方图使用这个csv作为输入到下面的代码.我怎样才能做到.我只需要显示前20个条目,其中水果名称将是x轴,计数将是y轴从整个c ...

最新文章

  1. docker下载慢,卡顿解决办法——免费安装人人都有的docker加速器
  2. 开源基金会为何辟谣 鸿蒙背后有何玄机
  3. 经典ICP算法的问题
  4. Java scirpt简介
  5. 散户“大溃败”?GME连续5日暴跌80% 白银价格急转直下
  6. vue solt 属性浅析
  7. 高等数学第七版同济大学课后习题讲解下册 pdf(免费)
  8. 常用z反变换公式表_常用excel快捷键
  9. 办公自动化和计算机应用哪个好,高级办公自动化和计算机二级VF哪个更好?两个都考有必要吗?...
  10. MySQL期末复习题(题库)
  11. 关于激光校正的常见问题ReLEx SMILE:是的,在俄罗斯没有,但是在俄罗斯没有
  12. windows系统IP地址、localhost、127.0.0.1 、0.0.0.0和 本机IP区别
  13. 在openSUSE编译OpenFOAM
  14. PaddleOCR,图像检测识别
  15. charles抓包https证书下载
  16. 感应开关垃圾桶小项目的完成及问题解决——基于STC89C52RC单片机
  17. 仿新浪微博的插入#话题#
  18. Java实现简单的日历小程序之Java图形界面开发小日历
  19. 淘宝客引流的两个高效渠道
  20. 重装win7系统显示:无法安装在gpt硬盘上

热门文章

  1. Python File(文件) 方法
  2. php pdo 数组,php – 使用PDO更新数组
  3. nginx报错:nginx: [alert] could not open error log file: open() “/var/log/nginx/error.log“ failed (2: N
  4. Docker如何正确开启 Hyper-V?
  5. USB hub(221)
  6. 人工神经网络 说到底,人就是一种机器吗?
  7. python matplotlib.pyplot中的.plot()和.scatter()以及.subplot()和.add_axes()区别
  8. 给IDEA给类和方法添加注解
  9. 什么是泛型,为什么要使用泛型? 泛型类和泛型方法的实现以及限定通配符的使用。什么是泛型擦除,为什么有泛型擦除,泛型擦除到底是怎么实现的
  10. Make it Divisible by 25 思维