龙空技术网

作为测试,对于数据埋点你知道多少?

可可的小栈 87

前言:

现时各位老铁们对“获取控件的唯一标识”大概比较珍视,小伙伴们都需要了解一些“获取控件的唯一标识”的相关内容。那么小编在网摘上收集了一些关于“获取控件的唯一标识””的相关知识,希望同学们能喜欢,姐妹们快快来了解一下吧!

点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍。

本文4189字,阅读约需11分钟

Hi,大家好,我是CoCo。

大数据时代,多数的web或app产品都会使用第三方或自己开发相应的数据系统,进行用户行为数据或其它信息数据的收集,在这个过程中,埋点是比较重要的一环。你知道什么是数据埋点吗?作为测试重点要关注哪些方面?以下就给大伙解析。

数据埋点简介

01 什么是数据埋点?

所谓数据埋点,是数据采集领域的术语。它的学名叫做事件追踪,对应的英文是Event Tracking ,指的是针对特定用户行为或事件进行捕获,处理和发送的相关技术及其实施过程。特定用户行为和事件是我们的采集重点,还需要处理和发送相关技术及实施过程;数据埋点是服务于产品,又来源于产品中,所以跟产品息息相关,保证产品更好符合用户需求体验才是终点

02 为什么要做数据埋点?

埋点收集的数据有以下作用:

驱动决策:ABtest、漏斗优化、用户增长、bug修复、精准营销、流失用户预警,将分析的深度下钻到流量分布和流动层面,通过统计分析,对宏观指标进行深入剖析,洞察用户行为与提升价值之间的潜在关联

产品优化:智能推荐(千人千面)、场景化提示(私人助理)等;

精细化运营洞察用户行为与提升业务价值之间的潜在关联

03 埋点的方式有哪几种?

埋点主要分为:前端埋点、后端埋点。顾名思义,前端埋点就是在前端代码埋点,后端埋点就是在后端代码埋点。

前端埋点:前端埋点可以理解为web端,app端等在前端触发相关规则时进行的埋点上报等,主要记录的是用户的操作行为,例如点击了哪个按钮,进入了哪个页面等等。

后端埋点:主要是服务端埋点,可以理解为当用户进行相关操作触发相关接口请求或相关业务的时候,进行的埋点上报。

前后端数据埋点介绍

01 前端埋点

前端埋点又分为:代码埋点、全埋点、可视化埋点。

举个例子,想要对公众号后台的常读用户进行分析。这个需求用全埋点的方案是做不到的,因为不知道要上报哪些自定义属性。这时可视化埋点的作用就很明显了。看下图,圈选要上报的类型:性别分布、年龄分布、城市分布,即可查看对应的数据分析。

一般来说,一个成熟的SDK,这3种埋点都要支持,因为他们的适用场景是不一样的,3种埋点方式结合使用比较合理。代码埋点用于埋业务数据复杂的场景,全埋点用于收集更多的用户数据做自定义分析等数据挖掘场景,可视化埋点用于运营活动页面等生命周期较短的页面场景。

02 后端埋点

主要是服务端埋点,可以理解为当用户进行相关操作触发相关接口请求或相关业务的时候,进行的埋点上报。

对于一些需要十分准确的采集的关键事件,比如支付、登录等事件是在页面关闭之后才发送的(即点击支付、登录页面发生了跳转),有些浏览器可能会取消掉页面关闭时发出的请求,导致后端没收到上报的数据。所以这类事件建议前后端一起统计,提高数据的准确性。

03 前、后端埋点的区别

在实际过程中,有些埋点是不用特意区分前后端的,用户的一个埋点事件在前端埋点或后端埋点都可以实现,但是需要注意的是,在实际埋点上报、数据收集等过程中会有数据丢失的情况,从这个角度来看的话,其实后端埋点要比前端埋点更有优势,前端埋点会因为一些网络问题、适配问题等等容易出现上报异常造成数据丢失且丢失后排查困难,因为前端相关的是没有记录相关操作的,只负责上报,上报成功与否没有记录。

而如果是后端埋点,无论是自己的数据系统还是第三方数据系统都是可以通过自己系统本身相关的数据库查询或记录日志等操作进行埋点数据的校验排查,所以针对一些比较重要的埋点,还是建议以后端埋点为主,必要时通过记录日志或记入数据库等方式对相关数据进行二次记录以便进行数据核实。

数据埋点核心模型

事件和用户是数据上报的2大核心内容。

01 事件

当我们点击一个控件时,要上报哪些内容才能全面的分析这个点击行为呢?

准确的说,一个事件的触发,有4个因素:触发者、触发位置、触发的事件、触发的时间。

(1) 触发者

触发者即触发事件的用户。需要一个唯一标识,来识别不同的用户。下面的用户模型将会讲到。

(2) 触发位置

如何识别一个网页里面,事件触发的位置?需要一个页面的唯一标识和控件的唯一标识。页面的唯一标识一般通过url标记,但要处理好url后面的参数。控件的唯一标识一般通过元素在整个文档中的xpath路径来标记。xpath是能唯一标记控件在网页的唯一位置的一种标记方法。

