海拍客埋点质量保障体系建设

2022年05月16日 609次浏览

王珊珊(泡泡)

背景

埋点作为商业智能体系中重要的一环,为公司提升产品功能、实施AB Testing、流量分析等业务决策方面提供了数据支撑。随着海拍客业务快速发展,对于精细化流量运营的需求不断提升,埋点数据质量差的问题也逐渐凸显出来,但埋点质量保障又是个老大难的问题,主要体现在以下几个方面:

  1. 埋点链路涉及团队非常多,包含业务方,pd,开发(后端,前端,客户端,数据),测试,bi等多团队人员,各团队职责边界及团队协作问题,难度很大;
  2. 缺少相应流程规范和系统保障,导致其中任何一个环节出错,都会影响整个埋点数据准确性,而且问题往往发现的不及时;
  3. 涉及多端业务,包含ios,安卓端,web端,各c端小程序等,对不同端上的埋点数据保障和测试回归效率问题,带来了很大挑战;

因此,针对这样一个长链路 & 多端复杂数据问题,我们开启了埋点质量保障体系建设之路。

埋点质量保障体系建设

主要围绕“优化埋点需求 & 研发流程管理”、“完善埋点质量测试体系”、“持续埋点数据监控”这3个环节,通过优化流程,打造相应的工具平台固化和协作测试,保障埋点数据准确性,提升研发和测试效率。

优化埋点需求 & 研发流程

需求流程与规范优化

埋点需求从提报&评审,到最终的发布上线,过程中需要联合产品、开发、数据、测试团队,对整个需求流程管理进行了细化,明确各团队角色职责和各阶段任务,各司其职,高效协作,保证各版本质量更可控。

同时,各团队内部细化了在研发过程中各角色实战操作的各类规范操作,比如“埋点数据点位定义规范”、“客户端埋点标准化输出规范”、“前端埋点标准化输出规范”、“数据埋点研发规范”等等,这些规范对埋点数据质量保障,也的确起到了基石的作用。

研发流程优化

为了方便PD、开发、PM、测试等对埋点需求管理,项目进度追踪,以及对需求埋点质量的把控,项目组同学自行研发了埋点流程平台来保障支持。平台涉及点位管理,开发自测,线下/线上环境测试,核心点位发布卡点等关键流程,包含了对埋点全生命周期管理和保障,同时也提升了研发、测试工作效率及团队协作效率

平台需求管理一览:

页面点位测试通过率情况一览:

完善埋点质量测试体系

早期埋点测试,一般都是通过抓包工具,手工对app上每个点位路径操作完后,在通过肉眼判断埋点接口上报数据。这种方式不仅效率低下,而且容易非常判断错误和测试遗漏。 因此为了解决这个问题,我们研发了一系列工具来支持埋点测试,并不断完善了埋点测试体系,提升埋点链路测试效率。

埋点手工测试优化

主要是针对“埋点数据进行实时展示”,通过用户提供的账号,app上进行点位路径操作后,页面上实时用户展示埋点信息,避免去通过手机抓包来看数据。点位实时检测工具

这种方式能够解决部分肉眼判断埋点数据问题,工具对埋点上报的数据进行了简化,只显示了点位关键数据,但实际上点位显示还是不清晰,对需求类埋点测试提效不大,而且没有对扩展字段进行检测。一般适用于少量点位测试回归。

点位实时检测情况一览:

埋点测试半自动化

随着埋点需求不断迭代,页面点位数据不断增加,QA和开发同学对点位数据的回归工作量越来越大,也常常因为回归不充分,出现一些比较“低级”的错误,比如扩展必填字段为空、字段缺失或者Key不对等等。因此为了避免这些问题重复出现,同时又能降低人工测试的成本,我们进行了埋点测试半自动化探索。

主要是手工对app点位进行操作后,通过埋点流程管理系统来抽取一些通用的校验规则,对app上报的埋点数据进行自动检测并生成测试报告。比如:

  • 点位字段校验:上报埋点的点位和埋点定义是否一致,是否存在缺失的字段;
  • 必选扩展字段校验:上报的埋点扩展字段,与埋点定义的扩展字段是否存在缺失;
  • 2端点位次数统计校验:分别统计安卓和IOS端,各埋点点位与埋点扩展字段上报的数据次数是否一致,是否存在某一端数据漏报的问题;

