作者: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. html5学习内容-6(flex)

    弹性布局–flex (一)视口单位主要包括以下4个: vw:1vw等于视口宽度的1% vh:1vh等于视口高度的1% vmin:选取vm和vh中最小的那个 vmax:选取vm和vh中最大的那个 常用于 ...

  2. A-B数对 (hash映射)

    题目大意: 第一行输入N,C 第二行输入n个数字 输出,求A - B = C的数对个数 样例 4 1 1 1 2 3 输出 3 思路:用STL容器map,map<num, times>,建 ...

  3. Linux配置静态IP解决无法访问网络问题

    Linux系统安装成功之后只是单机无网络状态,我们需要配置Linux静态IP来确保服务器可以正常连接互联网 1.首先安装ifconfig Centos7安装成功后,高版本会把ping命令给移除了,所以 ...

  4. 【uniapp】学习笔记day02 | uniapp搭建

    起因:需要做一个小程序,家人们谁懂啊,老师我真的不会做,由于懒得看视频学习,于是只能看博客学习了. uniapp 好处: 1.不用关心适配问题 2.可以发布到各大平台的小程序 3.上手容易,使用vue ...

  5. Mysql中的FOREIGN_KEY_CHECKS方法【外键约束作用】

    一.命令行 首先FOREIGN_KEY_CHECKS方法的作用是用来启动和关闭外键约束的方法. 二.外键约束 即数据库中两个数据表之间的某个列建立的一种联系.MySQL通过外键约束的引入,可以使得数据 ...

  6. Opencv学习笔记(3)

    Opencv库常见函数 1.读取指定图片 语法:cv2.imread()函数可以用于读取指定图片,使用时需要先导入opencv库 1 import cv2 # 导入opencv库 2 sample = ...

  7. 系统监控:使用日志文件 journalctl的使用

    journalctl 显示最近登录的: 上面有最近登录的时间,和系统操作 几十年来,Linux日志记录一直由syslogd守护进程管理.Syslogd将收集系统处理和应用程序发送到/dev/log伪设 ...

  8. 一篇文章带你掌握性能测试工具——Jmeter

    一篇文章带你掌握性能测试工具--Jmeter 在目前的中大型企业中,仅仅进行功能测试已经不足以满足企业的需求,在重大客户基数下性能测试将会直接影响到用户体验 所以在这篇文章中我们将会学习性能测试的相关 ...

  9. [ABC263E] Sugoroku 3

    Problem Statement There are $N$ squares called Square $1$ though Square $N$. You start on Square $1$ ...

  10. TCP连接断开:为什么要挥手四次

    本文分享自华为云社区<解密TCP连接断开:四次挥手的奥秘和数据传输的安全>,作者: 努力的小雨 . TCP 连接断开 在当今数字化时代,互联网已经成为了人们生活中不可或缺的一部分.而在互联 ...