埋点的意义
用户数据的收集一直是持之以恒的话题。在最早的时候,开发商或者开发者没想要那么多数据,他们最想要的是用户诊断日志。因为网络不发达和软件分发的模式,导致用户遇到问题就很难定为和解决。所以要么上门,要么你把日志拷给他。我想最早的用户数据最多是软硬件环境和出错日志。
到了我使用PC的年代,当操作系统遇到问题时,用户已经可以选择发送日志给微软了。当然网络依然不发达,除了一些大型应用外,其它的都不考虑这条用户和开发商之间的通道。而事实上很长很长一段时间,除了操作系统在收集用户信息,其它软件,恶意软件除外,压根都没想到过。
到了互联网web 2.0时代,网页埋点被慢慢应用起来。原因大致有二,一用户已经不再贫穷,他们的网络很好,他们的选择很多。二,开发商也意识到用户体验的重要性,他们需要收集数据来推进体验。那个时候还没有想用数据进行大数据分析,当然有利用用户信息推送广告的广告系统。所以当时的埋点一般都为性能埋点和页面流转埋点。这种思想也催生了GA 这种伟大的产品。网站的线上监控的理念和产品也应运而生。到今天各种APM 公司,传统网站依然是重度用户。
当时互联网广告也很火,这里不得不提一下cookie,网页端用户信息载体。有一天,你在北京上某个网站,突然给你推了条上海的酒店广告。那很多可能你最近查询了上海旅行和住宿信息,这些信息在cookie里,上传后被广告系统处理,然后你就变成了前面出现的广告的target。可以说,如果没有cookie,互联网广告行业估计就不会那么有意思。
时光荏苒,一不小心到了移动时代。我记得我和小伙伴们做的第一款手游集成了友盟来收集用户的手机信息,
游戏的日活,用户的登录登出,打开时长等等。我们当时其实没有把这些数据用起来,一来对用户数据不敏感,二来没有专业BD ,也分析不出个蛋来。
我后来换了个工作,去做移动广告,就是谷歌的admob,苹果的iAd 同种类型的。大家应该都知道移动应用端已经失去了cookie ,开发者无法随心所欲的收集用户信息,要来定位一个用户就异常困难。移动广告讲转化率,用户A 通过点击广告下载了某应用,怎么判断他又安装了该应用呢?这是个大难题。我们那个时候的转化率误差很大,开发每天都在改进算法,增加纬度。而这些算法基于的就是客户端的埋点信息的收集。
后来我加入阿里,又到支付宝,更加体会到埋点的重要性,我们后续会讲。
哪些端需要埋点?
昨天有同事问服务端要埋点吗?我的看法是你想要的信息是否容易获取?我们知道客户端埋点是因为客户端的行为不受控制,信息不易获取,所以大量采用埋点。如果你的服务端也有类似问题,比如大规模集群,那你要看某个特定日志必然困难重重,这个时候就需要服务端埋点或者说服务端监控,不过就不是埋点那么简单粗暴了。这个可以了解下 oneAPM 的技术。
个人觉得,到用户手上的产品,即客户端都需要埋点。在民众生活中露出的无非是三张屏幕:
- 电脑显示屏
- 手机屏幕
- 电视屏幕
所以不要觉得没人关心你,软件开发商无时无刻不在关心你。
哪些场景需要埋点?
我主要讲下我略微了解的客户端埋点,埋点是艺术活,埋的好,可以给你带来漂亮的报表,有钱途的业务模型等等。埋的不好,数据没有用,还占资源。
我们从需求出发,业务人员想要知道哪些业务使用量大,开发人员想了解产品的性能,稳定性,老板想要pv,uv。人人都是产品经理,人人都会提需求。那我们不妨把这些需求归类为:
-
用户行为:记录用户使用过程中的行为,用于产品和运营人员分析PV和点击等产品数据。
-
质量监控:记录客户端闪退、异常、性能等质量数据,用于技术和运营人员监控质量异常。
-
运行跟踪:记录程序运行过程中打印的日志,这部分日志会存在手机上,用于开发人员分析问题。
运行跟踪不适合埋点,从说明也能看出,这个类似于windows的诊断日志,只有用户出问题,主动要求诊断的时候才会用到。
如何埋点?
如何埋点,其实涉及到一个非常庞大的监控系统的设计,这方面我没有任何经验,我从使用者的角度来推敲下。
-
模型设计
对于每种类型的埋点,需要建立好可扩展的模型,大家应该关注到上面图片中的可扩展信息,再最初的时候,可能一下子无法想到所有的信息,所以我们需要自己方便扩容的模型。
-
埋点规范
也许我们有很多客户端,应用A,应用B。如果埋点规范不统一,那么埋点信息上传之后,就可能需要多套系统来解析了。这就非常的不划算了。需要结合设计好的模型,给出基本的埋点规范,当然也要给客户端足够多的发挥空间。
-
自动埋点和主动埋点
无论是网页应用还是移动应用,想要别人遵守规则,最好的办法就是给你一个sdk,集成到你的应用中去就可以了。所以我们可以把一部分埋点行为在sdk中做掉,比如上图中的手机信息。然后开发者需要调用sdk中的接口进行主动埋点,那些业务埋点就需要借助这些接口了。
-
上传机制
我们不可能时时上传埋点信息,如果那样,简直就是流氓软件,流量小偷了。合理的上传策略,比如间隔半小时上传一次,在用户在使用 wifi 情况下上传,压后台时候上传。只有做到用户无法感知的上传,才算是合格的埋点。
-
日志保留时间
如果我们一直没有成功上传,日志越攒越多,那肯定会占用不少空间,这对手机的影响是非常大的。所以制定策略,无论是定时清除,还是定量清除,总之不能让用户在他的手机里发现日志怪兽。
-
展示平台
相信海量埋点上传之后,肯定会用到数据库,针对埋点模型设计好的数据模型,可以更好的帮助数据同学做出多维度的报表。有了数据之后, 怎么做,就是每个公司自己的事情。
埋点之后,测试要干什么?
其实有了这些埋点后,在灰度期间,上线初期就可以关注收集的数据,发现问题就能及时修复。那么测试需要干嘛呢?
- 首先在发布前要保证埋点是正确的。
- 发布之后,要时刻关注监控大盘,无论你是主动去数据库捞数据,还是去已经做好的监控大盘。
- 拉取性能数据和之前版本做比较,拿数据证明质量是否改善。
- 在发布一段时间后,拉取各种数据,去喷开发,pd们!
抛砖引玉
我对这块的理解也就差不多那么多。监控是永恒和未来,而埋点是一切数据的来源。我先抛出这块砖头,看看其他高手或者内家有没有经验分享。
转自:
https://testerhome.com/topics/3762
相关推荐
Cat客户端埋点插件是Cat监控系统的一个重要组成部分,它的主要目的是在不影响业务代码的情况下,对应用程序的关键操作进行无侵入式的数据收集。这样可以为系统性能、故障排查提供关键的数据支持。 **2. 使用方法** ...
埋点自动化测试是一种在软件开发过程中,为了收集和分析用户行为数据而进行的自动化测试方法。在现代互联网产品中,埋点数据对于了解用户行为、优化用户体验、支持业务决策至关重要。然而,传统的手动测试方法效率...
1. 选择合适的埋点方案:根据应用需求选择最适合的埋点技术,如客户端埋点、服务端埋点或全埋点。 2. 设计清晰的事件体系:定义统一的事件命名规范,方便后期数据分析。 3. 数据安全性:确保在收集用户数据时遵守...
埋点方式多种多样,按照埋点位置不同,可以分为前端(客户端)埋点与后端(服务器端)埋点。其中全埋点是目前较为留下的前端埋点方式之一。全埋点采用“全部采集,按需选取”的形式,对页面中所有交互元素的用户行为...
在字节跳动的体系中,埋点数据流包括客户端、Web端和服务端埋点,经由埋点收集服务接收,再通过Flink实时ETL(Extract-Transform-Load)进行数据清洗、标准化和风控处理,最后服务于推荐、广告、ABTest等多个业务...
- **客户端主动拉取**:客户端定期或根据特定条件向服务器请求最新的埋点配置信息。 - **三级缓存机制**:包括本地缓存、内存缓存以及网络缓存,以确保数据的快速获取和高效利用。 这种机制保证了埋点配置的及时...
JavaScript在其中扮演的角色主要是处理客户端的事件监听和数据收集。在.NET MVC项目中,你可以在视图层(Views)中使用内联JS或外部JS文件,结合jQuery或其他库来辅助处理DOM事件,并调用Zalldata SDK的JavaScript ...
### 智能客户端(SC)、胖客户端(RC)、瘦客户端(TC)的深度解析 在信息技术领域,客户端架构的选择是构建高效、可扩展及用户体验友好的应用的关键。本文将深入探讨三种主流的客户端架构——瘦客户端(Thin ...
2. **WebSocket客户端库**:在前端代码中集成,用于建立与服务器的WebSocket连接,发送埋点事件。 3. **埋点脚本**:在前端页面中,对用户的交互行为进行捕获和封装,形成埋点数据,然后通过WebSocket发送。 4. **...
本项目聚焦于使用C#模拟多客户端程序,能够处理超过1000个并发客户端连接,这对于测试服务器的负载能力、性能分析以及分布式系统的设计至关重要。下面将详细介绍这个项目涉及的关键知识点。 1. C#多线程:为了实现...
实施埋点时,⽆需研发⼈员介⼊,产品运营可以直接在⽹站或 移动应⽤的真实界⾯上操作埋点,⽽且埋点之后⽴即可以验证埋点是否正确,并且,埋点部署到所有客户端也是⼏乎实时⽣效的。同样的,可视化埋点也有很多局限...
以下将详细讲解Oracle 19c Windows客户端的关键知识点: 1. **Oracle Client**: Oracle客户端是连接到Oracle数据库服务器的软件组件,它包含了SQL*Plus、Net Services、Oracle Instant Client等工具,使用户能在...
超级详实的优酷质量保障秘籍,包括优酷的质量体系建设、算法实践、研发效能、客户端埋点质量保障三步曲、服务端的引流对比等内容,是优酷在质量体系建设方面的最佳实践。
**N2N Windows客户端软件详解** N2N(Node to Node)是一种点对点的网络通信技术,旨在提供安全、高效的数据传输服务。N2N客户端是实现这一技术的软件工具,它允许用户在不同的设备之间建立直接的、加密的连接进行...
WebDAV客户端是用于与WebDAV服务器交互的软件,使得用户可以如同操作本地文件系统一样操作远程服务器上的文件。 标题中的"webdav客户端中文版"指的是支持中文界面的WebDAV客户端软件,这为中文用户提供了更加友好的...
【Steam客户端】是全球最大的数字游戏分发平台,由Valve公司开发,提供数千款游戏的购买、下载、更新及社区交流服务。本资源为2022年的Steam客户端离线安装包,无需付费或积分,只需点赞即可获取。下面将详细介绍...
Oracle 11g客户端是Oracle数据库的一个重要组成部分,主要用于与Oracle服务器进行通信,提供数据查询、数据管理等操作。在64位系统中,Oracle 11g客户端为用户提供了全面的功能,支持高性能的数据访问和应用程序开发...
Oracle客户端是用于与Oracle数据库服务器交互的软件工具,主要功能是提供对数据库的查询、更新、管理等操作。Oracle客户端支持多种操作系统,包括Windows,且有32位和64位之分。在这个场景中,我们关注的是"Oracle...
深澜宽带认证客户端是专为杭州师范大学设计的一款网络接入工具,它集成了中国移动、中国联通和中国电信三大运营商的服务,旨在为在校师生提供一个高效且便捷的网络认证方式。这个客户端简化了传统的宽带连接步骤,...