持续交付的成功取决于四个前提条件。在此两部分的系列文章的第一篇中,专家讨论了固定下来的迭代式开发流程的重要性。而在本文中,专家聚焦于三种实践:自动化测试、基础设施即代码,以及过渡环境。
软件测试自动化不是“要么不做要么全做”。大多数团队自动化部分步骤,然后对部分进行人工测试。但持续交付要求更深入的自动化。为什么因为,按照定义,测试必须持续发生,而能有成本效益地管理它的唯一办法只有通过自动化,这是《精益理念》一书联合作者Tom Poppendieck的看法。每次有新的代码发布是测试ID偶会自动进行,确保不仅新代码有效工作,而且还可以与更大的代码库正确地集成到一起。“当软件测试在多个层次上进行时,进行变更的风险和成本会变得廉价许多,” Tom Poppendieck说。
测试过程自动化越多,实现持续交付软件的目标就更容易,销售配置管理软件的Puppet Labs的原型工程师Carl Caum如是说。他不是建议软件专业人士取消所有的人工测试,而是说他们应该朝着逐步深入推进自动化的方向前进。“你从接受测试开始。什么定义了我们软件的成功?首先写下你的接受条件,然后自动化这一测试流程。”
成功的关键是实时自动化。这往往意味着进行人工测试,然后在可能的情况下,将人工步骤变成自动化的步骤。他给出了一个例子:“你执行一些人工的、探索性测试。当你琢磨出一个需要每次都需要同样4个步骤的工作流时,自动化它,”他说:“第一次时是探索式的,第二次就是模式,第三次就可以自动化了。”持续交付需要自动化大部分的测试过程,移动工具制造商Telerik的首席战略官Stephen Forte说:“但到头来,对于那些面向公众的应用,你希望由人去看着屏幕。布局行不行?有没有拼写错误?”这些东西自动化测试是做不来的,他说。
前提条件:基础设施即代码
正如持续交付依靠自动化测试一样,它也得严重依赖于基础设施即代码这样的实践。这种做法是指在代码中表达生产环境状态的能力,而不是人工确定哪一台服务器运行软件的什么版本。“在过去,这个(过程)非常困难。上面要有(即时贴)活页夹,这种做法从来都跟不上形势,”Caum说。
Forrester Research 2014年10月的一份报告—“竞争压力推动现代应用交付的商业案例”也同意将基础设施表示为代码是持续交付的关键。非标准化的基础设施代价高昂:开发、测试和生产环境配置差异导致的分析生产环境事件所需付出的努力和成本是另一种不必要的浪费形式。标准化环境配置和自动化提供显著降低或解决了这个问题。
在持续交付中,用代码表示生产环境是发生在幕后的自动化持续的测试过程必不可少的下一步,Caum说:“你测试代码及其工作,但你需要了解部署在100台服务器时发生了什么。”
前提条件:过渡区
软件组织准备持续交付的最后一个前提条件时设立一个“过渡区”。“这个环境非常接近生产环境,但不是生产环境,”Caum说。这个环境的设立有两个目的。一的确是处于商业目的,Rothman Consulting Group的管理顾问Johanna Rothman说:“一个接一个的功能集成进代码然后通过所有的测试。但是这未必就意味着你已经准备好发布功能给客户了。那是一个商业决定。”
第二个原因是过渡区提供了生产发布前寻找最后错误的机会,为汽车业提供SaaS产品的Outsell的项目管理办公室总监Litded Davis说:“我们每3天就往过渡区发布1次东西。”那时候软件已经进行完了端到端测试。但维持在过渡区令产品经理有了确保一切正确的最后机会。“我们顶着屏幕的跳动以便获得对用户体验的真正感受,有时候我们会发现令人困惑或前后矛盾的错误信息。”
Davis说Outsell正朝着每天交付软件更新的方向前进。“这需要花点时间才能到达那里,但我们已经进入这个节奏了。”
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
翻译
相关推荐
-
基础设施即代码让混合多云管理更为复杂
基础设施即代码是一个强大的工具,它可以帮助简化混合云和多个云的管理工作,因为它能够实现服务器、容器以及虚拟机的部署与配置操作的自动化,它也带来了一些问题。
-
持续交付工具领域:DevOps越出SaaS界线
主要作为软件即服务(SaaS)提供的DevOps工具在本月开始向用户提供了新的部署方式,视图吸引开始流水线化开发流程、但可能并不会将服务部署到公有云上的大型企业。
-
六步加速移动应用测试
在移动企业,如果你测试和发布app的速度不如竞争对手快,那你就要落后了。哪怕是最古板的保险公司都知道,在移动领域速度会杀人。
-
持续交付面临哪些技术障碍?
随着持续集成的实现,敏捷团队将面临越来越多有技术障碍。持续交付要求开发一条新途径或,通过这种方法,新代码准备可以随时部署生产。