作者:DataTester
 
用户体验是决定互联网产品能否长久生存的关键,每一个基于产品功能、使用和外观的微小体验,都将极大地影响用户留存和满意度。
 
对于企业协作平台飞书而言,用户体验旅程从打开产品页面的一瞬间就已开始,这里有一个十分重要的指标——页面秒开率,秒开率是指页面在一秒之内打开的比率。飞书为了提升用户体验,对其各项功能的秒开率优化下了大功夫,通过应用火山引擎A/B测试(DataTester)进行严格的变量控制,落地精准的实验结果,帮助研发团队佐证并明确了秒开率优化方案的收益。
 
 
影响秒开率其实有很多种因素,如代码冗余,插件拖累…… 在其中,有一项重要的影响因素是“类加载”。类加载是指当页面被打开时,背后是调用的多个元素的代码,它们会经历验证、准备、解析、初始化等环节后,才能被使用,这个流程是比较耗费时间的。
 
以飞书的一项功能“飞书妙记”加载为例,当飞书整体进行冷启动时,如果用户是首次打开飞书妙记界面,就会伴随着接近1600个类的大量加载,这对页面启动速度有着不可忽视的影响。如何减少如此高的类加载数量对秒开率的影响呢?飞书团队希望尝试采用的方案是:接入SnapBoost方案。
 
SnapBoost方案的思路是让app能够提前对页面使用到的"类"进行加载,通俗来说,也就是在用户打开页面之前,将耗时较长的部分提前进行加载,当用户在打开页面的时候,这些代码省去了编译和解析的时间,可以直接执行,使秒开率得到提升。
 
那么SnapBoost方案是否能有效降低“飞书妙记”的加载时间呢?飞书团队采用了火山引擎A/B测试(DataTester)进行方案可行性的重要验证。
 
本次A/B实验三大指标:
  • 类加载数量
  • Activity切换耗时 :Activity通常指一个单独的屏幕(页面),此指标指在不同页面之间的切换耗时。
  • 可感知耗时 :指用户操作相关动作(点击播放、滑动卡片等)到首帧渲染出来感知到的耗时。
 
优化前后收益验证:
 
火山引擎DataTester的实验结果,对SnapBoost方案的提升性能假设给予了强有力的佐证,通过SnapBoost方案等一系列优化,飞书妙记的秒开率可以达成37%的优化提升,目前该方案已经成功地进行了全量上线。
 
“ DataTester是结合A/B测试方法论最好的一个工具。”飞书的研发成员在采访时讲到,在性能优化的A/B实验上,DataTester能提供更加严格的变量控制和更加智能化的实验形式,业务可以便捷地获得有说服力的实验结果。
 

企业研发场景如何应用A/B测试

飞书的案例是一个A/B实验应用在研发场景的典型例子。市场对于常规A/B测试的常规印象是“产品优化的利器”,如产品页面UI优化、产品策略优化等;但区别于常规印象,火山引擎A/B测试DataTester也可应用在多种研发场景中,包括算法优化、性能优化、模型优化、灰度发布场景等。
 
DataTester提供了丰富的研发场景模板,依托深入业务打磨的扎实的产品能力,可以帮助企业提升研发层面的效率和决策准确率。
 

算法优化

各类算法优化是DataTester应用场景最频繁的地方之一,算法开发人员可以通过A/B测试来验证新的算法或者算法优化是否可以提升对应业务指标。抖音的推荐算法、广告算法、千人千面等设置,无一不是经历了DataTester的多轮验证。而包括推荐、搜索、精准广告、精细化运营等涉及到算法的产品和业务也都可以应用A/B测试技术。
 

性能优化

在产品演进与迭代的过程中,常常会出现由于发展迅速导致的历史遗留问题加重。如代码冗余、分支版本多难维护等情况,产品需要对代码进行清理,对产品组件进行优化,火山引擎DataTester能够帮助验证产品性能优化的结果,避免在优化过程中出现bug导致产品发生严重负面影响。
 
此外,对于一些影响用户体验的场景,例如观看视频、播放歌曲时的快速加载,这种性能优化的场景在DataTester中也提供了相应的应用模板,业务可以快速上线多种策略并查看其对关键性能指标的影响。
 

服务迭代