(3) 触发的事件

事件类型有浏览、点击、曝光、悬浮,下拉、滚动、长按、右键等等,最常用的还是浏览和点击。

(4) 触发的事件

事件触发的时间一般取的是客户端时间,也就是用户的本地时间,如果用户的设备是移动端,取的就是手机时间,如果是电脑,取的就是电脑的时间。

但是客户端的时间不太准确,因为用户可以去更改设备时间。

所以我们需要一个机制去校准客户端时间。一般的做法是,在上报事件时,我们会上报事件触发时间t1和数据发送时间t2,服务端也会拿到一个接收数据的时间t3,如果t3-t2>60s,则认为客户端时间不准,要对客户端时间进行修正,修正后的客户端时间是:t1 + (t3 - t2) 。

为啥t3-t2>60s会认为不准,因为数据发送到接收的时间,一般不会超过60s。

02 用户

每个用户都需要一个唯一标识。选择一个合适的用户标识对于用户行为分析的准确性有很大的影响。这里说的唯一标识是发生事件行为用户id在数据中台的标记,不是业务中的登录id。

(1) 小程序用户

如果是小程序用户,可直接使用用户的openid,需要上报用户openid和unionid。如果同一个微信开放平台账号下,有多个小程序/公众号,就可以通过unionid来打通用户体系。

(2) H5用户

如果是h5用户,sdk会创建一个uuid来唯一标记用户,uuid根据用户的浏览器类型、屏幕宽高、分辨率等特性生成。

(3) APP用户

优先使用设备id来唯一标记用户,但如果取不到设备id,则使用一个sdk创建一个随机的uuid来标记。

(4) 游客

如果是游客,并且游客后面登录了系统,该如何把游客和已登录状态的用户id的行为数据关联起来?如果用户在未登录状态下触发了事件,那么sdk会创建一个uuid来唯一标记这个用户,uuid不仅会随着行为数据上报,也会存在本地存储中,如果以后用户注册登录了,就可以拿这个uuid去跟登录id去做关联,就可以把以前用户未登录时的行为事件数据和已登录状态的行为数据关联起来。

数据埋点测试

01 埋点测试关注点

埋点测试的过程有两个比较重要的环节,埋点上报和埋点落库。

埋点上报:无论是前端埋点还是后端埋点,是否正常按照相关规则进行上报,相关的事件名、属性值都是否完整正确上报。

埋点落库:埋点上报完的数据是需要存储到数据库当中再进行相关的数据统计、分析、归类等等,除了检查埋点上报,还要看最终数据是否正常落库,相关数据字段是否正常。

02 埋点功能测试

对各个模块或者功能点参照接口文档中的埋点模块进行逐一核实,看所传的参数和响应结果是否有异常

(1) 数据埋点测试

数据埋点接口文档:主要由产品经理及前端开发、后端开发提供。

数据埋点检查点:检查相应的模块是否做了埋点处理、检查做埋点处理的模块的参数是否正确、检查埋点接口服务端是否返回成功的消息。

检查埋点服务器的请求地:测试环境、预发环境、生产环境。

(2) 数据埋点可视化

数据埋点可视化:可视化对数据分析极为重要,利用数据可视化可以揭示出数据内在的错综复杂的关系。

03 埋点自动化测试

(1) 说明

埋点自动化测试与其它自动化测试的方案设计在目的层面应该是一致的,是为了更好的进行埋点回归测试,扩大埋点回归的覆盖率,特别是针对一些核心的埋点数据,例如一些埋点数据是转化相关数据,而转化数据直接跟核心业务相关,有些核心业务还会根据转化数据进行营销、销售、业绩等相关统计,埋点数据不准直接影响到这些东西。

(2) 实现

那么如何进行埋点自动化测试设计呢?可以进行分层设计来实现。

1. 用户应用层框架-移动端Appium,web端selenium,主要是模拟用户正常的业务操作;

2. 数据mock、上报数据收集-通过构造测试数据给到用户应用层使用,并且通过代理抓包收集上报数据,进行上报数据校验(jsonschema校验);

3. 服务端上报及落库查询-通过链接数据数据库或使用相关API,查询测试上报数据是否落库。

4.结合Jenkins进行持续集成,每天或每次发版前对所有埋点进行回归测试。

本篇数据埋点文就到这啦,码文不易,如果觉得写的不错的话,欢迎在看/分享/点赞。另外视频号会同步更新内容,主要以轻松愉悦为主,欢迎围观。

我是CoCo,计算机科学与技术专业,深漂大厂互联网民工(女),坐标深圳。5年工作经验,3年持续输出技术文。ITester软件测试小栈(ID:ITestingA)号主,专注于软件测试技术和宝藏干货分享,每周准时更新原创技术文章,每月不定期赠送技术书籍,愿我们在更高处相逢。喜欢记得星标⭐我,每周及时获得最新推送,第三方转载请注明出处。

想获取更多最新干货内容

快来星标 置顶 关注

标签: #获取控件的唯一标识