作者 | 阿里文娱技术专家 成文

责编 | 屠敏

研发效能期望

随着敏捷、DevOps 等概念的兴起,研发效能成为企业关注的重点,但是研发效能面临的问题和挑战也与日俱增。尤其在互联网行业,版本需要快速迭代,业务与系统越来越复杂,质量和效率经常被放到对立面,随着团队规模越来越大,成百上千人的高效协同面临巨大挑战,研发效能导致的问题形成恶性循环。

本文将结合优酷近两年遇到的研发效能问题分享一下优酷在研发效能领域的实战经验。

问题与挑战

随着移动时代的到来,优酷的主战场也聚焦到以手机、Pad 为主的小屏客户端,以及家庭 电视的大屏客户端。在移动端领域,因为 UI 交互变化快,自动化维护成本高,行业普遍还是以手工测试为主,大部分团队的开发质量意识薄弱,甚至不自测也不提测,研发流程混乱,沟通 成本高。在整个研发过程中每个团队都觉得自己繁忙且“高效”,然而站在全局视角团队整体的研发效能却显得非常迟缓。针对这些问题,大家通常会想到以下三个方案:

1)规范流程,与开发达成一致,形成文档,大家按照约定执行;

2)数据驱动,通过收集各种数据反映研发效能问题,改进不足;

3)自动化,把日常部分重复工作转化成自动化脚本,降低回归成本。这三个方案在初期比较容易取得一些效果,但是到了中后期各自的新的问题和挑战就会逐

渐凸显出来:

1)流程规范靠约定,执行效果很难量化;执行完全依赖个人,约束力不强;

2)数据颗粒度比较粗,反应的问题比较片面;数据与研发流程脱节,很难形成驱动力;另 外,数据的收集成本也在持续增加;

3)自动化一直在投入,但是取到的效果很难衡量;与研发流程脱节,关键节点依靠人来衔 接,自动化的价值难以发挥。

优酷最佳实践

为研发效能提效,优酷也是围绕上面三个方案展开,只不过我们巧妙的把三个方案融合成 一个方案,并融入到不同的研发流程当中。

1. 提测流程

我们首先做的就是把提测流程平台化,把线下的文档形式的规范搬到线上。不走线上提测 拒绝测试,把必须提供的信息设置成必填项,不满足提测要求的提测单打回,在很短时间就统 一了所有业务线的提测标准。

我们打通了打包平台和需求管理平台,对于开发来说只要选包选需求提测即可,大部分提 测单中的信息可根据包信息和代码变更信息自动汇总,反而给开发减少了很多额外的工作。测试收到提测单扫码安装下载后测试,再给测试结论即可。

其次,还有提测卡口功能。测试可以提供手工自测用例给开发,开发在提测时必须先完成 手工用例并通过所有测试才能提测。因为直接融入在提测流程中,所以约束力非常强,让开发 被动提高质量意识。

再次,更酷的是提测流程与自动化融合。与自动化平台打通后,自动化不仅作为测试的一 种减轻回归成本的工具,更作为一种服务化的能力融入到流程中。比较常见的套路是:提测后 自动触发冒烟自动化,通过后才发送提测通知,再自动触发已配置的其他类型的自动化任务, 如稳定性测试、功能回归、性能回归等。当然开发也可以在提测前选一个包就直接使用这些测 试服务,自动化的价值被充分挖掘出来。提测流程,如下图所示:

最后,在平台的使用过程中自动沉淀了非常多的数据,提测次数、提测通过率等对测试形 成比较好的保护,开发的质量意识增强。

2. 移动端研发 Pipeline

随着业务复杂度增高,团队规模扩大,每个版本参与集成的模块可能多达上百个,研发过 程各环节都可能成为瓶颈,高效协同仅靠提测流程很难保证。我们依旧采用三合一的策略,只 不过把整个研发流程,从需求确认到提测到集成到发布全部搬到线上,串联打通各个平台,实 现研发流程的全面数字化。如下图所示:

