开发者社区> 闲鱼技术> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

闲鱼是如何实践一套完整的埋点自动化验证方案的?

简介: 九层之塔,始于垒土
+关注继续查看

作者:闲鱼技术——程木

背景

作为一款国民级二手交易App,闲鱼每天都有成千上万的二手闲置商品发布,精准的个性化的商品推荐是促进闲鱼用户快速成交的秘诀。搜索推荐算法的精准和埋点数据的准确性息息相关。一旦埋点数据出现问题,用户侧就会出现推荐商品不准确、过度推荐等问题,同时宏观的交易大盘数据的统计也会有偏差,进而影响整个商品运营策略,因此采取有效的手段来保障埋点质量就成为了闲鱼客户端质量保障的关键的一环。

问题

过去的一年闲鱼客户端进在首页、搜索、商品发布等核心场景下进行App体验优化与升级,在客户端快速迭代过程中经常会出现UI改版之后某些关键埋点没有上报、埋点关键字段缺失、埋点字段值不正确等问题,而这些问题在线下测试的时候由于不影响用户体感而被忽略,往往客户端版本发布之后算法或者数据同学察觉到数据异常才会回过头来定位埋点问题,问题修复代价很高,通常会追加客户端版本或者开关降级来解决埋点异常的问题。通过对迭代过程中出现的问题复盘得出来主要有以下的急需解决的问题

  • 哪些是我们需要重点保障的核心埋点
  • 如何开展有效的线下埋点测试
  • 如何提高埋点问题的排除效率

针对以上问题,闲鱼技术质量团队结合自身业务特点提供了一套低侵入埋点质量保障方案

埋点质量保障方案

闲鱼端上承载着数以万计的埋点,且随着业务的增长埋点个数也在不停地增多,而这些埋点由于历史原因都没有沉淀相关的说明文档,依赖开发、数据、产品同学主动梳理埋点数据显然是一件耗时费力又容易出错的事情,所以针对端上埋点质量保障我们的核心思想是:通过历史数据的分析和人工干预生成埋点画像(校验规则、值特征),优先保障核心埋点,并提供自动化测试和埋点版本对比来提升埋点数据交付的信心。
埋点数据上报流程.png
如图所示为闲鱼端内埋点质量保障方案,埋点数据hook后进行数据的抄送,抄送的埋点数据会分为两部分,一部分样本会交给埋点分析服务提取埋点的Key/Value特征,进而生产埋点的校验规则;另一部分核心埋点会交给验证服务处理,参考已生成的校验规则和人工干预的校验条件会对这部分数据进行逐个校验,最后在版本灰度发布前也会提供埋点的版本比对功能来确定核心埋点是否漏报。

核心埋点梳理

首先需要从成千上万的埋点中圈选出重点保障的埋点,圈选的原则是

  • 埋点数据缺失/异常会导致搜索推荐算法精准性
  • 埋点数据缺失/异常会导致大盘统计数据偏差
  • 埋点数据缺失/异常会导致运营投放策略

满足上述条件的都会被标记为闲鱼客户端核心埋点。前期我们梳理了闲鱼首页、同城、关注、搜索、详情等场景,并通过埋点所属页面(PAGE)、事件标识(ARG1)、事件类型(EVENTID)进行核心埋点的标记,最终在后续的测试中也更侧重于这部分核心埋点,而这部分的埋点的校验规则则是由样本数据分析和人工规则干预得出的。

埋点数据上报

圈选出核心埋点之后,接着需要解决得问题就是如何获取客户端埋点数据。闲鱼端上集成的埋点SDK是通过实时上报通道对埋点数据进行上报,上报后数据经过处理后会最终落到数仓中,所以说要拿到埋点数据可以从数仓中取数据,也可以在端上下功夫。由于数仓取数存在数据实时性不高、数据量大、调用链路长等问题,最终选取了客户端埋点抄送的方案。通过对端上埋点上报通道的hook来实现每一个埋点数据抄送。例如在Android端我们采用的是AOP切面拦截的方式对开发包的埋点数据进行截获然后通过HttpAPI抄送到数据接收服务。当然采用这种直接拦截代码的方式做数据抄送需要熟悉代码逻辑,做最小化的侵入。除了AOP切面拦截,类似的通用技术方案Frida也是不错的选择。

埋点校验规则

有了埋点数据之后接下来就是补全核心埋点的特征,例如埋点上报哪些字段、字段是必须上报的、字段的值是离散的还是可枚举的、字段在上下文场景中值的特点。后端的数据处理就会根据核心埋点的分布和版本上报数据进行样本的提取,对每个样本逐字段进行检查,并统计Key的分布、Value的分布,当样本数达到阈值之后根据历史Key/Value分布数据就能得出以下的基础校验规则

  • Key非空
  • Value非空
  • Value取值范围

上面的基础规则得出之后进一步对数据进行聚类分析,就可以得出以下的场景校验规则

  • 组合Key条件下Value的特征

