ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

得物自动化评测平台:量化推荐体验,从感知到交互的全链路实践

得物自动化评测平台:量化推荐体验,从感知到交互的全链路实践 1. 项目概述当“感觉”变成“数据”我们如何量化体验在电商和内容平台我们常听到“千人千面”的推荐系统。但一个更根本的问题常常被忽略我们怎么知道这个“千人千面”的推荐对每个用户来说体验是变好了还是变坏了过去评估推荐效果严重依赖线上A/B测试的宏观指标比如点击率、转化率。这些指标固然重要但它们像是“后视镜”只能告诉你用户最终做了什么却无法告诉你用户“为什么”这么做以及在整个浏览过程中的“感受”如何。一个推荐结果用户可能因为别无选择而点击也可能因为界面混乱而放弃浏览这些细微的体验损耗是宏观指标难以捕捉的盲区。得物自动化评测平台的诞生正是为了照亮这片盲区。它的核心目标是将原本依赖人工主观判断、难以规模化衡量的“推荐体验”转化为一套客观、可量化、可自动化回归的数字化评估体系。这不仅仅是技术工具的升级更是一种思维范式的转变从只看结果的“黑盒”评估转向深入过程、理解体验的“白盒”洞察。对于所有依赖算法进行内容分发和商品推荐的团队而言构建这样一套平台意味着拥有了衡量算法迭代价值的“标尺”以及提前发现体验风险的“探针”。接下来我将深入拆解这套平台从设计思路到技术落地的完整实践。2. 平台核心设计思路构建体验的“数字孪生”2.1 从“指标驱动”到“体验驱动”的评估范式转变传统的推荐评估是典型的“指标驱动”。我们设定几个核心业务指标如CTR、CVR、GMV通过A/B实验看哪个策略的指标更优。这种方式有两个显著弊端一是滞后性一个策略全量上线后才发现对用户体验有长期损害为时已晚二是片面性指标提升可能源于某些短期刺激或流量倾斜未必代表真实体验改善。自动化评测平台的设计首要任务是实现“体验驱动”。这意味着我们需要为“体验”这个抽象概念建立可测量的模型。我们的思路是将其分解为三个层次感知层用户第一眼看到推荐结果时的直观感受。这包括列表的多样性、新颖性、相关性是否符合预期。例如连续推荐10件同款不同色的T恤多样性就差给老用户反复推荐他已经购买过的商品新颖性就低。交互层用户在浏览推荐列表过程中的行为顺畅度。这包括列表的加载速度、滑动流畅度、图文渲染是否准确、有无明显错误信息如价格缺失、图片裂图。任何卡顿或错误都会直接打断体验流。价值层推荐结果最终为用户带来的实际效用。这超越了点击关注深度转化如收藏、加购、下单以及长期价值如用户留存、复访率。但平台更侧重于在前两个层次进行前置化、高频次的检测。平台的目标就是将这三个层次的体验转化为一系列可计算的“体验指标”并搭建一个能自动模拟用户、执行交互、采集并分析这些指标的流水线。2.2 自动化、平台化与标准化的核心三角明确了“体验驱动”的方向后平台架构围绕三个核心原则展开自动化这是平台的基石。人工评测效率低、一致性差、无法应对海量场景。我们需要实现从“用例生成”-“任务执行”-“结果收集”-“报告生成”的全流程自动化。特别是任务执行需要模拟真实用户的操作点击、滑动这要求与移动端或Web端有稳定的自动化交互能力。平台化避免烟囱式的脚本开发。平台需要提供统一的用例管理、任务调度、资源管理、数据看板和报警能力。算法工程师、测试工程师、产品经理都能在同一个平台上创建评测任务、查看体验报告形成协同闭环。平台化也意味着可扩展性能够方便地接入新的评测维度或业务场景。标准化定义统一的体验指标体系和评测协议。不同业务线如潮流社区feed流、电商商品推荐的体验关注点不同但底层指标如加载耗时、错误率可以标准化。平台需要提供一套标准的指标计算SDK和结果上报格式确保数据口径一致具备可比性。注意在平台设计初期最容易犯的错误是“过度设计”试图一次性定义所有体验指标。我们的经验是优先落地那些“高价值、可测量、强相关”的指标。例如“列表滑动丢帧率”比一个模糊的“视觉舒适度”更容易测量且与用户体验强相关。从这些核心指标切入快速跑通闭环再逐步丰富指标体系。3. 关键技术栈与核心模块解析3.1 端到端自动化测试框架选型与融合模拟用户交互是平台的技术难点。我们面对的是得物App这样复杂的原生移动应用涉及大量Native页面、Hybrid页面以及丰富的动效。单一的测试框架难以满足所有需求。我们的方案是进行融合UI自动化驱动层对于核心的、稳定的Native页面交互我们选用Appium作为底层驱动。它支持Android和iOS社区成熟能够稳定地执行点击、滑动、获取页面元素等操作。我们对其进行了深度封装统一了双端操作接口并增加了重试、超时控制、异常截图等增强逻辑。性能与渲染洞察层UI自动化可以完成“操作”但难以精准捕获“性能”。为此我们接入了PerfDog等性能SDK或使用系统自带的性能工具如Android的adb shell dumpsys gfxinfo、iOS的Instruments在自动化操作过程中同步采集FPS帧率、CPU占用、内存消耗、网络请求等性能数据。这让我们能将用户操作与设备资源消耗直接关联。专项能力补充对于某些特殊场景如图像识别验证图文是否匹配、音频检测等我们会引入像OpenCV用于简单图像相似度对比或定制化的检测脚本作为补充。技术挑战与应对最大的挑战是稳定性。移动端环境复杂弹窗、网络切换、系统中断都会导致自动化脚本失败。我们采取了多重保障智能等待与元素查找策略结合显式等待和自定义等待条件避免硬性sleep。元素查找采用多属性组合如id、xpath、accessibilityId并设置备用查找路径。场景恢复机制当检测到脚本执行异常如元素未找到、应用崩溃不是直接失败而是尝试恢复场景如重启App、回到首页并记录此次异常作为“体验负向指标”的一部分。设备农场管理与调度搭建基于STF或Selenium Grid理念的私有化设备云统一管理大量测试设备实现任务队列调度和负载均衡确保测试任务能高效、并行执行。3.2 体验指标体系的量化建模这是平台的核心“算法”部分。我们将体验拆解为多个维度并为每个维度设计可计算的指标体验维度核心指标举例计算方式与说明内容质量重复率统计推荐列表如前20项中内容ID或高度相似内容的出现比例。新鲜度统计列表中新发布内容如24小时内的占比。相关性得分基于用户历史行为画像通过模型如向量相似度计算列表整体与用户兴趣的匹配度。交互性能首屏加载时间从发起推荐请求到首屏内容完全渲染完成的时间。滑动流畅度FPS用户快速滑动列表时平均帧率是否低于阈值如55fps。交互响应时间点击某个推荐项到详情页打开的时间。界面呈现渲染错误率列表中图片加载失败、价格信息缺失、布局错乱等问题的比例。信息完整性检查关键信息字段如价格、标题、主图是否存在且符合规范。业务规则过滤项泄漏率检查用户已设置“不感兴趣”或已购买的商品是否仍被推荐。多样性分布检查类目、品牌、价格段等分布的均匀性避免过度集中。指标计算实践这些指标的计算并非都在“事后”。我们将计算逻辑嵌入到自动化测试的不同阶段请求/响应阶段通过代理或Mock服务器拦截推荐请求和返回的列表数据实时计算内容质量和业务规则类指标。渲染/交互阶段在自动化脚本操作过程中通过截图OCR、元素树分析、性能工具采集界面呈现和交互性能类指标。数据上报与聚合所有指标数据连同上下文用户ID、场景、时间戳、推荐策略版本统一上报到时序数据库如InfluxDB或大数据平台如Hive。平台后端负责按任务维度进行聚合、对比和趋势分析。3.3 平台架构与数据流设计平台整体采用微服务架构保证各模块解耦和高可用性。任务管理与调度中心接收用户通过Web界面创建的评测任务。任务包含评测场景如“首页推荐流”、评测策略版本A/B策略、目标设备、执行频率等。调度中心将任务分解为具体的执行作业下发到设备资源池。设备资源池与执行器由大量真实手机设备组成的集群每个设备上运行着统一的自动化执行器Agent。Agent接收作业驱动手机安装指定版本的App执行编排好的自动化用例脚本并同步收集性能数据和日志。数据采集与处理管道执行器收集的原始数据日志、性能数据、截图被实时上传到消息队列如Kafka。后续有多个消费者服务一个服务处理性能日志计算FPS、内存等指标一个服务处理业务日志计算重复率、新鲜度等指标还有一个服务负责对截图进行图像分析检测渲染问题。指标存储与计算引擎计算后的指标数据存入时序数据库便于快速查询和展示趋势。复杂的、需要关联用户历史行为的指标如长期兴趣相关性则通过定时任务在大数据平台进行离线计算结果再回填。可视化看板与报警服务基于Grafana或自研看板提供多维度的数据可视化。可以对比不同策略版本的指标差异查看指标随时间的变化趋势。平台还集成了报警规则当核心体验指标如错误率、FPS劣化超过阈值时自动通过钉钉、企业微信等渠道通知负责人。实操心得数据流的设计中唯一标识的贯穿至关重要。我们为每一次评测任务生成一个唯一的task_id这个ID会贯穿从任务创建、设备执行、数据上报到最终报告生成的整个链路。这样当发现某个指标异常时可以快速回溯到是哪个任务、在哪台设备、执行了哪个用例、当时的网络环境和设备状态如何极大提升了排查效率。4. 典型评测场景与自动化实践4.1 场景一推荐策略迭代的体验回归这是平台最高频的使用场景。算法团队开发了一个新的推荐模型或排序策略在线上A/B测试之前需要先在评测平台进行一轮“体验回归”。操作流程创建对比任务在平台选择“首页推荐流”场景分别绑定线上基线策略A和待测新策略B的服务接口。定义评测用户选择一批具有不同特征如新用户、活跃用户、沉寂用户的模拟用户账号或使用脱敏的真实用户画像。执行自动化用例平台调度设备使用这些用户身份登录自动化执行预设的“浏览首页推荐流”用例向下滑动N屏随机点击几个商品返回继续滑动。数据收集与对比平台自动收集两套策略下的所有体验指标并生成对比报告。报告关键洞察“策略B的列表首屏加载时间平均增加了50ms需要检查模型复杂度。”“策略B的推荐重复率从5%下降到了2%多样性有明显改善。”“策略B在低端机型上的滑动FPS平均值低于策略A存在性能风险。”通过这份报告算法团队可以在上线前就对新策略的体验影响有一个量化的、全面的认识并针对性地进行优化。4.2 场景二客户端发版前后的体验监控每次App发版客户端代码的改动都可能无意中影响推荐链路的体验例如图片加载组件升级可能导致渲染变慢。实践方案 我们建立了与CI/CD流水线集成的自动化关卡。在打包完成之后上线之前自动触发一轮针对核心推荐场景的“发版体验评测”。基准线使用线上稳定版本的App包和线上推荐服务。待测线使用本次即将发布的新版本App包和同样的线上推荐服务。执行在同一网络环境和同一批设备上并行执行相同的自动化用例。这样任何由客户端变更引起的体验差异如页面打开速度变慢、图片渲染出错都会被精准捕获并生成阻塞性报告要求开发人员排查修复后才能继续上线流程。4.3 场景三复杂用户路径的体验探查除了单点场景平台还支持编排复杂的、跨页面的用户旅程用例。示例用例“搜索商品 - 查看搜索结果列表 - 点击进入商品详情 - 查看详情页推荐 - 加购 - 返回首页 - 检查首页推荐是否更新”。 这个用例可以探查多个系统间的协同体验搜索与推荐的联动、详情页推荐的相关性、用户行为对实时推荐的影响等。自动化脚本会按照这个路径执行并在每个节点检查相应的体验指标。技术实现关键点这类跨页面用例的关键是状态管理。平台需要维护一个全局的会话上下文在不同页面间传递必要的状态信息如用户身份、搜索关键词、已加购商品ID以便后续的验证步骤能够正确执行。5. 落地挑战与效能提升实践5.1 稳定性攻坚让自动化测试值得信赖自动化测试尤其是UI自动化长期受困于“脆弱性”。我们的平台在初期也饱受非预期弹窗、网络抖动、设备异常等问题困扰导致任务通过率低。我们成立了一个虚拟的“稳定性攻坚小组”从以下几个层面系统性地解决问题环境隔离与净化设备专用化评测设备与开发测试设备物理隔离禁止安装无关App定期恢复出厂设置。网络专线搭建独立的测试网络减少公网波动影响并配置网络代理工具如Charles模拟弱网、断网场景提升脚本抗干扰能力。应用纯净安装每次任务执行前强制卸载旧版本安装指定版本的应用并跳过引导页、权限弹窗等初始化流程。脚本健壮性增强智能等待与重试摒弃固定的sleep采用“轮询查询超时”的方式等待关键元素出现。对于核心操作步骤封装带有指数退避算法的重试机制。异常场景库建立常见的异常场景库如升级弹窗、活动弹窗、网络错误提示并为每种场景编写恢复脚本。当主流程执行时有一个并行的监控线程负责检测并处理这些异常。检查点前置在执行关键操作前如点击按钮先检查目标元素是否处于可交互状态避免无效操作。结果分析与反馈闭环平台不仅记录任务成功与否更详细记录失败时的日志、截图和设备状态。我们开发了一个“失败分析看板”自动对失败用例进行聚类分析如“80%的失败源于网络超时”让维护者能优先解决共性问题。建立“稳定性分”制度为每个业务场景的自动化用例集打分并作为团队质量考核的参考驱动大家共同维护脚本健康度。5.2 从“成本中心”到“效能中心”的转变自动化平台建设初期投入大、见效慢容易被视为“成本中心”。为了体现其价值我们重点打造了两种效能场景1. 赋能算法快速迭代 我们与算法团队深度合作将平台集成到他们的模型训练和评估流程中。现在算法工程师在离线评估模型效果后可以一键触发线上体验评测30分钟内拿到一份包含数十项体验指标的详细报告。这让他们在策略上线前就能发现诸如“新模型导致列表过于激进多样性骤降”或“在低端机上响应延迟明显”等问题将体验优化前置大幅降低了线上实验的风险和成本。2. 建立体验质量门禁 我们将核心体验指标如首屏加载时间P95值、滑动卡顿率设置为研发流水线的质量门禁。每次代码合并请求Merge Request或每日夜间构建Nightly Build后都会自动触发核心场景的评测。如果某项指标劣化超过阈值如加载时间增加10%流水线会自动终止并通知代码提交者。这相当于为产品体验建立了一道“防火墙”防止体验在无形中持续劣化。避坑指南在设定质量门禁阈值时切忌“一刀切”。初期我们设定了过于严格的绝对值阈值如“FPS必须始终55”导致流水线频繁被无关紧要的微小波动阻断。后来我们改为更科学的“相对波动阈值”和“趋势判断”。例如“与近一周基线均值相比劣化不得超过5%”或者“连续三次构建均呈现劣化趋势”这样的规则更具鲁棒性也能真正捕捉到有问题的变更。6. 未来展望与迭代思考自动化评测平台的建设不是一劳永逸的工程而是一个需要持续运营和迭代的系统。回顾我们的实践有几点深刻的体会和未来的思考方向体会一工具易用性决定平台生命力。再强大的平台如果使用复杂就无法推广。我们花了大量精力优化Web操作界面提供“场景模板”让业务方一键创建任务将复杂的指标数据转化为直观的分数和红绿灯红/黄/绿标识并支持一键生成用于汇报的PPT图表。降低使用门槛才能让平台价值最大化。体会二数据解读能力比数据采集更重要。平台产生了海量数据但如何从中提炼出洞察是关键。我们正在引入一些根因分析RCA的初步能力。例如当“滑动流畅度”指标下跌时平台能自动关联分析同一时间段内的“CPU占用率”、“内存占用”和“网络请求耗时”等数据初步给出“可能是由于某张高清图加载阻塞主线程”之类的推测辅助研发人员快速定位。关于未来我们正在探索几个方向体验指标的智能化聚合目前我们有几十个指标有时会让人眼花缭乱。我们计划引入一些机器学习方法对指标进行降维和聚合尝试输出一个综合的“体验健康度分数”并解释这个分数主要受哪几个子指标影响让评估结论更聚焦。基于真实用户行为的用例生成当前的自动化用例多由专家预设可能无法覆盖所有用户真实路径。我们考虑通过埋点采集线上用户的真实高频操作序列将其自动转化为平台的测试用例让评测更贴近用户实际体验。更深度的可视化与交互分析探索结合更先进的渲染诊断工具不仅能报告FPS数据还能录制屏幕操作并生成交互的热力图和帧渲染时间线像“性能显微镜”一样让交互卡顿的根因无所遁形。构建自动化评测平台的过程是一个将“体验”这个感性认知不断拆解、量化、标准化的过程。它带来的最大价值是让“提升用户体验”从一个口号变成了一个所有团队产品、算法、研发、测试可以用同一套数据语言进行讨论、衡量和负责的日常工程实践。这条路没有终点但每一步都让产品的体验根基更加坚实。
返回列表