• 1
  • 1
分享

曾经有一个乐队在他们的演出条款中明确的写道:演出前,承办方必须提供巧克力豆,但绝对不许出现棕色豆;如有违反,乐队立即取消演出。

相信不少的同学在看到这个条款的时候第一反应都是,搞艺术的人怪癖真多!!!

真相是,多年后,这个乐队的主唱范·海伦在自传中揭晓这一霸王条款的来由:“乐队怎样检测承办方的重视程度?这似乎很难!而把棕色巧克力豆的条款夹在合同里,就是确认承办方是否认真阅读了所有条款的一个办法!在合同中巧妙‘布雷’,如果承办方不幸中招儿,那就没得谈!”事实上,这一条款出台后,乐队再没有为安全问题伤过脑筋。

上述这种Event Tracking的方式放在互联网应用中,俗称就是“埋点”。

从IT开发的角度出发,当应用系统(网站、App等)投入运营后,在做用户行为分析的时候需要去挖掘核心业务功能使用情况时,往往会需要在应用的代码中添加一些额外的代码来采集数据,这就是所谓的“埋点”。包括访问数(Visits),访客数(Visitor),停留时长(Time On Site),页面浏览数(Page Views)和跳出率(Bounce Rate)等。

这样的信息收集可以大致分为三大类目标数据:

1、行为数据:时间、地点、人物、交互、交互的内容; 

2、质量数据:浏览器加载情况、错误异常等; 

3、环境数据:浏览器相关的元数据以及地理、运营商等;

埋点的方法除了在产品研发的时候直接在程序里嵌入代码统计搭建自己的平台以供查询以外,也有利用第三方统计工具(如友盟、神策、GrowingIO、谷歌的Google Analytics等)。但是不管哪一种埋点方式也不管哪一种埋点机理,在数据埋点以后还需要做的非常关键的一件事情就是埋点测试,从测试人员的角度来看,更准确一点的说法为“埋点数据的测试”。

以下为网上盛传的知乎埋点测试的流程图,从图中可以看出测试人员主要是依据埋点需求进行数据的测试,也就是通常我们说的Checking而非Testing。

1.png

知乎埋点测试流程.jpg


埋点数据的注意事项

  • 埋点数据的一致性:埋点数据的值需要注意客户端和服务端的一致性,包括编码格式、大小写、全角半角、发送时机等。

  • 编码格式:埋点数据的值为中文时,尤其要注意编码格式。为了避免服务端解析数据出错,一般情况下,客户端需要对发出的数据进行编码格式转化;

  • 大小写:埋点数据的值在命名时要和服务端数据组同步命名规则,尤其是大小写;

  • 全角半角:埋点数据的值为英文时,常常容易忽略全角半角的输入方式,有时候会因此产生无法接收的错误;

  • 数据格式:埋点数据的数据格式在定义时要简单明了,尤其是非实时数据的发送机制,发出的数据量大且同一条埋点发出好多,需要整合;

  • 发送时机:埋点数据发送往往是一个公共功能,且发送时机一般情况下分为两种:实时和非实时。因此将数据发送功能作为一个单独的模块存在,其他功能调用即可,避免所有模块在发送时各自处理,增加测试成本;

  • 埋点数据的命名规则:埋点数据的规范化命名规则有利于数据的阅读和查看,比如页面点击的就用Page开头,区域的用Label开头作为前缀;


在规范化埋点数据的一致性后,还需要针对埋点数据的正确性进行检验。埋点数据又可以分为四个类型:展现类、点击类、状态类和计数类。

  • 展现类的埋点。最关键的在于避免重复统计。比如在某宝搜索“华为手机”时,当用户输入了“华为MATE10手机”和“华为MATE10”出来的效果几乎是一样的,失去了统计的意义。

  • 点击类的埋点。关键在于避免服务器超时的情况下连续点击导致的重复统计。

  • 状态类埋点。关键在于避免统计默认状态。并且状态类埋点统计的一定是最终的状态。例如,由开切换到关,那么最后发出的状态数据一定是关闭的状态。

  • 计数类埋点。关键在于避免遗漏。一般情况下,非实时发送的计数埋点容易出现遗漏情况,因为涉及到数据库的读写。因此在测试时要格外留意。

因此,大家可以看出埋点数据的正确性更多的是需要在埋点设计的前期就对需求进行正确性、合理性的考虑,埋点数据的一致性更多体现在实现的技术上对数据一致性的校验。


另外,还有一些特别的注意事项:

  • 网页缓存:对于web页面的埋点统计,要考虑到web页缓存的问题。例如,资讯详情页有停留时长的统计,当进入资讯详情页时开始计时统计,不在该页面时结束统计,那么此时我们就要考虑到在前后台相互切换时是否存在多发的情况,之前浏览器遇到的问题就是将缓存页的时长页做了统计一并发送到了服务器。

  • 网络环境:当网络特别差的时候,客户端发送埋点失败,这种情况下应该将发送失败的数据保存在本地,等下次条件满足的时候一并发出。避免出现丢掉数据的情况。

  • 覆盖安装:产品升级之后,升级之前的埋点不能被删除掉,应该保存在本地,待升级之后满足条件一并发出。

  • 服务端压力:数据发送有实时和非实时两种,当实时数据量特别大时容易给服务器造成压力,因此在测试时要特别留意。

