大家好,我是rainbowzhou。在【rainbowzhou 面试3/101】技术提问--大数据测试是什么,你如何测?中,我介绍了大数据系统测试之功能测试,含对数据的采集和传输,存储和管理,数据计算,数据查询和分析以及数据可视化等功能的测试。本篇的埋点测试便是其中功能测试的一部分。本篇将聊聊埋点测试是什么、埋点测试的流程以及埋点测试需要注意的点,希望对大家有所帮助。

埋点测试是什么?

说说我的理解,在应用程序(APP/H5/小程序等)投入运营后, 在做用户行为分析的时候需要挖掘核心业务功能使用情况时,往往会需要在应用的代码中添加一些额外的代码来采集数据,这就是所谓的“埋点”。而埋点测试就是对埋点数据的测试。

现在埋点方式主要分为三种,分别是:代码埋点、可视化埋点、无埋点(全埋点)。

  1. 代码埋点主要由研发工程师手工在程序中写代码实现,通过触发某个动作后程序自动发送数据。优点:具有很强的灵活性,可以控制发送的时机和发送方式等。缺点:人力成本较高,需要研发工程师手工开发程序,有时候还要依赖App发版来生效。
  2. 可视化埋点以前端可视化的方式记录前端设置页面元素与对其操作的关系,然后以后端截屏的方式统计数据。优点:简单、方便,能够快速地埋点。缺点:比较受限,上报的行为信息有限。
  3. 无埋点(全埋点)绑定页面的各个控件,当事件触发时就会调用相关的接口上报数据。优点:不需要埋点,方便、快捷、省事。缺点:传输数据量比较大,需要消耗一定的数据存储资源。

采集的数据大致可以分为三类目标数据:

  1. 行为数据:时间、地点、人物、交互、交互的内容;
  2. 质量数据:浏览器加载情况、错误异常等;
  3. 环境数据:浏览器相关的元数据以及地理、运营商等;

埋点测试的流程?

如图所示:测试人员主要是依据埋点需求进行数据的测试。

firebase埋点测试 android app埋点测试怎么测_大数据

埋点测试需要注意的点

1.语义准确(一致性) 语义准确指的主要是我们要知道开发埋的是一个什么类型的点,这里的类型指代一个一个语义模型,例如一个卡片曝光( show + card )、一个按钮曝光( show + button )、一个页面曝光( show + page )、一个能打开页面的点击行为( event + openurl )。当我们去触发app某个事件的时候,是否打出来一个跟这个事件相匹配的语义埋点是我们最关心的事情。

2.字段准确(准确性) 埋点的每个字段的值在上报的时候应该保证准确,这里的准确是字段和埋点列表中的枚举值应该一一对应,例如卡片的曝光 logtype 是 show,element_type 是 card 等这种字段对应关系。

3.时机准确(顺序性) 埋点的时机是指埋点的顺序应该和用户操作以及页面曝光的具体事件一致,有几个比较明确的时序是我们需要提前知道的。

页面上的事件以及模块的曝光一定要在页面曝光之后打。

页面关闭之后绝对不能再打这个页面上的任何事件以及任何曝光。 

前端的页面第一次进入容器的时候都由 sdk 的 hybird 容器打,后续相同容器内的页面跳转就由前端自己打。(前端的打点都有web_url,非前端的都没有web_url) 

播放器播放事件是播放器自己打的点,自动播放的时候会打一个点,点击之后会先打一个点击的点,再打一个播放的点。(加备注,所有场景) 点击之后如果有跳转一定要打 openurl 事件,并且之后会打一个 pageshow 打点,只有多 tab 切换的时候可以不遵循这个规律。

定时器类打点生命周期需要做成只在当前页面内,切换页面或者 tab 要杀死相关打点线程。

4.是否重复上报,是否漏报 需要注意的主要是 pageshow 和交互事件是否有重复打点的情况。

5.埋点的 url 是否符合规范。

行为数据如下图所示,仅供参考:

firebase埋点测试 android app埋点测试怎么测_功能测试_02

以上是关于埋点测试的一些归纳总结和思考,此外非常感谢艾老师抽取宝贵的时间,来帮我答疑解惑~

看完今天的分享对你是不是有所启发呢,有任何想法都欢迎大家后台私信我,一起探讨交流。