一个团队经历了计划/设计/开发等阶段,达到代码完成(Code Complete)这一目标,似乎后面的事情就水到渠成了。其实不然,软件生命周期的最后阶段往往是最考验团队的,不但考验团队项目管理水平、应变能力,也考验团队的“血型”。原计划的软件发布时间快到了,但是软件还是有各种问题,怎么办?优秀的软件团队会发布有已知缺陷的软件吗?在我看来,与人类的血型相似,软件团队也有“血型”,也可以分为4中。
A型:他们知道优秀的软件公司会发布有已知缺陷的软件
B型:他们不相信这一点
O型:他们不知道这一点,因此嘴巴惊讶成O型
AB型:他们对于自己开发的软件是A型,对于别人开发的软件是B型
所有的软件公司都希望在修正所有的缺陷之后再发布软件。但是,第一,什么叫“缺陷”?如果只是一些无关大局的问题,用户可以绕过去的,我们不一定非得马上解决第二,什么叫“改正”?如果修正方案中 又有“缺陷”怎么办?做商用软件的人都在为此苦恼,只有优秀的软件公司能找到一个平衡点,及时发布能够解决用户问题的软件并且能及时修改软件中的问题。
说道“质量”,我们不得不提“全面质量管理”,因为大家都讲“全面质量管理”,往往以为这我们的质量没有抓到点子上。有人会举出世界著名公司为了“完美”而不惜推迟发布时间的例子,例如苹果公司的一些产品,著名的游戏:“永远的毁灭男爵”,等等......请问:iPhone的第一个版本是完美的吗?他连复制粘贴的功能都没有,但他还是发布了。那么从软件的代码完成(Code Complete)到最后发布,我们要经历那些步骤,有哪些招数能让我们能以比较大的共识、比较小的痛苦走完这段流程?需要什么样血型的团队才能按时推出优秀的软件?
软件发布的流程:
1:提交测试
开发人员经过自测(单元测试)在handoff通过后提交测试代码,测试人员通过自动发布工具部署测试环境(alpha)
2:预发布
测试人员在alpha环境测试并跟踪修改bug达到上线标准(没有A、B级bug,C级bug少于20%)时开始部署beta环境,有测试发起邮件发布流程。
3:验收测试
测试人员对现有功能在beta上进行验收测试(重新执行case)。紧急bug修改走补丁/merge流程。不影响功能的bug留到下次版本解决。确认达到上线。
4:正式上线
测试人员发起,通知相关部门人员配合发起上线操作(具体走发布流程邮件)。
测试人员在线上进行冒烟测试,(紧急bug修改走补丁/merge流程。不影响功能的bug留到下次版本解决)。通过后回复邮件,发布结束。
5:总结报告
测试负责人编写测试总结报告。