数据埋点:数据埋点校验&测试

埋点测试

  • 开发完了以后、在测试工具上去做数据的验证,检查数据的完整性、准确性、及时性。

埋点测试内容

  • 模块是否做了埋点处理
  • 埋点是否被正常触发
  • 埋点是否回传成功
  • 触发时机是否正确
  • 报送内容(埋点模块回传的参数)是否准确、完整
    • 验收是否多报
    • 验收是否少报
    • 验收是否缺参数上报
    • 验收上报参数是否符合预期
    • 空日志
      • 验收上报为空日志的比例
    • 异常上报
      • 验收上报不符合预期日志的比例
  • 数据落表是否准确、完整

测试中常见的问题

  • 是否使用了最新版本的 SDK(有些功能所需数据只有新版本SDK才会上报)
  • AppKey 是否填写正确
  • 上报地址是否配置正确,尤其是小程序数据的上报
  • 数据是否能正常发送
  • 是否选择了合适的 SDK,比如有些事件更适合在服务端上报
  • 是否覆盖了所有涉及到的页面
  • 是否覆盖了位于不同页面的相同事件
  • 是否因为页面跳转导致有些事件不能完全上报

埋点测试关注点

  • 埋点测试的过程有两个比较重要的环节,埋点上报和埋点落库。
  • 埋点上报:
    • 无论是前端埋点还是后端埋点,是否正常按照相关规则进行上报,相关的事件名、属性值都是否完整正确上报。
  • 埋点落库:
    • 埋点上报完的数据,需要存储到数据库当中,再进行相关的数据统计、分析、归类等等,除了检查埋点上报,还要看最终数据是否正常落库,相关数据字段是否正常。

测试流程

测试方法

埋点校验方式

  • 前端校验
    • debugger 断点
  • 后端校验
    • 数据库验证

测试时间点

  • 开发中测试
  • 上线前测试
  • 上线后测试

测试方法

  • 手工测试
  • 自动化测试

手工测试

手工测试方法

  • 最原始的就是去做人肉的 review,在开发工位旁边去看一下这个代码,开发触发、测试看数据。
  • 另外有 Kibana 之类的查询工具,可以协助快速的做埋点日志的查询,提供简单的可视化展示。

手工抓包测试缺点

  • 如果 APP 埋点加密,无法直接在抓包工具里查看;
  • 阻碍开发人员自测;
  • 大量埋点上报时,人工肉眼查看成本高,漏测率较高;
  • 手工记录结果,费时费力;
  • 老埋点数据问题遗留
    • 当老埋点数据在应用程序升级过程中被修改出问题时,由于测试人员精力有限且主要集中在新埋点的测试中,导致老埋点数据问题遗留到线上环境;

测试工具

  • fiddler
  • Android Studio
  • Charles

自动化测试

自动化测试方法

  • 用户应用层框架
    • 移动端 Appium,web 端 selenium,主要是模拟用户正常的业务操作;
  • 数据 mock & 上报数据收集
    • 通过构造测试数据给到用户应用层使用,并且通过代理抓包收集上报数据,进行上报数据校验(jsonschema 校验);
  • 服务端上报及落库查询
    • 通过链接数据数据库或使用相关 API,查询测试上报数据是否落库;
  • Jenkins CI/CD
    • 结合 Jenkins 进行持续集成,每天或每次发版前对所有埋点进行回归测试。

UI自动化测试埋点缺点:

  • 应用程序迭代较快,UI控件布局变化频繁,导致UI自动化用例稳定性差、失败率高,维护成本高;
  • 学习编写UI自动化用例门槛较高,不利于广泛推广使用;