浅谈埋点及其质量保障 | 京东云技术团队

京东云开发者
• 阅读 341

1、埋点是什么

埋点又称为事件追踪(Event Tracking),指的是针对用户行为或事件进行捕获、处理和发送的相关技术及其实施过程。用大白话说:就是通过技术手段“监听”用户在APP、网站内的行为。

2、埋点的作用

如果我们想要收集用户行为数据,就可以通过埋点来实现。

  • 比如想要了解一个用户在APP里面点击了哪些按钮,看了哪些页面,做了哪些事情等。
  • 再比如想要了解有多少人用过某些功能,使用的频率次数等。

3、埋点的使用--数据流整体介绍

3.1、实时数据

浅谈埋点及其质量保障 | 京东云技术团队

  • 实时数据源头从点击流开始,客户端SDK上报埋点数据,采集服务会将上报的埋点写入JDQ写集群,然后通过fregeta任务将数据汇总到JDQ读集群。
  • 下游flink任务会从读集群消费原始topic,然后将加工后的topic吐出,供下游业务消费。
  • 下游业务如:黄金眼、商智、搜推广等。

3.2、离线数据

浅谈埋点及其质量保障 | 京东云技术团队

  • 离线数据源头从点击流开始,客户端SDK上报埋点数据,采集服务会将上报的埋点写入cfs网盘,然后通过离线抽数服务将数据落入数仓。
  • 数仓会经过多层加工,将数据处理成为业务需要的口径,提供给数据应用使用。
  • 下游业务如:黄金眼、商智、搜推广等。

4、埋点相关团队

各团队职责:

浅谈埋点及其质量保障 | 京东云技术团队

5、埋点流程

浅谈埋点及其质量保障 | 京东云技术团队

5.1、业务产品提需

  • 业务产品首先将需求提给埋点产品
  • 需要注意的点:埋点相关的需求新增或变更,都需要提给埋点产品走子午线平台。
  • 线上问题:20230527京东APP小程序加购解析失败,就是因为需求比较紧急,没有走子午线,产品自己维护了文档,导致字段修改后,下游无法解析。

5.2、设定埋点方案

•埋点产品接收到需求之后,启动评审会,评审需求是否合理、是否遗漏、参数是否完善、是否需要通知第三方业务、确定排期等。

  • 埋点产品会根据评审结果,在子午线制定埋点方案
  • 埋点产品产出埋点方案后,会拉业务、开发、测试、数据侧共同参与方案评审,确认方案是否完整、参数是否合理

浅谈埋点及其质量保障 | 京东云技术团队

5.3、埋点开发

  • 前端研发拿到埋点方案之后,按照埋点方案进行开发
  • 需要注意的点:开发需要在约定埋点上线的版本分支开发,注意不要提前跟版上线
  • 线上问题:2023年10月12日搜索结果页小时达相关订单指标下降,就是因为埋点没有经过测试,提前发版,导致下游无法解析

5.4、埋点测试

  • 开发完毕后提测,测试需要进行上报规则验证,详见:6.2.2、上报规则用例
  • 测试在track平台对埋点进行字段验证,详见:6.2.1、字段验证用例
  • 验证完毕后,输出测试报告。详见:6.3.3、track平台使用

5.5、埋点验收

  • 埋点产品对测试产出的测试报告中的测试记录进行验证
  • 同时进行数据的落表验证

5.6、埋点上线

  • 验收完毕后,子午线对应的版本状态修改为上线
  • 前端跟版上线
  • 需要注意的点:开发每次需要使用最新线上master分支拉新的开发分支,上线前合并代码时,确保拉分支到现在过程中没有其他上线,如果有的话需要重点关注,避免覆盖上次上线的内容。
  • 线上问题:2023年10月18日京霄LBS相关业务看板数据异常,就是因为上线合并的分支覆盖了上一次上线的正常版本,导致上报出错。

6、埋点的主要质量保障--埋点测试

