数据埋点:数据埋点测试平台

基于抓包工具实现

测试平台功能

代理支持

  • 通过对 Fiddler 开发自定义插件、Whistle 进行二次开发,能够无缝衔接抓包工具(Fiddler、Whistle等),无侵入的收集应用程序的埋点数据,
  • 可以有效减少获取埋点数据的步骤,节约测试时间;

非代理环境上报

  • 无需连接代理,便可上报埋点到测试平台,且能够实时查看埋点数据;
  • 解决产品人员、开发人员等、因没有安装代理环境或不会使用代理工具等因素,而无法验收、自测埋点的问题。

漏报性检测

  • 自动检测埋点是否漏报;

规则自动对比

  • 根据埋点数据的需求文档生成动态的规则库,自动对应用程序上报的埋点数据进行实时、快速的一致性检测,降低了验证埋点的成本,提高了埋点测试的准确性;

历史埋点数据存储

  • 进行持久化存储,方便追溯历史数据;

埋点方案规范性检测

  • 活动上报的埋点数据必须满足一定的规范,才能保证埋点提数的正确性,以及活动运营数据评估的准确性。
  • 在埋点测试之前,对埋点方案进行规范化检查,能够尽早揭露问题,实现了测试左移;

测试平台设计

测试平台设计原则

  • 无痕获取埋点数据;
  • 自动和埋点方案对比测试,失败时高亮提示;
  • 记录埋点测试过程数据、一键生成报告;
  • 丰富多样的规则库,能灵活配置,维护成本低;
  • 图表功能直观展示,可查看实时、历史埋点数据;

测试流程

  • 抓包工具(Fiddler、Whistle等)包含一个自定义插件,当测试人员连接抓包工具并触发应用程序时,会无感知的收集埋点数据并上报到服务器。
  • 服务器包含一个动态规则库:通用规则和自定义规则,根据动态规则库自动检测埋点数据是否正确,并生成测试报告。

抓包工具(自定义插件)

抓包工具(自定义插件)获取埋点数据

  • 抓包工具(Fiddler、Whistle等)安装自定义插件,无感知的获取应用程序的埋点数据;

自定义插件的具体实现方法

  • 监听抓包工具传输的所有网络数据包的域名(HostName);
  • 当网络数据包的域名(HostName)和应用程序的埋点上报的域名一致时,拷贝网络数据包的请求内容(RequestBody),并发送到服务器;

自定义插件优势

  • 自定义插件只需开发实现一份、可重复利用;
  • 测试人员不需要进行额外的操作;
  • 学习成本低,有利于推广使用;
  • 自定义插件自动监听埋点数据并发送到服务器,不需要对被测应用进行二次改造,达到了无侵入、无感知的收集埋点数据的目的。

服务器(动态规则库)

服务器(动态规则库)自动检测埋点数据

  • 服务器收到埋点数据后,根据动态规则库对埋点数据进行自动检测,并生成测试报告。
    • 动态规则库包括通用规则和自定义规则。

通用规则的实现方法

  • 固有属性抽象通用规则
    • 将需求文档中埋点数据的固有属性抽象成通用规则;
  • 例如:
    • 埋点数据的类型(点击、PV、曝光);
    • 埋点数据的字段是否为空;
    • 埋点数据字段的拼接个数等。
  • 因通用规则具有普遍性,适用性广,所以只需生成一份,可重复使用,实现成本比较低。

自定义规则的实现方法

  • 正则表达式
    • 因触发应用程序的场景不同,导致实际上报的埋点数据存在差异性时,需对需求文档中的埋点数据的字段采用正则表达式生成自定义规则。
  • 自定义规则是针对某个具体埋点数据实现的,满足了个性化的需求。
  • 当埋点数据量比较庞大时,优先生成并使用通用规则,只有埋点数据的格式存在不确定性时,才利用正则表达式生成自定义规则。
    • 所以动态规则库既节约了成本,同时具有灵活性、多样性的特点。