当一些服务前端代码需要进行迭代时,会面临一旦出现问题,对用户范围影响较广的风险。此时也可通过火山引擎DataTester去验证服务的稳定性。例如抖音电商要对商家后台进行升级,改造主要涉及的是多个商家平台基础的接口,他们首先会选择接入DataTester,用A/B测试来实验接口变化后对产品稳定性的影响。
 

灰度发布

当产品有新功能上线后,如果线上服务一旦出现问题,需要做到及时回滚,DataTester的智能发布能力适配这一场景。产品在新功能上线出现问题需回滚时,只需应用DataTester智能发布能力或关闭实验,或关闭服务端的 TCC 开关,就能将所有流量立即回滚到旧的服务上,保障灰度发布场景下出现问题时的用户体验。
 
 

火山引擎A/B测试核心模块介绍

扎实的实验能力背后,是因为有完备产品架构支撑。火山引擎DataTester作为一站式全栈多场景实验平台,产品结构纵深丰富,并可以基于先进的底层算法,提供科学分流能力和智能的统计引擎。
 
DataTester产品整体分为5层结构:
在应用层,DataTester服务的行业非常广泛,除了互联网行业之外,还包括金融、消费品、零售行业、汽车行业,以及泛互联网行业中的细分子领域。这些领域有很多工作场景都可采用A/B测试提效,如广告优化、落地页营销优化和用户推送优化、画布触达优化等实验。
在接入层和会话层,通过DataTester的分流服务能聚合业务的多种线上触点,包括但不限于服务端、客户端、小程序及广告投放平台触点的接入。 中间层是DataTester最重要的功能层,这里可以划分为三大模块:
模块一是实验管理相关模块,包括实验管控,涵盖实验从设计到发布的全流程,也包括实验的报告及其中丰富的数据分析功能,以及相关的实验的工具,这一模块是DataTester最基础的部分。
模块二是智能发布(Feature Flag),A/B测试如何生效不同的策略,如何智能化完成实验的配置、生效和发布,均由这一模块完成。
模块三是A/B测试场景化的应用,DataTester提供了多样化的实验方式和实验模板。
 
最后的数据层,DataTester除了SDK的采集之外,还支持数据集成的能力,可以集成的数据包括但不仅限于有客户端的用户行为、服务端的埋点,还有业务的第三方平台数据亦可支持。同时DataTester也会产出用户进组的信息,来将业务数据和用户进组数据链接在一起,方便A/B实验的开启。
 
火山引擎DataTester起源于字节跳动内部的数智实践,在字节内部已经服务了500多条业务线,10余年间在字节跳动开启的实验总量已超过150万次。同时,DataTester现已服务了美的、得到、凯叔讲故事等在内的上百家外部企业,支持了多个行业、多种业务场景的需求,为业务的运行、转化、增长等各环节提供了科学的决策依据,将成熟的“数据驱动增长”经验赋能给各行业。

从飞书妙记秒开率提升,看火山引擎A/B测试在研发场景的应用的更多相关文章

  1. 火山引擎MARS-APM Plus x 飞书 |降低线上OOM,提高App性能稳定性

    通过使用火山引擎MARS-APM Plus的memory graph功能,飞书研发团队有效分析定位问题线上case多达30例,线上OOM率降低到了0.8‰,降幅达到60%.大幅提升了用户体验,为飞书的 ...

  2. 基于uniapp框架开发飞书小程序总结

    前期准备 飞书官方客户端文档:https://open.feishu.cn/document/home/intro 飞书官方工具资源文档:https://open.feishu.cn/document ...

  3. Worktile正式入驻飞书,助力企业轻松实现敏捷开发与协作

    企业在敏捷研发中时常面临着交付延期.需求不匹配等问题,如何更高效地完成敏捷研发? Worktile携手飞书,为企业用户提供敏捷开发服务,帮助企业实现软件项目的需求管理.缺陷追踪.迭代规划与推进以及效能 ...

  4. Python调用飞书发送消息

    一.创建飞书机器人 自定义飞书机器人操作步骤,具体详见飞书官方文档:<机器人 | 如何在群聊中使用机器人?>

  5. JustAuth 1.15.9 版发布,支持飞书、喜马拉雅、企业微信网页登录

    新增 修复并正式启用 飞书 平台的第三方登录 AuthToken 类中新增 refreshTokenExpireIn 记录 refresh token 的有效期 PR 合并 Github #101:支 ...

  6. Jenkins+Allure测试报告+飞书机器人发送通知

    一.前言 之前讲了jenkins如何设置定时任务执行脚本,结合实际情况,本篇讲述在jenkins构建成功后,如何生成测试报告,以及推送飞书(因为我公司用的是飞书,所以是发送到飞书机器人). 本次实践搞 ...

  7. 飞书前端提到的竞态问题,在 Android 上怎么解决?

    请点赞关注,你的支持对我意义重大. Hi,我是小彭.本文已收录到 GitHub · AndroidFamily 中.这里有 Android 进阶成长知识体系,有志同道合的朋友,关注公众号 [彭旭锐] ...

  8. GPT接入飞书

    GPT接入飞书 在体验ChatGPT这方面,我算是晚的.使用下来,更多的是对于这种应用形式感到兴奋,而不是ChatGPT的专业能力. 得知OpenAI提供GPT3的Api接口后,我想到了将其接入团队飞 ...

  9. Python发送飞书消息

    #!/usr/bin/python3.8 # -*- coding:UTF-8 -*- import os, sys sys.path.append(os.path.dirname(os.path.a ...

  10. prometheus 对接飞书告警

    prometheus对接飞书告警 环境 名称 ip地址 cpu 内存 yz-feishu 10.65.6.91 4c 8G 飞书创建群组机器人,参考飞书官网 https://www.feishu.cn ...