6.1、埋点常见问题

常见问题大概有几种:

  • 埋点需求没有走子午线,上报内容错误
  • 业务在修改逻辑时,忘记修改埋点上报
  • 埋点上线时没有做好上下游同步
  • 新增字段数据结构下游无法兼容

6.2、埋点测试用例--上报内容的质量保障

6.2.1、字段验证用例

  • 验证埋点上报与方案中设置的字段名称、字段类型是否一致
  • 如果埋点方案有标注参数长度,或者参数为枚举时,需要验证
  • 如果为嵌套json,需要注意不破坏原有json结构

6.2.2、上报规则用例

1)pv场景

场景1:正常进入页面

  • 行为:正常进入pv页面并停留
  • 预期结果:正常只上报1条pv埋点,且page_id、page_param和文档保持一致
  • 特殊场景:

▪tab嵌套页面场景:进入时只上报1条主tab pv埋点,切换tab时上报另外一个tab的pv埋点,如出现进入时出现2条pv埋点(1条外层大框架pv埋点,1条主tab pv埋点),则上报错误;重复切换tab不会再次上报相同页面pv

  • 易出现问题

▪正常进入页面时无pv埋点上报,切换相关tab时才会上报埋点

▪进入页面时无pv埋点上报,离开页面时才上报pv埋点

场景2:回退到该页面场景

  • 行为:正常进入A页面并停留,再在该场景下点击某一元素进入到下级B页面,再回退到该A页面
  • 预期结果:原生会上报3条pv埋点,分别为A、B、A,且A页面的page_id、page_param和文档保持一致,h5回退不会上报pv埋点
  • 易出现问题:回退页面不上报A页面pv埋点

场景3:快速离开页面场景(主要解决pageParam参数中存在服务端下发参数,如果接口未响应,pv埋点也需要正常上报)

  • 行为:正常进入页面并快速离开该页面
  • 预期结果:正常上报1条pv埋点,且page_id、page_param和文档保持一致
  • 易出现问题:

场景4:下拉刷新场景

  • 行为:正常进入页面,然后下拉刷新
  • 预期结果:下拉刷新不会再上报pv埋点
  • 易出现问题:

场景5:APP切至后台或锁屏场景

  • 行为:正常进入页面,然后APP切至后台或锁屏,再次打开或解锁
  • 预期结果:不会再上报pv埋点,依据规范
  • 易出现问题:

2)点击场景

场景1:进入页面不点击

  • 行为:不点击对应元素
  • 预期结果:依据埋点文档,如未要求默认上报,则此处不会上报点击埋点(部分埋点有默认点击埋点的逻辑,该种场景符合预期)
  • 易出现问题:

场景2:正常点击

  • 行为:正常点击对应元素
  • 预期结果:正常上报1条点击埋点,且event_id、page_id、page_param、event_param、json_param、et_model和文档保持一致
  • 易出现问题:

场景3:点击无跳转(无功能触发,无交互变化)

  • 行为:正常点击无交互的对应元素
  • 预期结果:不上报点击埋点事件
  • 易出现问题:

场景4:滑动埋点

  • 行为:滑动浏览后停止
  • 预期结果:上报点击埋点事件
  • 易出现问题:

3)曝光场景

场景1:正常进入页面,此时未漏出该元素(测试曝光元素的是否未漏出就上报)

  • 行为:正常进入页面,此时未漏出该元素,然后离开该页面
  • 预期结果:不会上报对应的曝光埋点
  • 易出现问题:未漏出就进行曝光埋点的上报

场景2:正常进入页面,此时该元素已漏出展示(需要分别测试该元素刚刚漏出、漏出50%、漏出100%的场景,确保和埋点文档中元素曝光的空间限定、时间保持一致,测试曝光元素的上报时机及空间限定)

  • 行为:正常进入页面,此时该元素已漏出指定比例,然后离开该页面
  • 预期结果:该元素上报时机 = 埋点文档内的要求的上报时机(漏出上报 or 离开页面时上报),上报参数保持一致
  • 易出现问题:

