大规模实践埋点自动化测试框架设计

大数据时代,多数的web或app产品都会使用第三方或自己开发相应的数据系统,进行用户行为数据或其它信息数据的收集,在这个过程中,埋点是比较重要的一环。

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

  • 驱动决策:ABtest、漏斗优化、用户增长、bug修复、精准营销、流失用户预警

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

  • 驱动安全:风险识别

01、埋点测试分类

埋点测试,首先要了解埋点的分类。埋点主要分为:前端埋点、后端埋点

  • 前端埋点:

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

  • 后端埋点:

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

那么两者有什么区别呢?

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

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

02、埋点测试过程

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

  • 埋点上报:

    无论是前端埋点还是后端埋点,有没有正常按照相关规则进行上报,相关的事件名、属性值都是否完整正确上报,这个是需要关注的

  • 埋点落库:

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

03、埋点自动化测试设计

了解了埋点测试的分类和过程,再思考如何针对埋点进行自动化测试。首先埋点自动化测试与其它自动化测试的方案设计在目的层面应该是一致的,是为了更好的进行埋点回归测试,扩大埋点回归的覆盖率,特别是针对一些核心的埋点数据

例如一些埋点数据是转化相关数据,而转化数据直接跟核心业务相关,有些核心业务还会根据转化数据进行营销、销售、业绩等相关统计,埋点数据不准直接影响到这些东西。

那么如何进行埋点自动化测试设计呢?

可以进行分层设计

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

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

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

另外,还需要结合Jenkins进行持续集成,每天或每次发版前对所有埋点进行回归测试

最后感谢每一个认真阅读我文章的人!作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,坚持几天便放弃的感受的话,在这里我给大家分享一些软件测试的学习资源,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,希望能给你前进的路上带来帮助。如果你用得到的话可以直接拿走:

软件测试资料领取:[内部资源] 想拿年薪40W+的软件测试人员,这份资料必须领取~

软件测试面试刷题工具领取:软件测试面试刷题【800道面试题+答案免费刷】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

### 如何在代码中实现埋点事件设置的最佳实践 #### 基于可视化埋点的技术特点 通过使用易观方舟的可视化埋点技术,可以利用位置、属性等方式精确定位到事件触发元素,并能够灵活地获取与该事件相关的信息。这种技术不仅适用于安卓/IOS/JS等不同平台,还支持多种架构形式,如原生页面、Hybrid模式(App内嵌入网页),以及mPaaS/React Native等复杂场景[^1]。 #### 实现按钮点击事件的埋点 对于具体的埋点实现,可以通过JavaScript来捕获特定UI组件的行为。例如,在HTML文档中定义一个按钮,并为其绑定`click`事件监听器。当用户点击此按钮时,调用自定义函数`trackEvent`记录事件类型、按钮ID和时间戳: ```javascript // 跟踪按钮点击事件 const button = document.getElementById('myButton'); // 获取按钮元素 button.addEventListener('click', function() { trackEvent('button_click', { buttonId: 'myButton', timestamp: Date.now() }); // 记录点击事件并添加按钮ID和时间戳 }); ``` 上述代码展示了如何手动为单个DOM节点配置埋点逻辑[^2]。 #### 自动化工具的支持 如果项目规模较大或者希望减少人工干预,则可引入自动化解决方案,比如OpenTelemetry框架。一旦集成完成,它能够在后台自动收集诸如Spring MVC请求处理流程或数据库交互之类的性能指标数据而无需额外编码努力[^3]。 #### 完整生命周期管理策略 为了更高效地管理和维护整个系统的埋点功能,建议采用覆盖全生命周期的方法论来进行治理。这通常涉及以下几个方面: - **埋点设计**: 明确哪些业务动作需要被监测; - **埋点审核**: 确保新增加的数据采集不会影响现有系统稳定性; - **埋点开发&测试**: 开发相应接口并将其实现在应用程序里同时验证其准确性; - **埋点监控**: 长期观察实际运行状况以便及时调整优化[^4]。 以上各阶段紧密配合才能构建起一套健全有效的埋点体系。 ```python def example_track_event(event_type, properties): """ A Python-based mockup of a tracking event. Args: event_type (str): The type of the tracked event e.g., "page_view", "purchase". properties (dict): Additional information about this specific instance of an event. Returns: None """ import datetime log_entry = f"{datetime.datetime.utcnow().isoformat()} - Event Type:{event_type} Properties:{properties}" with open("/path/to/logfile.txt", mode='a') as file_handler: file_handler.write(log_entry + "\n") example_track_event("form_submit", {"userId": 12345}) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值