发展/质量保证/生产环境

时间:2011-03-10 23:33:17

标签: testing

我是一家大型企业软件公司的QA测试主管,该公司拥有一支由30多名开发人员和一小组QA测试人员组成的团队。我们目前使用SVN进行所有代码和模式检查,然后在每个小时后建立。

我的困境是:所有开发代码每天都从他们的机器升级到中央存储库到一个分支。这个分支是我们下一个软件版本的生产代码。每天检查代码时,使用这段新代码对稳定分支进行去稳定,直到QA可以对其进行测试。 QA有时需要数周时间才能获得要测试的特定代码。所有这一切中最糟糕的部分是我们提前几个月确定了什么代码将进入标准版本以及哪些代码将被碰到下一个分支,这使我们一直编码直到几乎实际发布日期。

我真的开始看到这个过程的影响(由我的前任制定)并且我试图想出一种不会惹恼开发的方式,他们可以将代码推广到QA环境,没有阻止另一个开发人员的代码。我们的许多代码都有共享库,正如我之前提到的,有时需要QA才能获得一段代码来测试。当那段代码等待测试时,我不想在某个区域阻止开发。

我现在的问题是,这里采用的最佳方法是什么?那里有软件可以帮助吗?我真正想做的就是确保QA有足够的时间来测试一个版本,而不需要任何新的代码,直到它经过测试。据该组织的很多人说,我不想最终在街上寻找新工作,因为“质量保证工作做得很糟糕”。

我们非常感谢任何建议,并将有助于我们的测试和产品。

4 个答案:

答案 0 :(得分:4)

这是一个广泛的问题,需要一个广泛的答案,而且我不确定我是否知道所需要的一切(我一直在担任开发主管和架构师,而不是作为测试经理)。我在你描述的过程中看到了几个问题,每个问题都需要一个解决方案:

  1. 测试团队致力于中间版本 这应该通过与开发人员合作,将他们的工作分成有意义的迭代(称为敏捷方法中的冲刺)并每隔几周提供一个工作版本来处理。此外,应该确定特征是按优先级实现的。这样可以保持“测试间隙”不变:您总是测试最新版本,这是几个星期前的版本,并且开发人员了解您发现的任何问题都比下一版本的新功能更重要。

  2. 测试团队致力于非稳定版本 绝对没有理由为什么测试团队应该在“到达时死亡”的版本上投入时间。持续集成是一种尽快找到“破解代码”的方法。这需要对Hudson或本土解决方案等产品进行一些投资,以确保在发生故障时发生构建失败,并对其应用一些“烟雾测试”。

  3. 您的测试周期很长 投资自动化测试。这并不是说您的测试人员需要学习编程;相反,你应该投资于以创造稳定的自动化测试的知识和热情招募或培养人才。

  4. 您选择“一直编码直到几乎实际发布日期”为
    那就对了;这是您和您的管理层的选择,有利于稳定性和质量的更多功能。对于需要尽快进入市场或让客户满意的一些公司来说,这是一个很好的选择;但这是一项糟糕的长期投资。一旦你说服你的管理层这是一个选择,你可以在不需要的时候停止服用它。

  5. 再次,这是我的两分钱。

答案 1 :(得分:1)

您需要一个能够自动构建,测试和部署的持续集成服务器。我会看看Apache Hudson,JUnit(DBUnit),Selenium和Sonar等代码质量工具的组合。

答案 2 :(得分:1)

为了确保QA正在测试的代码是唯一且不经常更改的,您应该使用TAG。标签就像一个分支,除了内容是不可变的。一旦检入/提交了一组文件,您就无法更改,然后在这些文件之上提交。这样,QA就可以使用稳定版本的代码。

答案 3 :(得分:0)

使用没有分支的SVN似乎是一种浪费的资源。他们应该建立一个稳定的分支和一个测试分支(即每日构建)。在日常构建中测试代码时,可以将其推送到开发版本分支。

就像Albert提到的那样取决于你的代码是什么,你也可能会考虑一些共享库的自动化测试(这取决于你在开发中的位置真的不应该改变那么多或你的开发团队正在做的事情组织工作的糟糕工作。

您也可以与您的开发团队领导(或曾经管理过他们)进行交流,并讨论他们在哪里查看质量保证以及质量保证可以做些什么来帮助他们做到最好。问:您的开发团队在发布之前是否有一个截止时间?你测试每一行代码吗?您是否有可能花费太多详细时间测试的地方?它不应该全部落在质量保证,质量保证和开发人员需要共同努力以获得产品。