从分层复⽤用到⾃自动化测试—看美团客户端架构的演变
2020-03-01 252浏览
- 1.从分层复⽤用到⾃自动化测试—看美 团客户端架构的演变 梁梁⼠士兴 美团点评 研究员
- 2.
- 3.
- 4.
- 5.梁梁⼠士兴 美团点评 研究员 梁梁⼠士兴,2009年年毕业于北北京航空航天⼤大学。毕业后在IBM中国研发中⼼心⼯工作了了5 年年。2014年年7⽉月份加⼊入到美团点评,现任职为技术研究员。 美旅基础服务平台负责⼈人,经历了了美团客户端业务架构演变的全部过程。因⽽而对 客户端的业务架构有了了进⼀一步的理理解和思考,愿意与⼤大家进⾏行行分享。
- 6.• 为什什么要建设客户端架构 • 美团客户端架构演变的三个阶段 • • 原始状态—⼤大团购模式 • 业务隔离 & 基础设施、开发范式、多应⽤用复⽤用 • ⼯工程⾃自动化 未来的发展⽅方向
- 7.客户端业务架构的背景 ⼩小型App ⼤大型App 主要业务载体 ⼩小团队 研发团队规模达 数百⼈人 不不定期更更新 ⾼高频率迭代更更新
- 8.客户端业务架构的收益 聚焦业务逻辑 统⼀一的基础设施 标准化 统⼀一化 灵活⼈人⼒力力调配 统⼀一的逻辑分层 新业务快速启动 统⼀一的开发范式 ⾃自动化取代⼈人⼯工 更更好的服务 业务
- 9.美团客户端的技术体系 线上阶段 研发阶段 开发 业务逻辑 开发范式 业务开发 模块化框架 测试 ⾃自动化测试⽤用例例 MVVM MVP 构建集成 FRP 扫码 账户 城市 分享 ⽀支付 UGC 桥协议 布局 图⽚片 基础 离线化 设施 地图 定位 ⽹网络 存储 埋点 业务 组件 技术栈 构建 ⻛风控 ⾃自动化测试框架 ⽹网络监控 监控 体系 业务指标监控 Crash监控 容器器监控 性能指标监控
- 10.美团客户端架构发展的3个阶段 v0 v1.0 v1.1 v2 蛮荒阶段 业务隔离 基础设施 开发范式 ⾃自动化 v1.2 多应⽤用 复⽤用
- 11.v0. 蛮荒阶段 美⻝⾷食 电影 • 万物皆为团购 • 最“经典”的架构形式 • 单⼀一研发团队 • 业务遍地开花 • 移动⽀支付占⽐比超过 90% 酒店 团购 其它 旅游 外卖
- 12.⾯面临的挑战 业务 业务差异化—需要深度定制 团队规模急速扩张 协同效率 研发团队拆分到各个业务 不不同业务间⼲干扰严重
- 13.v1.0. 解决问题—业务隔离 & 基础设施 酒 店 旅 游 美 ⻝⾷食 外 卖 平台基础设施 电 影 新 业 务 • 提供公共基础设施 • 各个业务之间解耦、物理理隔离 • 对新业务的接⼊入保持开放
- 14.阶段性困难与收益 痛点 收益 建议 业务解耦 ⼯工作量量⼤大 业务间消除⼲干扰 提供标准业务模板 开发同时进⾏行行重构 各业务独⽴立编译 新业务做⼩小⽩白⿏鼠 App⼆二进制集成 短期可以接受代码拷⻉贝⾏行行为
- 15.v1.0. 复盘 进步的地⽅方 仍需改进 问题本质 业务层⾯面:业务间实现了了隔离,消除 了了⼲干扰 开发层⾯面没有实现标准 化,代码复⽤用依然困难 要想开发层⾯面的标准化 需要制定开发范式 ⼯工程层⾯面:实现了了⼯工程标准化,新业 务接⼊入⽅方式实现了了标准化 ⼀一线团队研发效率并没 有显著提升 技术层⾯面:独⽴立编译 + ⼆二进制集成, ⼤大幅提升App的构建效率
- 16.v1.1. 统⼀一开发范式背景 茴: ①回 ②囘 ③囬 ④廻 ⑤廽 ⑥逥 茴有六种写法,好像孔⼄乙⼰己也没学全! 同⼀一需求在客户端的实现⽅方法,恐怕不不⽌止六种! 业务模块的接⼝口设计,恐怕要更更加混乱!! 开发范式⽬目标:书同⽂文,⻋车同轨 实现开发⽅方式统⼀一化,业务模块接⼝口标准化
- 17.v1.1. 统⼀一开发范式实践 UI与模块 相对应 ⻚页⾯面(模块容器器) View 数据映射 命令执⾏行行 模块 模块 模块 模块 模块内部 更更新 通知 ViewModel 消 息 总 线 Model Presenter 模块 测试程序 测试数据 模块 ⾃自动化测试
- 18.v1.1. 统⼀一开发范式收益 对⽐比不不同阶段,效率、⾼高阶⼯工程师的变化: ⾼高阶⼯工程师需求降低 开发效率明显提升: 模块复⽤用成为常态 业务线1 2014.7 业务线2 2016.12 独⽴立App 2017.8 标准⼯工作量量/标准⼈人⼒力力 X/Y 2X/1.5Y 8X/2Y 效率对⽐比 100% 133% 400% ⾼高阶⼯工程⽐比例例 ⾼高阶 低阶
- 19.v1.1. 统⼀一开发范式的困难 困难 建议 代码重构成本⾼高 新需求涉及的⻚页⾯面同步重构 开发同时进⾏行行重构
- 20.v1.2. 与点评合并带来的全新挑战 技术栈不不统⼀一 业务 组件 基础 设施 后端服务不不统⼀一 扫码 账户 城市 分享 ⽀支付 UGC 桥协议 布局 图⽚片 离线化 定位 ⽹网络 地图 存储 埋点 ⻛风控 把XX功能整体从美团 迁移到点评,就改改样式, 应该很快吧!!! 公共参数 数据格式 交互样式不不统⼀一 主题 交互 …
- 21.v1.2. 多应⽤用复⽤用 美团 其它 业务 基础服务抽象层 美团基础服务 点评基础服务 抽象基础服务 隔离基础设施差异带来的影响 美团 专属 ⼆二 进 制 接 ⼊入 美团 专属 业务 点评 复⽤用业 务 复⽤用 酒旅基础设施 公共基 础服务 基础服务抽象层 美团基础服务 美团旅⾏行行 美团 专属 业务 点评 专属 点评 专属 业务 复⽤用业 务 其它 业务 酒旅基础设施 隔离 基础服务抽象层 公共基 础服务 点评基础服务 ⾃自动化测试⼯工程 复⽤用业 务 测试⽤用例例 酒旅基础设施 复⽤用业务 构建过程隔离差异化部分 公共基 础服务 基础服务抽象层 美团基础服务 酒旅⾃自动化测试基础服务 美团⼯工程 点评⼯工程 ⼆二 进 制 接 ⼊入
- 22.v1.2. 多应⽤用复⽤用收益 多APP复⽤用需求呈现常态化 开发时间 迁移时间 代码复⽤用率 60PD 100% 45PD 75% 30PD 50% 15PD 25% 0PD 0% 统⼀一架构之前 iOS需求1 iOS需求1 Android需求1 Android需求2
- 23.如何进⼀一步提升研发效率? 标准化 ⾃自动化
- 24.针对什什么做⾃自动化? 测试周期分解 新功能测试 测试阶段 迭 代 周 期 回归测试 发布前验证 新功能测试 回归测试 发布前验证 • 开发阶段时间占⽐比 UI开发 开发阶段 业务逻辑开发 ⽹网络开发 API联调 业务逻辑开发 UI开发 ⽹网络开发 API联调 • ⾃自动化测试 代码脚⼿手架
- 25.⾃自动化测试⽅方法—业务特点 多种⼊入⼝口 ⾸首⻚页 搜索 运营活动 … 信息展示型⻚页⾯面 主流程 列列表 详情 购买 售后 两种 ⻚页⾯面 类型 占⽐比80% 测试关注展示⾏行行为 交互逻辑型⻚页⾯面 占⽐比20% 通常对质量量要求更更⾼高 测试关注程序逻辑 信息增值服务 攻略略 地图 相册 …
- 26.⾃自动化测试的⽅方法 ⼈人⼯工测试 ⿊黑盒 ⽩白盒 UI⾃自动化测试 UI截屏测试 信息展示型⻚页⾯面 ⾯面向UI接⼝口 交互逻辑型⻚页⾯面 集成测试 单元测试
- 27.⾃自动化测试三部曲 设置上下⽂文环境 模拟⽤用户操作 校验结果
- 28.截屏测试⽅方案 参考图 实际效果图 设置上下⽂文环境: Diff分析 数据打桩,模拟登录层出, 设置时间…… 模拟⽤用户操作: 展示UI,滚动屏幕,点击按 钮…… 校验结果: 截屏 & 图⽚片⽐比较
- 29.⾯面向UI接⼝口的集成测试 调⽤用功能 ViewModel App视⻆角 Model View Presenter 展示数据 ! 设置上下⽂文环境:# 模拟⽤用户操作:! 调 ⽤用 功 能 " 校 验 状 态 记录Request Mock Response TestCase 校验结果:" $ 测试⽤用例例视⻆角 #设置测试数据 TestData $校验Request
- 30.⾃自动化测试的挑战 逻辑交互型 信息展示型 ⼈人⼒力力投⼊入 Case失效率 30% 开发测试⽤用例例⼈人⼒力力投⼊入 20% 10% 成本 测试⽤用例例的维护成本 CI单次执⾏行行时间 执⾏行行效率 CI执⾏行行成功率 0% 问题:构建 + 执⾏行行 约 30分钟 优化⽅方案:复⽤用⼆二进制构建结果 效果:6分钟 问题:15%概率失败 优化⽅方案: 优化CI执⾏行行逻辑,引⼊入重试机制
- 31.⾃自动化测试带来的收益 线上质量量提升 故障数量量下降,故障等级降低 研发效率提升 减少了了⼈人⼯工测试成本,进⽽而提升迭代频率
- 32.未来展望 • 测试管理理平台 • 代码脚⼿手架 场景1: ⽇日常测试 场景2: 新需求测试 多机型验证 报Bug 更更新Case 报Bug 确认Case 场景3: 集中测试 新机型 报Bug 确认Case
- 33.邮箱:liangshixing@meituan.com 微信号:liangshixing