举一个小例子,拿经常使用埋点的移动端平台来说,比如我们需要查看Android平台的埋点是否有效时,前提准备是有Android平台的ddms环境(可以使用androidstudio,或者直接使用android sdk里带的monitor)和埋点字段表(这是开发埋点的依据,以及产品分析的标准)


测试方法为: 

1、调起monitor之后,连接移动设备 

2、设置logcat的filter,填写包名即可 

3、取已埋点的安装包并且输出app埋点的日志 

4、查看埋点字段表,执行对应有埋点的操作

比如埋点字段表中,需要监测的埋点为点击首页中的“下一步”时

2.png

埋点字段表

5、进入手机上的app,点击 下一步

6、查看ddms的logcat,即可看到操作的日志,如图所示:

3.png

logcat的日志

7、检查埋点是否正确,出现错误的情况一般是:

a)漏埋点

b)埋点和操作类型不对应,比如点击的是“下一步”,却上报了“返回”

c)埋点和操作频率不对应,比如只操作了一次,却上报了两次

关于埋点测试也可以做自动化的考虑,知乎,阿里等公司都出了对应于自己公司的埋点自动化测试工具,后续同学们要有兴趣也可以继续的八一八。

以上是关于埋点测试的一些归纳总结和思考,若有做埋点测试的同学也欢迎大家一起来讨论和分享。


版权声明:本文出自51Testing原创,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   Selenium是当前最流行的Web UI自动化测试框架,熟悉Selenium的人也知道,Selenium是基于WebDriver。那么能不能不用Selenium,直接调用WebDriver来实现Web UI自动化呢?答案当然是可以的,本文就带你来实现基于WebDriver的Web U自动化。本文通过调用Selenium、Curl命令、直接调用ChromeDriver三种方式,实现了同样的功能。编程语言为C#,已在Visual Studio 2019测试通过,其他主流编程语言也可以完成同样功能。对比三种实现方式,大家就可以容易的理解如何不用Selenium而直接调用WebDriver完成W...
            12 12 773
            分享
          •   最近后台收到一些:咨询关于性能测试相关的问题,绝大部分原因是公司要求做性能测试,领导要求写一份性能测试计划,无奈没有接触过相关工作,无从下手,非常着急。这篇文章,分享一些性能测试的干货,全都是知识点,不容错过!  近10年,技术迭代最为迅速,彻彻底底改变了人类社会的生活方式,中国互联网从无到有,发展迅猛。互联网用户量激增,已由原来的4增长至8亿+。面对当下的局势,用户体验自然就成为了互联网产品面临的最大考验。  分析近年来的系统崩溃翻车事故,得出结论:性能是影响用户体验的最重要因素。  一、什么是性能测试  通俗来说:利用性能测试工具或者代码对系统的相关性能指标进行的测试,用来评估系统的性...
            0 0 900
            分享
          •   继猎豹移动CEO傅盛与金沙江创投董事总经理朱啸虎“互怼”后,朱啸虎又发了朋友圈解释了一番。  他表示,昨天的对话造成很多误解,其实我们应该是国内垂直AIGC真正出手最多的早期投资人(这句话在对话中被故意删掉了)。  其核心观点为不要迷信通用大模型,“明年3.5就成commodity,3年后4也将是commodity!对于大部分创业者,场景优先,数据为王!”朱啸虎称。作者:佚名原文链接:新浪科技_新浪网(sina.com.cn)
            0 0 973
            分享
          •   测试设计规范是一个定义了与测试项目相关的测试条件、详细的测试方法和高级测试用例的文档。它确定了要运行哪些测试套件和测试用例,以及要跳过哪些。  使用测试设计规范,可以简化对当前测试周期的理解。这个文档回答了像“我们在做什么?”,“我们怎么做?”和“为什么要这样做?”这样的简单问题。然而,要达到这个结果,必须正确地将许多事物融入到创建规范中,使其变得完美合理。  在软件行业中,"规范"这个词对任何人来说可能并不陌生。根据理论定义,规范是关于设计和制造某物所涉及的详细描述和材料。规范已经采取了多种形式,并为不同部门提供了多种不同的服务。对于开发者来说,软件需求规范(SRS)...
            0 0 235
            分享
          •   01测试基础的重要性  假如你是一位测试新人,测试基础知识对你来讲是十分重要。我这里所指的基础知识,不简单地仅仅讲什么是软件测试、软件测试的目的,而是测试用例的设计能力。  软件测试用例的测试方法有哪些?  答:等价类、边界值、因果图等等。  需要结合实际的业务场景,来讲说较常用到的测试用例设计的方法。  答:不少回复都是以登录来做说明的。  换句话说平常工作中,较常用到的用例设计也就那样几种,假如大家能把理论好好应用到实际工作中,那么涨薪换句话说也很容易。  那么,大家怎样才能设计好的测试用例呢?  需要结合实际的业务场景设计用例十分重要,用例中并非涉及当今的功能,还需要把上下游关联的业...
            0 0 933
            分享
      • 51testing软件测试圈微信