作者: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. 简单理解cookie/session机制(转)

    http://www.woshipm.com/pd/864133.html cookie与session应用于互联网中的一项基本技术--会话(用户与客户端的交互)跟踪技术,用来跟踪用户的整个会话.简单 ...

  2. 重学Java(二):对象无处不在

    前言 本系列文章内容来自于<Thinking in Java>作者的最新续作<On Java>基础卷,作者根据最新 Java 8.11.17的内容,重讲了Java的编程思想,值 ...

  3. 【Javaweb】tomcat目录介绍

    bin 专门用来存放tomcat服务器的可执行程序 conf 专门用来存放tomcat服务器的配置文件 lib 专门用来存放tomcat服务器的jar包 logs 专门用来存放tomcat服务器运行时 ...

  4. 在.net中通过自定义LoggerProvider将日志保存到数据库方法(以mysql为例)

    在.NET中,Microsoft.Extensions.Logging是一个灵活的日志库,它允许你将日志信息记录到各种不同的目标,包括数据库.在这个示例中,我将详细介绍如何使用Microsoft.Ex ...

  5. 必知必会Java

    你好,我是阿光. 最近想着把工作中使用过的java命令都梳理一下,方便日后查阅.虽然这类文章很多,但自己梳理总结后,还是会有一些新的收获.这也是这篇笔记的由来. 今天先聊聊 jps 命令. 命令概述 ...

  6. vue-test ------class绑定

    <template> <p :class="{'active':isActive}">Class样式绑定</p> <p :class=&q ...

  7. 2 与HTTP相关的各种概念

    目录 1 与HTTP相关的各种应用 1 网络世界 2 浏览器 3 Web服务器 4 CDN 5 爬虫 2 与HTTP相关的各种协议 1 HTML 2 编程语言 3 WebService 4 WAF 1 ...

  8. yarn的常用命令

    yarn 安装 npm install -g yarn 查看版本 yarn -v 开始一个新工程 yarn init 与 npm init 一样通过交互式会话创建一个 package.json yar ...

  9. 操作系统大作业:在Linux环境下模拟实现简单命令解释器(代码部分)

    好家伙   1. 题目要求 一.   课程设计(大作业)目的 熟悉Linux编程环境,加强对Linux命令的理解及函数的运用,完成一个操作系统的部分系统的设计过程.编码.调试,锻炼实际应用能力. 二. ...

  10. ElasticSearch之cat indices API

    命令样例如下: curl -X GET "https://localhost:9200/_cat/indices?v=true&pretty" --cacert $ES_H ...