在上一章中,学到了关于测试的一些策略实现,作者从两个维度对测试进行划分,一个是业务导向,还是技术导向,另一个维度是为了支持开发过程,还是为了对项目进行评价。在这一章中,作者向我们介绍了部署流水线。
什么是部署流水线
从某种抽象层次上讲,部署流水线是指软件从版本控制库到用户手中这一过程的自动化表现形式。部署流水线是对软件从设计,开发,构建,测试等过程的建模,在持续集成和发布管理工具上,它体现为支持查看并控制流程,包括每次变更从被提交到版本库控制开始,直至通过各类测试和部署,再到发布给用户的过程。
部署流水线的相关实践
- 只生成一次二进制包
- 对不同环境采用同一部署方式
- 对部署进行冒烟测试
- 向生产环境的副本中部署
- 每次变更都要立即在流水线中传递
- 只要有环节失败,就停止整个流水线
提交阶段
我们不想在那些明显有问题的版本上花费时间和精力,所以当开发人员提交变更到版本控制系统后,我们希望尽快地评估一下这个版本,让开发人员快速得到反馈,所以我们需要践行提交阶段的最佳实践,开发人员需要一直等到部署流水线的提交阶段成功完成,如果失败了,开发人员要么快速修复问题,要么将提交的代码回滚。
部署流水线的测试
部署流水线中很大一部分就是测试,跑各种各样的测试,快速获取反馈进行修改。全面的提交测试套件对于发现许多错误来说,是非常优秀的试金石,在这个试金石中,我们的测试有,单元测试,集成测试,组件测试,配置测试,冒烟测试,手工测试,探索性测试等等,从各个方面帮助我们去尽在发现在项目中潜在的问题。
实现一个部署流水线
无论是从零创建一个项目,还是想为已有的系统创建一个自动化的流水线,通常都应该使用增量式的方法来实现部署流程。建立一个完整的流水线的策略,步骤如下:
- 对价值流的建模,并创建一个可工作的简单框架
- 将构建和部署自动化
- 将单元测试和代码分析自动化
- 将验收测试自动化
- 将发布自动化
总结
我的收获
- 部署流水线的前提就是项目自动化,测试的完备性,反馈的及时性,以及团队成员对于持续交付的相关实践。
- 增量式开发
我的疑惑
- 价值流建模的可行性怎么样?团队可以按照原有的日期按时完成么
- 冒烟测试是测试哪方面的?