开始以为这本书会有一些偏理论,然后读过之后才发现有一种想见恨晚的感觉,作者在项目管理中遇到的很多问题正是我们也经常遇到的。
首先引用敏捷第一宣言:“我们的首要任务是尽早持续交付有价值的软件并让客户满意。”
对所有内容进行版本控制
不只是源代码管理,每个与锁开发的软件相关的产物都应被置于版本控制之下
不推荐将编译后的二进制文件纳入版本控制,
频繁提交代码到主干, 为了确保提交代码时不破坏已有的应用程序
一是提交代码之前运行单元套件
二是增量式引入变化,建议每完成一个小功能或一次重构之后就提交代码。
使用意义明显的注释,注释中最好包含一个链接,可以链接到项目管理工具中的一个功能或缺陷。
准备工作
版本控制(git,svn)
自动化构建(fastlane)
持续集成的前提条件
频繁提交
创建全面的自动化测试套件
保持较短的构建和测试过程
必不可少的实践
构建失败之后不要提交新代码
提交前在本地运行所有的提交测试,或者让持续集成服务器完成此事
等提交测试通过后再继续工作
回家之前,构建必须处于成功状态
不要将失败的测试注释掉
提交阶段是怎样工作的?
提交阶段的首要目标是要么创建可部署的产物,要么快速失败并将失败原因通知给团队。
提交阶段比较有用的度量项
测试覆盖率
重复代码的数量
圈复杂度
输入耦合度和输出耦合度
编译警告的数量
代码风格
提交测试阶段测试套件的原则与实践
避免用户界面 测试困难,耗费时间和精力 速度慢 * 可以放在验收测试节点处理
使用依赖注入
避免使用数据库
在单元测试中避免异步 * 解决方法就是拆分测试,将异步操作拆分单独的单元测试。
使用测试替身 Stub, 常常需要额外写很多代码,我们不需要关心桩是如何被调用的 Mock, 一般通过Mock框架模拟对象,我们需要验证代码是否以期望的方式与模拟对象交互。
最少化测试中的状态
自动化验收测试
窗口驱动器模式,也就是分为测试实现层和窗口驱动层,这样使测试实现层抽象层次更高,只有窗口实现层才与具体的GUI打交道。
我理解的自动化测试是:为了验证用户故事是否满足业务而编写的一系列操作过程,与单元测试不同的是,它是面向业务,而单元测试是面向开发人员的。
如何实现验收测试
几种常见的分支发布策略:
基于主干开发的三个好处:
文中指出,“创建分支”与“持续集成”往往是背道而驰的,意味着说创建分支越多,就越难实现持续交付,因为开发人员都在各自的分支频繁提交代码,而“分支”上的代码往往在几天之后(甚至更长的时间)才会合并回主干,这样会导致在后期才会发现因合并代码导致的种种问题。
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8