1.敏捷实践
愿景:科技兴行、技术引导、以人为本、追求卓越
VUCA(乌卡)时代
怎么做?
1.1 卓越文化
- 技术引领,存进技术与业务的结合
- 以人为本,始终以人为出发点和中心(实践者、布道者、驱动者)
- 追求卓越,多种形式——改进形、读书会、编程大赛、技术操练、CoP社区分享、事故复盘分享
1.2 质量内建
- 持续集成 (质量保证、快速验证、减少重复、频繁集成)
流水线步骤:代码获取-》构建-》自动测试、代码扫描=》打包、发布-》部署
CI纪律:
- 如果CI状态是红色的,禁止提交新代码;
- 尽量频繁触发流水线(N次);
- CI失败不过夜;
- 一旦提交代码,需要监控流水线的运行状态直到全部通过,才能开始其他工作;
工具:Jenkins/GitLab/nexus/docker/k8s
部署脚本:Chef/Ansible/Puppet/SaltStack/Fabric
-
技术债管理
技术债:损害软件体系的不良实践,或者程序员有意选择的捷径。常见技术债:
- 不合适的设计
- 缺乏平台设计
- 缺陷
- 测试覆盖不充分
- 手工测试过多
- 集成和版本管理不善
- 。。。
方法:识别(代码扫描,代码评审,架构评估)-》追踪(建立看板,加入迭代清单,改进表)-》偿还
技术债四象限:重要/偿还难易程度两个维度
-
测试驱动开发
- 任务分解
- 小步聚焦
- 质量保证
- 价值优先
TDD三原则:
- 没有测试之前不要写任何功能代码
- 一次只写一个失败的测试,用于新加功能的描述
- 不写任何多余的产品代码,除非它刚好让失败的测试通过
-
整洁代码
-
测试迁移(目的:确保需求是有价值的,理解是一致的)
聚焦价值、质量保证、避免返工
开卡、验卡 -
自动化测试
- 节省时间和金钱
- 提高测试覆盖率和准确性
- 持续的反馈
- 增强能力
原则:
- 每个测试独立,没有依赖
- 每个测试重复运行,不影响结果
- 每个测试要有断言
- 每个测试都准备自己的测试数据,测试完成后清理数据
- 在流水线中频繁运行
金字塔:低到高:单元测试-》集成测试/接口测试-》界面测试-》探索性测试
-
代码评审
1.3 版本管理
协同合作、历史追溯、快速回滚
分支策略:常见的:主干开发、特性分支