一. 利用CI可以缓解项目中的多少风险?
1. 项目中大部分缺陷是在什么时候发现的,是在开发周期的早期还是晚期?
2. 如何确定软件项目的品质?是否可以测量?
3. 项目中的哪些过程是可以手工的?哪些过程可以自动化,哪些应该自动化?
4. 在版本控制库中,是否有重建数据库和数据的全部脚本?是否可以在构建过程中重建数据库和测试数据?
5. 在每次对软件进行变更时,是否都能执行回归?是否能够运行不同类型的回归测试,包括功能测试、集成测试、负载测试和性能测试?
6. 是否能确定哪些源代码没有对应的测试?是否使用测试覆盖率工具?
7. 软件中重复代码的百分比是多少?是否需要设法减少这个百分比?
8. 是否要检查源代码遵守了规定的软件框架?
9. 如何通知构建版本或部署的版本可以接受测试了?
10. 能否看到软件当前的图示?如何向新人介绍软件的框架?
二.任务安排
1. 搭建CI环境。
2. 实现基本CI功能(全部自动化)
l 持续构建任务驱动(用户驱动,顶起执行,轮询变更,事件驱动)
l 单元测试案例自动化执行
l 代码审查(测试代码覆盖率)
l 反馈
3. 高级功能实现自动化(全部自动化)
l 自动化数据库集成
l 持续执行自动化测试(单元测试,组件测试,系统测试,功能测试)
l 持续审查
l 持续部署
l 持续反馈并生成系统可用性文档
4. 持续集成的优化(随着系统的复杂度,和代码量的剧增,持续集成的效率会降低,对持续集成的过程的优化,或者自动化程度的安排需要进一步探讨与解决)
持续集成的最基础的功能是版本控制。
部分内容参考《持续集成软件质量改进和风险降低之道》《持续集成在软件项目管理中的作用》《基于jenkins的持续集成使用指南》等书籍或文章。