例如:通过样本的聚类分析可以推断出类似于“同一次搜索过程中,rn参数必须保持一致”这样的规则

埋点自动化测试

有了数据和规则接下来就需要自动化测试脚本大显身手了。通过手工操作闲鱼App能知道对应埋点触发的时机、页面等信息,因此只要编写自动化测试代码替代人工的点击、滑动、浏览行为就可以做到埋点的自动化验证。以搜索点击核心埋点为例整体的自动化验证过程示意如下
自动化验证流程.png
埋点的自动化测试可以大幅提高埋点回归的效率,测试同学只需按照版本维护核心埋点自动化用例,就可以在分钟级别完成闲鱼核心埋点的自动化验证。埋点自动化测试解决了大部分的核心埋点的精准验证问题,版本比对则是在自动化之上实现埋点Diff的功能,通过不同版本埋点数据的比对快速检测出新版本中哪些埋点丢了,哪些埋点埋点格式发生了变化,进一步降低人工排除的成本。
埋点版本比对.jpg

总结

闲鱼端内埋点质量保障方案上对端上侵入较少,通过历史样本数据分析免去了人工主动梳理埋点的工作量,目前梳理出闲鱼端内重要场景(首页/关注/同城/搜索/发布/详情)下的核心埋点共计100+,UI自动化验证整体回归时间由手工测试耗时0.5天下降为到分钟级别,快速的版本比对和可视化的埋点数据展示和筛选也让埋点问题排查变得更加方便。在未来我们将继续从以下两点来进行方案的整体优化:

  • 埋点自动化将纳入端上集成卡点之中,即开发同学集成后就立即触发埋点的自动化验证和比对,在集成阶段就提早发现埋点问题。
  • 自动化深度和用例的可维护性方便也是我们需要努力的方向。

希望我们的自动化手段能让更多技术小二从重复劳动中释放出来,提升数据质量的同时也为每一个闲鱼的用户提供贴心的个性化推荐服务,为每一个闲鱼用户提供更好的购物体验。

References

[1] Frida:https://github.com/frida

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
前端质量|基于业务驱动的前端性能有效实践案例
前端的本质价值是什么?作者认为是给用户创造良好的交互体验和抵达率优化应该在转化率之前。那么本文就将和大家分享基于业务驱动的前端性能有效实践案例。
0 0
移动端UI自动化过程中的难点及应对策略
在之前的文章《自动化质量评估维度》中,我们探讨了衡量自动化稳定性的误报率指标,今天重点针对移动端UI自动化过程中导致误报的几个难点进行展开分析并给出相应的解决方案。
0 0
通过度量把发版过程的不确定变成确定-构建闲鱼版本持续交付管道及度量 | 实践案例三
2018 财年初为了应对闲鱼业务和技术快速发展。闲鱼技术团队在云效中心敏捷教练的指导下闲鱼客户端的泳道研发支撑项目 kickoff。
0 0
代码精准分析在闲鱼接口测试中的应用
代码精准分析在闲鱼接口测试中的应用
0 0
​优酷质量保障系列(二)—客户端自动化测试基础能力建设
自动化测试能力建设过程中,自动化框架选型、框架设计核心和思路、自动化能力平台接入,是自动化测试能力建设过程中重要环节。文章分享优酷APP自动化测试能力建设过程中的经验
0 0
大厂经验(二):多端可视化埋点解决方案
超过10年互联网行业技术工作经验总结
0 0
微服务业务监控和行为分析怎么做?试试日志埋点
互联网公司一般都会有专门的数据团队对公司的一些业务指标负责;为了拿到这些基本的业务指标,一般也要工程团队去配合做一些数据采集工作,于是埋点诞生了。
0 0
精准测试与自动化测试的无缝对接
导读:自动化测试曾被软件测试业界视为“救赎式银弹”,但随着项目越来越庞大,测试用例集变得越来越臃肿,查错能力却越来越弱,最后甚至成为QA部门沉重的包袱。本文主要以Junit为例,介绍如何在不改变原有自动化操作流程的情况下,对原有技术进行“精准测试“的技术升级,使覆盖率可视化、回归用例自动选取等先进特.
2740 0
淘宝性能自动化测试平台搭建过程
导读  ID:TOP100case  淘宝网的性能测试自动化平台具备了分布式、高并发、低成本、可扩展等特性的性能测试平台工具,它包括性能项目管理、环境管理、脚本管理、场景管理、任务管理、监控管理、结果管理等模块,以及前端性能测试模块、性能测试报告模块、性能缺陷模块、和性能基线模块等,后台还有完善的分布式压测引擎管理平台。
2129 0
+关注
闲鱼技术
阿里巴巴旗下,闲鱼技术团队官方账号 简历投递:guicai.gxy@alibaba-inc.com
文章
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
讯飞语音云实时分析架构及实践
立即下载
基于Apache Flink的平台化构建及运维优化经验
立即下载
F2etest — 多浏览器兼容性测试整体解决方案
立即下载