通过对这些数据规则自动化校验,并一键生成测试报告,能在很大程度上减少了人工判断的成本和埋点漏测的发生。

这种方式,通过结合埋点流程管理系统,实现了埋点测试半自动化。常常用于实际埋点测试需求中,是最常用的一种埋点测试方式,目前已用于海拍客埋点测试标准化流程中。

埋点数据自动校验一览:

核心埋点测试全自动化

相对于埋点半自动化测试,这部分内容主要是加进了 APP UI自动化测试功能,解决了测试手工对app 点位进行操作的问题,真正实现了 埋点测试全自动化操作与数据自动校验,并实现钉钉发送报告与每日自动巡检功能。

目前核心埋点测试全自动化,已应用在每周app 发版检查回归,每日点位自动巡检回归,核心埋点覆盖率达60%以上,并持续跟进中。

app 核心点位 & 用例覆盖情况一览:

核心点位自动测试情况一览:

持续埋点数据监控

除了对上线前埋点质量保障,线上的埋点数据监控也是很有必要的。通过数据监控,能够及时、有效的反应出埋点数据是否出现异常,提前预警,发现,解决问题。

目前我们已建设的埋点数据监控方案如下:

  • 客户端监控:针对埋点类型为native 上报点位进行代码扫描,应用在每次app 打包前自动进行。可以解决app 本地点位数据异常的问题;
  • 后端监控:针对埋点类型为service 上报点位进行接口监控,应用在预发/线上对后端接口返回的埋点数据进行监控。可以解决后端埋点数据异常的问题;
  • 测试监控:针对核心埋点数据,通过 app ui 全自动化,进行app 发版前 & 每日巡检。可以解决核心埋点数据异常的问题;
  • 数据监控:针对异常埋点数据和核心埋点数据波动情况进行监控,通过设定一定的波动阈值,当波动数据超出阈值则自动报警告知值班人,值班人进行异常排查跟进;

目前用到的主要数据监控方案:

  1. 埋点异常数据监控:对线上用户上报的数据,未在埋点系统里录入的异常点位进行监控告警。可以监控出某些点位出错/ 未在系统录入问题;
  2. 用户行为异常pv数据监控:对用户每日上报的埋点pv,与各点位近7天pv波动值进行比对监控,超出阈值告警,可以监控出某些点位pv突然上涨 / 下降问题;

总结与展望

经过近2年不断探索实践和优化,我们沉淀了上述埋点质量保障体系,海拍客APP的埋点质量也因此得到了大幅提升,埋点测试效率也变得高效 & 便捷,并且近1年未出现埋点相关故障,给业务方和数据分析带来了非常不错的顺畅体验。

虽然我们的埋点质量保障工作,取得了不错的效果,但是,埋点数据质量保障依然是任重道远,我们还是有许多需要优化的地方,未来我们还将不断优化并持续完善。

主要体现在以下几个方面:

  • 流程规范方面:
    • 继续按点位标准化输出规范,对各端点位上报数据进行管理;
    • 后续会熟悉埋点数据处理加工,并沉淀相应规范输出;
  • 测试领域方面:
    • 拓展到其他端上,比如小程序端,WEB端等,结合UI自动化,实现各端埋点自动化测试方案;
    • 拓展到业务数据域,除了保障埋点数据准确性,也要关心业务方对埋点数据的使用及价值效果;
  • 测试提效方面:
    • 降低测试对app ui脚本维护成本,探索使用ui 录制回放的方式替代;
    • 提升各端上埋点测试效率,比如app端,小程序端等;
    • 思考并探索动态点位数据测试方案;
  • 线上监控方面:
    • 梳理并完善埋点数据监控:比如对点位扩展字段监控,对动态点位数据监控等;
    • 跟进各dqc监控告警,第一时间响应并处理埋点监控问题;

相信经过不断优化和努力,海拍客埋点质量保障将持续保持高效高质量状态,也将更有力地为公司业务决策与发展保驾护航!