一、背景概要
1、埋点
埋点是在应用中特定的流程收集一些信息,用来跟踪应用使用的状况,后续用来进一步优化产品或是运营的数据支撑,包括访问数,点击量等等。
互联网应用(网站、APP)在研发时往往不会专门记录用户身份和行为数据,也不会包含专业的数据分析功能。但有时为了分析用户产生某些动作或不产生某些动作的深层原因,就需要详细的用户数据进行分析。这个时候就需要用到专业的用户分析工具以及埋点了。
2、埋点测试
分为需求新增埋点测试和 P0 埋点回归测试
需求新增埋点测试
埋点需求和功能需求一样,需要经历需求设计,开发,测试和上线等流程。
测试要义
1. 测试要义字段准确:字段与语义设计一致
2. 时机准确:上报时机与语义设计一致
3. 次数准确:上报次数与语义设计一致
P0 埋点回归测试
必要性
P0 埋点往往是用户频繁使用或影响业务决策的埋点,如播放时长,互动率等,如果不报或者错报,对于业务决策会有较大影响。
人工测试耗时
视频消费侧共有 P0 埋点 69 个(单端),每周回归测试耗时约 4h (单端)
3、埋点自动化测试
必要性
P0 埋点回归测试耗时耗力,且完全依赖人工就必然会存在精度不足,人员替换难,重复测试耗时长等问题。
挑战
- UI 底层驱动
- 埋点拉取方式
- 整套测试框架方案
- 结果校验方式
- 测试结果的存储与通知方案
- 平台化
- 云设备管理
解决方案
使用已有的埋点自动化平台
测试平台
埋点自动化测试平台:埋点自动化测试平台
测试平台-优势一:提供了整套的 UI 驱动 测试框架,接入方便,无需或少需额外开发
测试平台-优势二:支持两种校验方式,保证了测试结果的精度(历史版本 DIFF 指定字段校验
测试平台-优势三:具备结果通知,报告存储等能力
投入产出
投入:从前期调研到最终落地,整体项目周期 33 天,投入人力16.5pd(考虑到需求与埋点自动化并行,因此人力=项目周期*0.5)。
产出:视频消费侧共有 43 个(单端) P0 埋点接入埋点自动化,单周单端可节约 2h 回归人力,截止目前已实现 26h 收益。
对平台的贡献
接入过程中发现平台问题共计12个,为平台的稳定性和多样化做出贡献
三、接入细节
agent 本地环境搭建
- JDK 环境准备
- ADB 环境准备
- APPIUM 环境准备
- AGENT 调试
2、CASE 设计
CASE 设计模版
1、前置操作(包括APP卸载安装/登陆/启动,ZA地址替换等)
2、用例设计:进入目标页面,执行目标操作
3、后置操作(拉取埋点,埋点校验,生成报告,消息通知等)
CASE 举例
1、前置操作(包括APP卸载安装/登陆/启动,ZA地址替换等)
2、用例设计:进入目标页面,执行目标操作
3、后置操作(拉取埋点,埋点校验,生成报告,消息通知等)
CASE 调试
参数获取UI 定位参数:平台中真机调试获取 本地 appium 获取 埋点字段预期值:et 平台埋点语义定义/过往的埋点回归测试报告
真机调试UI 步骤补充完毕之后,实时观测特定步骤的参数是否符合预期
任务执行
1、UI 步骤正常,对埋点数据进行调试
2、日常的回归测试任务执行
4、任务部署与维护
任务部署
用例集设计 :用例集需要权衡用例集个数和用例个数(尽量避免出现个别用例报错阻塞整个用例集执行的情况)
任务设计:每个任务尽可能只包含一个用例集,涉及到坐标点击的用例需要固定测试设备
任务维护
日常任务执行中如果遇到报错,阻塞等问题需要对用例进行维护(有可能是平台问题,有可能是UI组件变化)
四、结语
埋点的准确性对于产品的未来规划与决策至关重要,但是在高频率的客户端发版节奏下,埋点回归测试又为测试人员带来不小的负担,埋点自动化测试以其易接入,好设计,高准确,便维护,省人力的种种优点为测试同学减压减负,本次客户端埋点自动化实践希望可以为深处同场景下的同行提供参考。