首先,建立好产品、业务、版本、提测区的基础关系。PMO 在产品中新建版本,各业务接 口人在业务中新建提测区并关联所属产品的版本,产品在提测区关联的需求项目里确认需求, 开发在提测区提测,测试在提测区关联的缺陷项目中管理缺陷。不同角色依旧在各平台按照自 己的方式工作,只不过因为我们维护了研发流程中数据的关系,数据的意义变得大不一样:

1)数据不需要刻意去手工收集,在日常工作中自动沉淀,在版本视角自动汇总各业务情况;

2)数据不是孤立的点,可以传递给上下游。比如产品在需求管理确认需求,开发在提测环 节直接选需求提测,提测以后状态可再同步至需求管理平台;

3)数据融入在流程里,作为关键环节的卡口,驱动力强,不需要等到版本复盘的时候才看。

其次,建立 Pipeline 的过程其实就是在建立各阶段标准的过程,结果不好往往是过程做的不到位。就好比“束水攻沙”,定好标准收紧河道,让水流动更快,把问题和风险尽早暴露出来。以缺陷关闭率为例,如果业务在缺陷关闭率不达标的情况下参与集成,集成效率一定很低,但 实际上这个问题应该在开发测试阶段就解决好。通过设置缺陷关闭率的集成卡口,在集成阶段 到来就前提前预警,让开发和测试人员尽早解决缺陷关闭率不达标的问题。经过一段时间的实 践,我们各业务在集成阶段的缺陷关闭率达标情况得到明显改善,集成效率也得到显著提升。

最后,研发流程各个环节都可以与自动化有机结合,有更灵活的触发规则:集成自动触发、 回归通知自动触发、灰度发布自动触发等。对于性能自动化的结果可以基于版本设立基线,与 自己与行业对比,自动生成版本性能报告。

研发流程规范、数据驱动、自动化三者关系密切,相辅相成,研发效能改进需要有全局视 野,需要结合研发流程让规范落地,需要结合数据驱动变得更智能,需要结合自动化进一步释 放人力,三者融为一体才能更好形成研发效能持续改进的动力。

研发效能展望

研发效能改进和看病救人有很多相似之处,讲究望闻问切,对症下药。两千多年前,《黄帝 内经》就提出“上医治未病,中医治欲病,下医治已病”的理论。目前我们才刚刚摸到“中医治欲病”的门槛,但是要达到“上医治未病”,研发过程还需要不断往前,从编码设计、从系统 架构、从需求上入手,做到防患未然。

【End】

热 文 推 荐

联合国为何 Pick 腾讯?

☞红外光抗疫、成功预测新基建,投资 280 家企业的光学博士到底是谁?

前端机器学习:识别人脸,并在脸颊上画草莓

☞瑞幸咖啡自曝虚假交易 22 亿,App 反冲 TOP 1

☞在Kubernetes上部署一个简单的、类PaaS的平台,原来这么容易!

☞旷视提双边分支网络BBN:攻坚长尾分布的现实世界任务 | CVPR 2020 Oral

☞2020年,这20个大家都认识的加密交易所过得怎么样?

你点的每个“在看”,我都认真当成了喜欢