随机推荐

  1. ❤️接近两万字 CSS之熟练掌握background,这一次帮你彻底弄懂背景属性❤️(建议收藏)

    作者:WangMin 格言:努力做好自己喜欢的每一件事 在项目中为了网页的美观,通常会给网页或者某个元素设置背景,这时就会用到 CSS中background属性 来实现这个效果,这个属性是一个很基本的 ...

  2. Qt源码解析——一切从QObject说起

    关键词:Qt 源码 QObject 元对象 属性 事件 信号 槽 状态机 概述 原系列文章地址 学习和理解任何框架或库,官方文档可能都是最权威.最有效的信息.Qt也不例外,https://doc.qt ...

  3. 一键整合,万用万灵,Python3.10项目嵌入式一键整合包的制作(Embed)

    我们知道Python是一门解释型语言,项目运行时需要依赖Python解释器,并且有时候需要安装项目中对应的三方依赖库.对于专业的Python开发者来说,可以直接通过pip命令进行安装即可.但是如果是分 ...

  4. iOS程序入口结构

    盛年不重来,一日难再晨.及时宜自勉,岁月不待人. 1. 程序入口   在我们开始开发app的时候,第一步往往是通过设置AppDelegate.m的代理方法开始写一些启动的东西,然后再通过控制器View ...

  5. UIPath初识和安装

    即使没有人为你鼓掌,也要优雅的谢幕,感谢自己的认真付出. 一. UiPath组成   学习UiPath,我们一定先要了解Studio,Robot和Orchestrator这3个重要组成部分. UiPa ...

  6. Java核心知识体系7:线程安全性讨论

    Java核心知识体系1:泛型机制详解 Java核心知识体系2:注解机制详解 Java核心知识体系3:异常机制详解 Java核心知识体系4:AOP原理和切面应用 Java核心知识体系5:反射机制详解 J ...

  7. 【Javaweb】什么是Listener监听器?

    1.Listener监听器它是Javaweb的三大组件之一.Javaweb的三大组件分别是:Servelt程序,Filter过滤器,Listener监听器. 2.Listener它是JavaEE的规范 ...

  8. 报错Error running 'Tomcat 9.0.68': Can't find catalina.jar【解决办法】

    修改tomcat路径,肯定是你移动了jar包在硬盘的位置 将路径改成当前所在的文件位置

  9. K8s 多租户方案的挑战与价值

    在当今企业环境中,随着业务的快速增长和多样化,服务器和云资源的管理会越来越让人头疼.K8s 虽然很强大,但在处理多个部门或团队的业务部署需求时,如果缺乏有效的多租户支持,在效率和资源管理方面都会不尽如 ...

  10. Educational Codeforces Round 101 (Rated for Div. 2) E - A Bit Similar

    题目传送门 很巧妙的一道题.对于一个 \(n\)位的 \(01\)字符串,一共有 \(2^n\)种不同字符排列,对于任意一个固定排列,在 \(2^n\)种排列中只有一种排列与该固定排列处处不等,而题干 ...