构建之法-15-稳定和发布阶段

稳定和发布阶段

本章主要介绍软件项目的会诊(Triage),软件按时发布的招数:DCR、ZBB,以及项目的总结和回顾。


15.1 从代码完成到发布

从软件的代码完成(Code Complete)到最后发布,我们要经历哪些步骤,先了解一下几个基本概念:

Alpha:指集成了主要功能的第一个试用版本。在这个版本中有些小功能并未实现。事实上很多软件的Alpha版本只是在内部使用。给外部用户使用的Alpha版本会起一个比较美妙的名字,例如,技术预览版(Tech-nical Preview),等等。

Beta:功能基本完备,稳定性较Alpha版本高,用户可以在实际工作中小范围使用,可以有Beta1、Beta2、Beta3……

ZBB(Zero Bug Build):某天的版本要把在之前(例如48小时前)记录的Bug都解决掉。

RC(Release Candidate):发布候选版本,RC1、RC2……直到RTM为止,版本间隔时间较短。

RTM(Release To Manufacturer):最终发布版本。如果某一个RC版本没有很大的问题,那么这一RC就会成为最终的版本,通常情况下,软件公司会把最终的版本和相关的文件及其他资料交给另一个团队(Manu-facturer)去包装、刻制光盘。在AppStore/Marketplace的年代,我们有相应的RTM(Release To Market)。

RTW(Release To Web):和RTM类似,对于网络应用来说,我们无须依赖“Manufacturer/Market”制作软件的光盘或者管理软件的发布渠道,但是要依赖“Web”来发布我们的最终版本。如果软件产品是一个网站服务,则一般会交给网站运营团队(Opera-tion Team)去管理,这样的发布也可以叫做RTO(Release To Operation),运营团队和研发团队一起决定什么时候系统上线(Go Live)。把软件提交到各个应用商店则可以称为Release To Store。

从代码完成到最终发布软件
15.1.1 会诊小组(Triage Team)

软件团队的各个角色代表(PM/Dev/Test/UX等)组成了会诊小组,处理每一个影响产品发布的问题。

修复(Fix)//小组同意修复一个问题。
设计本来如此(As Designed)//用户或测试人员可能对功能有误解,或者功能的解释不完备。
不修复(Won't Fix)//这是一个问题,但是这个软件版本不打算修复。
推迟(Postpone)//如果我们的软件是真正解决用户问题的,是有价值的,那它一定会有下一个版本。在大型复杂项目中,软件团队还会进行更为复杂的会诊工作。

15.1.2 复杂项目的会诊

第一步:开发者提交参加会诊的Bug和修改方案,以及伙伴测试结果。

  1. Bug是什么;
  2. 危害是什么,如果不修复,有何后果;
  3. 用户会有什么变通办法;
  4. 是否经过代码复审,是否经过伙伴测试。

第二步:会议决定是否同意修改方案。决定哪些缺陷必须现在就进行修复,哪些可以推迟到下一个里程碑。

  1. Must——必须修复,缺陷很严重,修复方案可行,相关的测试都通过。
  2. More Info——需要更多的信息,可能的原因有:1)缺陷的影响不明确,例如,这个缺陷是在任何情况下都发生,还是只在某一特定情况下才出现?后果如何?因此不能马上做出决定;2)相关的测试不完备;3)解决方案有缺陷(会诊会议成员可以复审解决方案和代码的改动)。
  3. No——不能接受,可能是推到下一个里程碑,可能是提出的解决方案不符合要求。
  4. Like——可能,不一定必须修复,但是解决方案相对比较安全。

第三步:执行。

15.1.3 招数:设计变更(Design Change Request, DCR)

经过Alpha/Beta阶段,得到的用户的反馈,需要做一些改进工作。项目的当前阶段是一个阻尼振荡的过程,要收敛和稳定。等到下一个版本开始的时候再进行发散的思考。如果你觉得目前的设计有问题,我们要用DCR来管理。

如何提出DCR?

在DCR的描述文字中,说明:
a. 问题在哪里,问题的影响;
b. 如果不修改,会有什么后果?
c. 几种修改方案,各种方案的优缺点和成本。

如何决定DCR的执行次序?

1)会诊所有DCR。
2)按照影响、成本排序,得到一个自上而下的名单,根据现有资源,按照名单执行。

15.1.4 招数:Zero Bug Build,ZBB

ZBB = Zero BugBuild,即这一版本的构建把所有已知的Bug都解决掉了。Zero Bug Bounce:通常在一个ZBB之后,Bug数目会以惊人的速度反弹,故称Bounce。系统要经历几次反弹,像阻尼振荡一样,Bug的数目在反弹了几次之后,最后固定在(或者无限逼近于)0。

Bug ZBB趋势图,横坐标是构建的版本号
15.1.5 招数:最后回归测试

项目临近结束时,所有人员(开发、管理、测试)都要回归测试所有的Bug。每个人都要帮助团队确保这些Bug的确是被修复了,而且别的更改没有导致功能的“回归”。为便于管理,我们可以考虑新增一个字段,标记某个Bug已做过回归测试。

15.1.6 招数:砍掉功能

有一个模块看来不能实现预期的设计需求,时间快到了,怎么办?砍!

三个愿望不能同时满足

15.1.7 招数:修复Bug的门槛逐渐提高

Beta期间,修复Bug的门槛要逐渐提高。在Alpha阶段,如果开发人员拿到一个Bug,那他/她就可以马上去修复,只是在签入之后告诉大家做了什么样的修改。

15.1.8 招数:逐步冻结

随着程序功能的完善,我们要让程序的各个方面有次序地“冻结”,这样才能把稳定的软件交付给用户。


15.2 不同频率和不同覆盖范围的渐进发布

上文提到的Alpha,Beta,Beta1,Beta2等发布方式,发布的间隔是一个月以上,一般来说,后一个发布是前一个版本的升级,发布的目标人群也类似。

以MIUI为例,MIUI有三个更新频率,一天一更新,面对的用户大概是几千个,这个用户组我们叫荣誉内测组;一周一更新,面对几百万用户,这个组叫开发组;一个月一更新,面对的是90%的普通用户,有几千万,推出的版本叫稳定版。


15.3 发布之后——事后诸葛亮会议

牢记会议的核心问题:“如果你可以重新来过,什么方面可以做得更好?”

例如:软件发布后用户报告了一个大问题。“为什么?
因为程序没有考虑某种边界条件。“为什么在测试阶段没有测出来?”
因为这个代码是测试的最后阶段才加进去的。“为什么不通知PM/Test?”
因为Dev认为没有问题的,是很简单的修改。“为什么不通知别人?”
因为Dev认为那些都是软件工程无聊的规定……Dev是大牛人,不必遵守的。“为什么?!”
问到这个层次,就把问题根源暴露出来了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容

  • 1.问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。 首先,将问题提...
    qianyewhy阅读 9,230评论 4 123
  • 最近发现其实很多基础知识也是很重要的,通过各种渠道搜索整理如下: β测试_Beta测试 β测试,英文是Beta t...
    优雅的猪阅读 3,278评论 1 20
  • -----转载----- 1、问:你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决? ...
    花开沉浮阅读 7,340评论 4 88
  • 什么是软件测试 在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程...
    CT9955阅读 6,166评论 2 21
  • 1****、问:你在测试中发现了一个bug****,但是开发经理认为这不是一个bug****,你应该怎样解决?首先...
    一箭阅读 9,056评论 1 205