我们的项目正在使用gitflow详细here我的问题是QA如何适应这一点。
考虑我有一个主分支和一个hotifx分支。一旦修补程序完成,我相信QA应该从修补程序的版本上做它的东西。如果它没有通过,则使用此修复程序更新修补程序。 QA再次发布。现在,当修补程序RC通过QA时,代码将合并回主服务器(应该没有冲突,只是一个直接副本,因为主服务器没有更改)。然后从master完成生产版本。令人担忧的是QA还没有验证这个版本。他们已经验证了修补程序版本。
我们如何协调master只用于生产代码,但是在接近足够的生产代码上进行QA测试?任何人都有这种情况的经验吗?我看不出任何有关QA和测试如何适应gitflow的细节。
由于
答案 0 :(得分:2)
我将尝试解释QA如何适应Gitflow。简要介绍一下:
这完全取决于您对团队中约定的“完成”的定义。在我看来,完成的定义只涉及从事该功能的开发人员,因此当开发人员完成他们的工作并且同行评审批准将这项工作合并到主要(无论是什么)分支时,它是满意的。
只有当发布分支(如gitflow中所述)将被切断时,QA才会启动。
因此,开发人员从3个项目的积压工作中完成他们的工作。这可能意味着3个功能分支(我不使用gitflow中的修补程序术语,该术语保留用于生产中发现的问题的紧急修复)。一次一个(可能在不同的时间)分支被合并为主。当所有这些都被合并时,将切断候选版本分支,并从中生成工件以供QA团队运行和测试。
同时,团队可以开发并将其他功能合并到主线(主)。应用程序中发现的任何问题都在发布候选分支中修复,修复程序合并到主行中,因此它们在下一个版本中存在。 QA提供了一个新版本,其中包括修复程序并继续循环。
当QA满意时,会生成生产工件(将发布分支合并到主服务器并触发prod构建)。
现在我认为您担心2个版本(一个来自修补程序分支,另一个来自master)是不同的版本。这是事实并非如此。这是真的,因为QA测试的二进制文件是不同的,并且它不是真的,因为二进制文件包含相同的代码。这当然是假设没有其他代码进入master之间,并且您构建进程没有更新程序集(通过maven或nuget自动)到更新的版本。
如果您的工作地点希望您发布与QA验证的二进制文件相同的二进制文件,那么您需要从修补程序分支生成生产版本(或者通过giflow的方案生成发布分支[图中的绿色] )。否则你应该可以从主人那里释放。
答案 1 :(得分:1)
QA适合哪里?遍。
我遇到了您的问题:如果您希望master随时准备发布,那么您需要确保在合并到master之前测试您的工作。但是,如果你不对主人进行测试,如果你的变化与其他人的组合导致问题怎么办?如果你两个都做,那不是很多工作吗?
解决方案IMO是自动检查和通过修补程序分支和扩展测试工作的组合。掌握而不是全部在一个或另一个。它确实假设你(作为开发者)和我(作为测试者)在同一个团队中非常密切地合作,而不是在不同的团队中,这些团队负责官僚主义的开销和正式的移交,阻止我们有效地协作。
来自测试人员的反馈在您尽早获得时非常有用。我很高兴能够测试临时工作,因为如果我可以通过早期发现问题来挽救必须返回并扯掉大量内容的人,那就太棒了,这也使我能够更早地了解这个功能(建立我的心理)模型,测试数据,自动检查的想法)因此,当最终构建准备就绪时,我并不急于赶上。理想情况下,在开发过程中,我已经为您编写了一些自动验收检查,这样您就可以在不需要额外努力的情况下对您的分支机构和主机进行单元测试。 (在实践中,我并不总能及时得到这个,但是当我拥有它时,它运作良好)。而且我也期望你对master进行的任何检查都会在你提交之前对你的修补程序分支运行它们。
如果在应用程序的同一区域中有很多工作正在进行,那么我想在合并后至少对master进行一些快速探索 - 如果它是一个关键区域,可能会更多。我们的自动化套件已经遇到了一些回归问题,我不想没有它,但拥有自动化从来就不是不对风险做一点批判性思考的好理由。
这是一种方法:根据您的环境,还有很多其他可能对您有用的方法。对于我最近听到的一个有趣的方法,请查看来自Songkick的Amy Phillips的“通过控制改进过程” - 他们在发布之后移动了一些测试工作,理由是嘿,生产是你可以到最近的生产环境吗?显然,这需要使用功能切换,并且在某些环境中可能不被接受,但它是横向思考测试工作有意义的一个很好的例子。
答案 2 :(得分:1)
我将Vincent Driessen's git flow branching model扩展为包含代表TEST,QA和PRD环境的分支。
我没有让MASTER包含生产中的最后一个代码,而是选择让MASTER默认指向QA中的最后一个版本。然后部署到珠三角只是宣传已经在QA上向珠三角发布的候选版本。
您现在可以对QA上的版本执行修补程序,这可能会比生产版本的修补程序更多。通过将主分支重置为要修复的生产版本,仍可以执行生产修补程序。
考虑到这一点,您的案例可以通过
解决1)将master分支重置为生产版本
2)从master
创建修补程序分支3)将修复程序应用于修补程序分支
4)完成修补程序分支并合并到master和development
您现在可以从主分支构建一个候选版本,可以在QA上进行部署以进行测试,然后在可行的情况下将其提升为PRD。