Dav*_*Lin 120 git testing qa git-flow
我们的开发团队一直在使用GitFlow分支策略,它一直很棒!
最近我们招募了一些测试人员来提高我们的软件质量.这个想法是每个功能都应该由测试人员测试/ QA.
过去,开发人员在单独的功能分支上处理功能,并develop在完成后将它们合并回分支.开发人员将在该feature分支上自行测试他的工作.现在有了测试人员,我们开始问这个问题
测试人员应该在哪个分支上测试新功能?
显然,有两种选择:
develop树枝上最初,我们相信这是肯定的方法,因为:
develop自开发开始以来,该功能已与所有其他功能合并到分支进行测试.develop).他不需要向开发人员询问哪个分支是针对哪个功能的(功能分支是由相关开发人员独立管理的个人分支)最大的问题是:
该develop分支被污染与臭虫.
当测试人员发现错误或冲突时,他会将它们报告给开发人员,开发人员会在开发分支上修复问题(功能分支在合并后被放弃),之后可能需要更多修复.多个子序列提交或合并(如果develop再次在分支上重新创建分支以修复错误),develop如果可能的话,从分支回滚功能非常困难.develop在不同时间有多个功能合并到分支并在其上固定.当我们想要创建仅包含develop分支中某些功能的版本时,这会产生一个大问题
所以我们再次思考并决定我们应该在功能分支上测试功能.在我们测试之前,我们将更改从develop分支合并到功能分支(赶上develop分支).这很好:
develop分支;但是,存在一些缺点
develop分支.这意味着,develop无论如何,当两个功能都合并到开发分支时,您将不得不再次测试分支.你必须记得将来测试这个.以上是我们的故事.由于资源有限,我想避免在所有地方进行测试.我们仍在寻找更好的方法来应对这种情况.我很想知道其他团队如何应对这种情况.
Asp*_*sia 90
我们这样做的方式如下:
在我们合并最新的开发分支代码之后,我们在功能分支上进行测试.主要原因是我们不希望在接受功能之前"污染"开发分支代码.如果测试后不接受某个功能,但我们想发布已经合并开发的其他功能,这将是地狱.Develop是一个发布版本的分支,因此最好处于可释放状态.长版本是我们在很多阶段进行测试的.更具分析性:
您如何看待这种方法?
Von*_*onC 37
在测试之前,我们将开发分支的更改合并到功能分支
不,不要,尤其是'我们'是QA测试员.合并将涉及解决潜在的冲突,最好由开发人员(他们知道他们的代码)完成,而不是由QA测试人员(他们应该尽快进行测试).
让开发人员在他/她的feature分支之上devel做一个rebase,并推送该feature分支(已经由开发人员验证为编译并在最近的devel分支状态之上工作).
这允许:
develop每次测试人员检测到错误时,他/她都会将其报告给开发人员并删除当前的功能分支.
开发人员可以:
feature分支.一般想法:确保合并/集成部分由开发人员完成,将测试留给QA.
我们使用所谓的“金”,“银”和“青铜”。这可以称为prod,staging和qa。
我来称它为熔炉模型。它对我们来说效果很好,因为在业务方面我们对质量保证非常有需求,因为相对于技术而言,要求可能很难理解。
当错误或功能可以进行测试时,它会变成“古铜色”。这将触发jenkins构建,从而将代码推送到预构建环境。我们的测试人员(不是超级技术人员)只是点击了一个链接,并不关心源代码控制。这个构建也运行测试等。如果测试(单元,集成,硒)失败,我们实际上会在该构建中来回推送代码到测试\ qa环境。如果您在单独的系统上进行测试(我们称其为Lead),则可以防止所做的更改被推送到您的qa环境中。
最初的担心是我们在这些功能之间会有很多冲突。确实发生了功能X使功能Y看起来好像坏了的情况,但是这种情况很少出现,并且实际上很有帮助。它有助于在似乎变化的上下文之外进行广泛的测试。很多时候,您会发现您的更改如何影响并行开发。
功能通过质量检查后,我们会将其移至“银色”或暂存状态。运行了构建,然后再次运行测试。每周,我们将这些更改推送到“金”或产品树中,然后将其部署到我们的生产系统中。
开发人员从金树开始其更改。从技术上讲,您可以从暂存开始,因为这些很快就会增加。
紧急修复程序直接放入金树中。如果更改很简单且难以进行质量检查,则可以直接进入白银,这将进入测试树。
发布之后,我们将黄金(产品)的更改推向古铜色(测试),以使所有内容保持同步。
您可能需要在移入暂存文件夹之前进行变基。我们发现不时清除测试树可以使其保持干净。有时功能会在测试树中被放弃,尤其是在开发人员离开的情况下。
对于大型的多开发人员功能,我们创建了一个单独的共享存储库,但是准备就绪后,将其合并到测试树中。事情确实容易从QA反弹,所以保持变更集隔离是很重要的,这样您可以添加并合并/压缩到过渡树中。
“烘焙”也是一个不错的副作用。如果您有一些根本性的改变,您可以坐一会儿,这是一个不错的地方。
另外请记住,我们不维护以前的版本。当前版本始终是唯一的版本。即使这样,您也可能拥有一棵主烘烤树,您的测试人员或社区可以在上面观察各种贡献者之间的相互作用。