▪埋点文档要求离开页面上报曝光,实际为漏出就上报,反之亦然。

▪埋点文档要求漏出100%才算曝光,实际漏出一px像素就上报埋点

▪曝光逻辑两端不一致,安卓和ios的曝光数据量相差极大

场景3:测试曝光元素的上报时机

  • 行为:正常进入页面,此时该元素已漏出100%,分别触发不同的离开页面场景:进入下级页、返回前页、刷新页面、切换到其他tab页面、进入后台5种场景
  • 预期结果:该元素对应曝光上报次数 = 埋点文档内的要求的次数
  • 易出现问题:埋点文档要求离开页面上报曝光,实际为漏出就上报、或者离开页面场景漏掉某种场景,导致曝光数据未及时上报

场景4:正常进入页面(测试曝光元素的页面内去重逻辑)

  • 行为:正常进入页面,上下滑动页面使得该元素重复出现2次,之后再离开页面,
  • 预期结果:该元素对应曝光上报次数 = 埋点文档内的要求的次数(是否页面内去重,只上报一次曝光)
  • 易出现问题:

场景5:正常进入页面(测试曝光元素的返回上报逻辑)

  • 行为:正常进入页面,上下滑动页面使得该元素出现,之后再进入下级页面或其他tab页,再从下级页面返回,再离开该页面
  • 预期结果:从下级页面或其他tab页返回后上报对应元素的曝光
  • 易出现问题:

▪要求返回重新上报曝光,实际返回后未重新上报

场景6:曝光数据的下拉刷新场景(测试曝光元素的下拉刷新上报逻辑)

  • 行为:正常进入页面,该元素100%出现,然后下拉触发页面刷新
  • 预期结果:下拉刷新后再次上报
  • 易出现问题:

▪要求刷新后重新上报曝光,实际未上报

6.3、埋点测试工具--track平台

6.3.1、平台简介

Track是APP、M、小程序全域一站式埋点质量平台。支持代理、扫码的方式无痕收集埋点,并通过统一规则中心对埋点数据进行自动校验,方便测试、开发、产品、业务快速高效的查看测试埋点。同时能够在埋点自测、冒烟、回归等环节,通过遍历技术对埋点进行自动化测试,节约人耗,提高了埋点质量的效能。

6.3.2、平台使用

1)生成埋点方案

浅谈埋点及其质量保障 | 京东云技术团队

此处需要,在子午线维护好的埋点方案链接。

浅谈埋点及其质量保障 | 京东云技术团队

**2)生成后选择此埋点方案**

浅谈埋点及其质量保障 | 京东云技术团队

**3)选择好后,上报方式,选择扫码上报**

填好对应的站点,生成二维码,使用相机扫码,打开app就可以上报了

4)触发需要测试的埋点事件,会在下方实时上报里出现,选择对应的事件,右边会出现上报的字段信息

浅谈埋点及其质量保障 | 京东云技术团队

5)对比字段,进行测试结果打标,打标之后生成测试报告。

作者:京东零售 张宇洵

来源:京东云开发者社区 转载请注明来源