提升研发效能没那么难,看优酷的最佳实践!相关推荐

  1. 如何通过 Siri 播放视频?且看优酷技术接入实践

    作者 | 阿里文娱高级无线开发工程师 子荀 责编 | 屠敏 随着 iOS 13 的正式发布,SiriKit 开始支持音视频内容播放.例如,用户说"Hey Siri,使用优酷播放<乡村爱 ...

  2. 从阿里巴巴B2B的技术实践看互联网企业如何提升研发效能

    DT时代,企业业务已全面互联网化,而流程复杂.项目周期长.各角色协作成本大的传统研发模式,已逐渐成为企业业务快速发展的绊脚石.如果企业可以在业务需求不断变化的情况下,快速的推进业务上线,接受市场和用户 ...

  3. 看优酷 Node 重构之路,Serverless SSR 未来可期

    在2017年底,优酷只有Passport和土豆的部分页面用Node.js,PC和H5核心页面还都是PHP模板渲染.而最近2年,基于阿里巴巴的技术体系,我们对PC.H5多端进行了技术改造.在2019年, ...

  4. 鸿蒙开发者公测版本bug,用华为鸿蒙看优酷无广告:明显是BUG,不是特意搞的噱头...

    随着华为对公测用户推送鸿蒙 OS 2.0 开发者 Beta 公测版,越来越多的用户体验到了鸿蒙系统了. 而从体验来看,很多人表示,与安卓相比,操作逻辑,甚至功能界面都基本相似,但在流畅度上却比安卓强, ...

  5. MacBook Pro 安装了flash Player,还是不能看优酷土豆视频

    最近买了部苹果电脑,可是突然想到要去优酷网上看看视频,结果,说电脑没有安装flash插件!所以就按着步骤一步一步的去安装,一切都很顺利,可是就在我重启完之后想去看视频的时候,却发现空白一片,什么都没有 ...

  6. 优酷鸿蒙开发实践|多屏互动开发实践

    作者:玉追 & 以绳 优酷与华为长期保持着良好的战略合作关系,旨在为消费者带来优质的影音娱乐体验.鸿蒙操作系统的流转特性为多屏互动带来了全新的玩法,本文以优酷播放中心的技术储备为切入点,结合鸿 ...

  7. (转)性能调优和问题诊断最佳实践,第 1 部分

    DB2 最佳实践 原文:https://www.ibm.com/developerworks/cn/data/library/techarticles/dm-0903perfbp1/ 性能调优和问题诊 ...

  8. DB2 最佳实践: 性能调优和问题诊断最佳实践

    最佳实践的相关文章可见:http://www.ibm.com/developerworks/cn/data/bestpractices/ DB2 最佳实践: 性能调优和问题诊断最佳实践,第 1 部分 ...

  9. 优酷鸿蒙开发实践 | 鸿蒙卡片开发

    作者:苎麻 " 如标题所述,我们将持续更新<优酷鸿蒙开发实践>系列文章.本文为系列首篇技术文章,后续文章包括:鸿蒙/Android混合打包技术实践,多屏互动技术实践等,欢迎持续关 ...

最新文章

  1. 三维目标检测算法原理
  2. SegmentFault 助力 Uber Hackathon
  3. 【Android】【转】查看内存
  4. PHP扩展开发 - 构建第一个PHP扩展
  5. Another kind of Fibonacci
  6. 使用TortoiseGit操作分支的创建与合并
  7. LeetCode之Maximum Depth of Binary Tree
  8. 阿里云正式推出内容平台“云栖号”:全面助力企业和个人上云决策
  9. 服务器sxs文件通用的吗,win10x sources sxs文件有什么作用
  10. 如何让Jython自动加载一个Jar包
  11. 用C#编写一个进程外的COM组件示例代码讲解
  12. 牛客练习赛20(ABC)
  13. 3D slider 项目经验
  14. BZOJ5192[Usaco2018 Feb] New Barns
  15. php中文歌词,酷狗krc歌词解析并转换为lrc歌词php版
  16. 用java输入学生姓名查询成绩_java实现学生成绩录入系统
  17. 计算机第二课堂教学计划,小学第二课堂教学计划
  18. 白牌交换机有哪些特点?和传统交换机比有什么特别?—Vecloud
  19. c++入门 有关《c++关键字》 《命名空间》《缺省参数》《函数重载》《引用》《内联函数》《outo关键字》
  20. 【034】基于51单片机的HX711电子秤Proteus仿真设计

热门文章

  1. 基于ssh的多节点之间互信通信的实现
  2. 查看嵌入式设备的CPU频率
  3. 跟闺密逛街 越逛越穷
  4. SQL Server 查询处理中的各个阶段
  5. 电脑怎么测试硬盘的读写速度_电脑硬盘这麽多到底该怎么选?硬盘的各类分类你知道吗...
  6. 实验代码复现过程记录
  7. 计算机应用基础课程是过程化考试吗,基于能力的计算机应用基础课程过程化考核标准构建与实施.doc...
  8. Dart基础-变量与类型
  9. 中国塑溶胶密封剂行业市场供需与战略研究报告
  10. 中国抗疲劳鞋类行业市场供需与战略研究报告