2011-03-10 139 views
1

我是一家大型企业软件公司的QA测试主管,拥有超过30名开发人员和一个小型QA测试团队。我们目前使用SVN来完成我们所有的代码和模式检查,然后在数小时后每天晚上建立它。开发/质量保证/生产环境

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

我真的开始看到这个过程的影响(由我的前任设置),我试图想出一种方法,不会因为他们可以将代码推广到质量保证环境,而不会阻碍另一个开发人员的一段代码。我们很多代码都有共享库,正如我之前提到的,它有时可能需要QA才能获得一段代码进行测试。我不想在某段代码等待测试时阻止某个领域的开发。

我现在的问题是,这里采用什么最好的方法?有没有软件可以帮到你呢?我真正想要做的是确保QA有足够的时间来测试版本,而不需要任何新代码直到测试完成。根据该组织中的很多人的说法,我不想在街上寻找新工作,因为“QA工作很糟糕”。

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

回答

1

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

0

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

就像Albert提到的,取决于你的代码是什么,你也可以看看一些共享库的一些自动化测试(这取决于你在开发中的位置确实不应该改变那么多,或者你的开发团队是做一个组织imho糟糕的工作)。

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

+0

我们的目前版本和下一版本都是稳定分支,但是进入下一版本的任何错误修复通常都会移植到当前版本中。 – vwgti 2011-03-11 00:05:43

4

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

  1. 测试团队对中间版本
    工作这应该与分裂他们的工作精力投入到有意义的迭代开发家伙(称为工作处理敏捷方法论中的冲刺)和每隔几周发布一个工作版本。此外,应该确定该功能是优先实施的。这有利于保持“测试差距”的固定性:您总是测试几周前的最新版本,并且开发人员明白,您发现的任何问题都比下一版本的新功能更重要。

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

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

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

再次,这是我的两美分。

1

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