我们正在交付团队在Scrum环境中工作,对核心系统进行彻底的重写。由于团队的规模,我们现在分为两个Scrum团队,他们的目标是每天集成代码。每当测试团队部署到我们的系统测试环境(每天作为常态)时,我们都会拆除数据库并重新填充所有参考数据 - 这是为了确保测试的基线。
这种方法的问题在于,当其中一个测试团队正在等待部署修复程序,另一个是测试执行中期时,我们对速度的影响非常大。为了尝试解决这个问题,我们提出了以下建议:
- 创建另一个测试环境(这是非常昂贵的),此外,我们仍然会遇到延迟,因为团队中的一个测试人员仍然无法部署他们的修复程序。
- 纯代码部署的选项(避免数据库拆除)。
我们尝试并鼓励团队跨职能,并鼓励测试人员帮助测试人员找出谁阻止了部署,但这并不总是实用的。我们还的目标是任务大约需要 1-2 天的时间,因此我们无法轻松分解项目的持续时间。
其他人在其环境中采用了哪些方法?
与其拆除并重新开始,不如考虑一种"发展"数据库的方法,通过将每个更改表述为"增量脚本"来进行结构更改(添加表、重命名列等)和迁移数据。
我已经使用过这种方法几次,当它站稳脚跟时,它取得了巨大的成功 - 使团队和每个开发人员都能更快地行动。
如果有兴趣,我有一篇博客文章,其中描述了我的努力之一:http://dearjunior.blogspot.se/2008/05/version-of-data-in-database.html
如果你想深入了解,我推荐"重构数据库"
我们走得最远的团队开发了一大堆 bash 脚本来管理一切。但是,现在也有一些整洁的框架。我们已经开始使用 dbkeep,它实际上与我们自己开发的非常相似。
我彻底推荐这种方法。
[更新] 几个月前,我刚刚看到软件工程电台播放了一集关于这个主题的播客。