点赞
收藏
评论区
推荐文章
浩浩 浩浩
3年前
Flutter之全埋点思考与实现
1\.背景用户数据分析与埋点,在互联网产品的设计与迭代中是不可缺少的一部分,利用用户的行为规律、用户画像,能在很大程度上帮助团队制定合适的运营策略与产品方向。随着产品的迭代与业务的发展,对业务团队的敏捷性与创新性提出了更高的要求,而通过大数据的手段在一定程度上可以帮助我们实现这个愿景,同时,良好的数据分析可以帮助我们进行更好更优的决策
Easter79 Easter79
3年前
Taro 牵手腾讯有数,助力小程序数据化运营
“ Taro引入了腾讯有数的微信小程序无痕埋点能力,为Taro的开发者提供真·零开发的8大无痕埋点能力以及自定义埋点能力,包含小程序启动、显示、隐藏、页面浏览、页面离开、分享、下拉刷新、上拉触底等八大自动化埋点能力以及搜索、商品归因等定制化埋点,以及经营分析、直播分析、导购分析等能力,让你的小程序可以基于微信生态,串联全场景多触点,
Wesley13 Wesley13
3年前
DTM在电商行业的运用到底有多灵活?应用场景告诉你
电商的基本应用场景有:页面浏览,商品列表浏览,商品列表点击,加入收藏夹,加入购物车,结算付款。为促进商品的成交,产品运营人员需要通过数据洞察用户在每一个环节行为,恨不得在每一个营销活动或业务功能的全流程都加上事件追踪埋点,且每一次随着业务的发展不断进行优化,运营还需要不断地给产品和开发提交每一个版本的埋点变化需求。这样带来的问题就是,对数据的需求越来越复
Wesley13 Wesley13
3年前
APP可视化埋点原理大揭秘
一、背景运营者能够对用户行为进行分析的前提,是对大量数据的掌握。在以往,这个数据通常是由开发者在控件点击、页面等事件中,一行行地编写埋点代码来完成数据收集的。然而传统的操作模式每当升级改版时,开发和测试人员就需要重复不断对代码进行更新,整个流程耗时长,无法满足业务的需求。为帮助开发者解决这一痛点,个推应用统计“个数”推出“可视化埋点”这一技术
Wesley13 Wesley13
3年前
CSS 埋点统计
CSS埋点统计当一个网站或者App的规模达到一定程度,需要分析用户在App或者网站的相应操作,则需要埋点统计用户行为,这个不用多说,具体实现有JS脚本写好埋点事件并调接口,今天get到一种新的埋点统计方式保证耳目一新。下面代码简单示范一下。//index.html<!DOCTYPE
京东云开发者 京东云开发者
10个月前
大促削峰实战:评价QPS降低85%的背后逻辑
一、背景京东APP商品详情页展示的评价数据通过单独请求评价接口获取,与商详模块流量近乎1:1,需要共同应对秒杀等海量流量的冲击,存在突发流量风险。经过对用户操作行为和评价埋点信息分析,评价调用与商详流量解耦可行,预期收益显著。为此,评价与商详模块研发人员组
一文帮你搞定H5、小程序、Taro长列表曝光埋点 | 京东云技术团队
对于各种类型的埋点来说,曝光埋点往往最为复杂、需要用到的技术也最全面、如果实现方式不合理可能造成的影响也最大,因此本文将重点介绍曝光埋点尤其是长列表(或滚动视图)内元素曝光埋点的实现思路及避坑技巧
京东科技埋点数据治理和平台建设实践 | 京东云技术团队
导读本文核心内容聚焦为什么要埋点治理、埋点治理的方法论和实践、奇点一站式埋点管理平台的建设和创新功能。读者可以从全局角度深入了解埋点、埋点治理的整体思路和实践方法,落地的埋点工具和创新功能都有较高的实用参考价值。遵循埋点治理的方法论,本文作者团队已在实践中
达达埋点迁移京东子午线实践 | 京东云技术团队
一、概述1.项目价值及成果使用集团的统一埋点采集能力和埋点平台,完成达达7条业务线共43个站点应用的埋点迁移,降低自研采集工具和平台的研发投入和机器成本,打通数据链路,创造更多的数据分析价值。具体降本增效价值如下:1.1数据分析价值:与京东流量数据打通,拉
埋点日志最终解决方案——Golang+Gin+Sarama VS Java+SpringWebFlux+ReactorKafka
埋点日志最终解决方案——GolangGinSaramaVSJavaSpringWebFluxReactorKafka之前我就写过几篇OpenRestyluakafkaclient将埋点数据写入Kafka的文章,如下:以上一步一个坑,有些是自己能力