你使用什么自动构建系统?你的构建需要多长时间?

时间:2009-02-10 21:24:18

标签: build-automation automated-tests

我目前的项目有5个独立的自动构建,在每次办理登机手续后启动:
单元测试(数据库调用被嘲笑):约6分钟 集成测试(仅适用于DB):约40分钟 网站1 UI(Selenium,从UI到DB):约80分钟 网站2 UI1(Selenium,从UI到DB):约90分钟 网站2 UI2(Selenium,从UI到DB):约100分钟

我们正在使用Maven2,JUnit和Selenium。

我认为一种策略可以大大减少集成测试时间,将尽可能多的集成测试移动到单元测试中,并简单地使用Integration项目来测试数据库的持久性。

我想知道你发现哪些策略有助于缩短大型项目的构建时间。

8 个答案:

答案 0 :(得分:2)

我们有大约相同的构建运行时,可能在selenium上稍微少一点(我说运行时间大约3x50分钟,对firefox,ie和opera进行相同的站点测试)。我们的解决方案是为它投入更多的CPU,我们有一个共有7个双核节点的集群bamboo环境。

我们发现在网络容器/硒测试的单独盒子上运行selenium-rc和浏览器可以显着改善硒的运行时间。

答案 1 :(得分:1)

我正在使用GNU make来自动化所有内容。取决于项目,取决于2分钟到30分钟。

答案 2 :(得分:0)

团队系统:所有事情都不到1小时

答案 3 :(得分:0)

我假设您的项目包含多个子项目。如果不是,您可能希望重构代码库,以便它可以。这样,您可以选择仅构建整个应用程序的特定部分,测试单个部分,然后在您正在处理正在处理的子项目上的错误时运行集成测试。

答案 4 :(得分:0)

我们使用Hudson构建一个包含少量Windows服务,Web服务和可执行文件的大型C#解决方案。通过MSTest.exe进行大约800次左右的测试,每次构建大约需要12-15分钟。由于MSTest是懒散的,测试占很大比例。

为了减少时间,我们试图限制生产的组件数量以便通过MSTest运行,因为设置和拆卸似乎需要一段时间。

编辑:我们的构建还部署到我们的cert env,其中包括Web服务,Windows服务,可执行文件和数据库部署。只是为了让您了解范围

答案 5 :(得分:0)

Erlang Common Test - 主要关注系统测试而不是单元测试。

答案 6 :(得分:0)

我们所有的自动构建都是通过Team City完成的。

我们使用的最自动化项目实际上是一个编译器。我们的测试套件包含大约20000个编译和运行的测试查询,这些测试查询在每次签入时运行。这曾经占用了一小时的最佳时间,但是将完整的测试套件保存在构建机器上的RAM驱动器中(而不是每次都检查出来)将此时间缩短为几分钟。

每晚都会触发第二次构建,运行这些相同的测试,但是在4个不同的配置文件下,同时在NCover下运行,生成代码覆盖率报告。这种情况需要几个小时,这就是它作为夜间构建完成的原因。其他内部报告同时生成,以确保一切正常运作。

测试套件本身的更新将单独触发并检出RAM驱动器以备下次运行。检查测试是否需要花费大部分构建时间。测试套件的一部分来自我们无法控制的远程CVS存储库,甚至可以查询更新,这些更新在构建时间增加了几分钟,因此这也是在“更新测试”构建中完成的。这种松耦合意味着我们不得不将这个项目的构建限制在一台机器上,但由于反馈很快,这不是一个大问题。

事实证明,尽可能快地保持“常规”测试构建,同时保持对代码库的高覆盖率,这非常有帮助。任何慢速测试(超过一秒左右)都已经完成了夜间构建。在我们的情况下,将测试保存在RAM驱动器中确实有帮助,尽管我们的场景非常专业。我想嘲笑你的数据库是最接近的等价物。我的建议是通过删除任何“矮胖”或慢速测试来保持一个构建“精益和意味着”,允许一个敏捷的响应,知道你可能没有破坏任何东西。其他构建可以在不同的机器上运行,也可以在晚上运行,以便快速构建快速响应。

对于透视,我们拥有的最长自动构建(对于另一个项目)有时需要一天以上,但幸运的是,它不是需要定期运行的。

答案 7 :(得分:0)

不幸的是,我现在的客户BuildForge(来自ClearCase SCC):一到三天。 Seriosuly。我真的不知道他们在构建中做了什么或为什么需要这么长时间。

相关问题