2010-05-26 59 views
5

我正在努力重建我公司的开发/测试/ QA环境。我们有10-15个程序员参与了一些项目。他们目前都在PC上进行本地开发,并使用开发环境进行测试。我们目前没有质量保证环境,因此部署通常是一件痛苦的事情,因为错误通常是在某些事情发生后才发现的。下面是我设想:开发的理想开发/测试/ QA环境

  1. 破除大家的本地管理员权限,使一个开发服务器
  2. 创建一个QA环境,等同于我们的生产系统上的每个人的发展。这将允许他们测试部署。
  3. 创建一个比开发服务器更锁定的新测试环境,以便进行正确的测试。

您的想法是什么?建立这样的环境的最佳方式是什么?我们使用MS Visual Studio 2008开发ASP .NET应用程序(如果有帮助的话)。

回答

4

作为一名开发人员,如果您将我锁定在本地管理员权限之外,我真的很讨厌。

为什么每个人都在开发服务器上开发?你的员工不是都在办公室吗?

我真正喜欢你的建议的唯一事情就是与生产环境相同的QA服务器。抱歉。

你应该:

  • 通过源代码控制
  • 管理代码有推动建立到QA一个新建的经理。经过QA批准/业务签署/插入您的业务流程,然后构建经理推动生产。
  • 希望你的数据库也有一个测试环境。 DBA应该管理将数据库更改推向生产。开发人员在测试环境中创建,这是一个SQL Server /任何人使用的另一台服务器上的任何环境。
  • 如果您使用MS产品 - 考虑制作您的项目WDP(Web部署项目)。 MSBuild与此集成在一起,例如,您可以从TFS构建任务中激发构建权。增量构建,每日构建,仅限手动 - 一旦设置正确,它真的很棒。
+0

感谢您的洞察力。我真的只想要程序员和IT部门的最佳选择。我现在正在考虑给每个程序员开发他/她自己的虚拟机以进行开发,同时在他们的机器上删除本地管理员权限将是最好的方式。是否有什么我们可以用来自动化每晚从SVN构建.NET代码到测试服务器? – zewsk 2010-05-26 18:22:48

+0

曾听说过CruiseControl.Net?我认为它可以为你自动构建。 – 2010-05-26 22:37:03

0
  1. 不要。这将成为一个PITA,并会通过影响其快速部署,调试代码和并行运行多个版本代码的能力来影响开发人员的生产力。
    当然,你应该强制他们在本地发展为非管理员,但这是另一回事。
  2. 是的。实际上,我会走得更远,并强制将所有正在签入主代码库的代码通过干净的服务器进行自动化部署。您还应该有一个这样的环境,其中也会部署将要推向生产的代码。
  3. 是的。它是项目2的一部分。

您想要处理的第一项任务是确保您公司所有的产品都有一个**部署包,您可以以自动方式部署在一个吱吱作响的清洁机**。如果你没有这样的软件包,你将会在尝试强制执行上述过程时遇到很多麻烦,因为每个部署都需要手动干预,这将使贵公司花费太多时间和资源,以至于没有人会关心它。

第二个任务是为您的部署服务器提供确定的配置并准备映像,任何人都可以在本地或虚拟机上部署映像。这将成为您的任何测试的基准,并应尽可能接近实际的生产配置。

0

我不是把开发人员集中到开发人员服务器上的大热心。人们应该能够随时随地进行编辑和合并,无论他们碰到什么系统。你想用这个解决什么问题?这个问题可能有另一个解决方案。

质量保证服务器是必须的。您的质量检查团队需要一个可以打破不会影响开发的事情。

我假设通过“TEST”服务器,这实际上是一个可以放置每晚构建的位置,以便开发人员在发布到QA之前可以进行测试?这是一个非常好的主意,正如Cen提到的那样,每晚构建一个到该服务器的构建任务都可以用来帮助这个过程。

3

在我看来,这似乎是Continuous Integration尖叫。这是开发环境的第二部分,它不是某人的本地机器,但可用于显示当前正在进行的工作,并确保代码合并不会破坏事物。这与QA将使用的测试环境分开,并且应该有另一个环境作为另一个级别的准生产环境,以便如果有修补程序要发布,则可以与可能需要更多时间的较大版本分开进行让QA执行足够的回归以确保新功能不会破坏很多东西。

0

我不会通过删除本地管理员权限来处理这个问题,这样做会造成更多伤害,但我建议您设置一个构建服务器来验证受控环境中的构建。我所采用的工具包,其中我发现都非常好,我和十几个志愿者的队伍,是:

  • JetBrains的TeamCity的 - 持续集成和构建,以及单元测试运行
  • Atlassian Jira - 问题跟踪和项目管理
  • Atlassian鱼眼/坩埚 - 代码审查和通用代码度量。 VisualSVN服务器 - 源代码控制
  • VisualSVN客户端(与Visual Studio集成,非常值得)。
  • JetBrains ReSharper - 程序员生产力和一些整洁的单元测试工具。

我不能推荐那些足够高的工具。 TeamCity通过将您的构建从一个干净的,受控的环境中移出开发者机器和建筑物来处理您的“我们发货后发现的错误”。它还会运行单元测试,并确保您始终有一个工作构建(通过命名和羞辱构建断路器)。

坩埚是一种有价值的产品,可让您轻松地进行同侪代码审查,并进行全面审核,因此您可以验证它们是否正确完成。

我认为的其他项目是不言自明的,它们都有助于实现“最佳实践”,这将使您的商店在“Joel测试”上有很长的路要走。 Atlassian的产品有10个许可证,价格为10美元,这是很难打败的。

尽管如此,解决您的发展问题将至少部分是文化。您可以放置​​这些(或其他)工具,但需要团队和管理层的支持,并且需要解决您的实践问题,以确保开发人员使用它们。一些再教育可能会受到限制,因为怠惰的开发人员通常不喜欢被迫升职。我将从构建服务器开始,并坚持认为除非它来自自动构建,否则不会发布任何代码。许多良好的做法将会失去它。您可以考虑采用单元测试和代码审查,以及何时适合您的组织 - 但计划从一开始就这样做。

+0

坦率地说,他们都是草率的开发者。他们真的没有任何结构。我是DBA,我正在尽我所能让他们的环境发挥作用。 我在想为每个程序员开发他/她自己的虚拟机来进行开发将是一个不错的选择,可以取消他们的本地管理员权限。然后我们可以使用一些东西来将他们的构建从SVN自动化到测试环境中。 – zewsk 2010-05-26 18:21:02

0

如果您真的想简化事情,请查看持续部署概念,该概念正变得非常流行。这是一个good introductory post;总体目标是从开发到生产部署直接使用严格的自动检查以消除错误。

一个完整的连续部署设置最初可能有点让人费解,但是您可以先尝试从开发到QA的这个过程。

0

请记住 - 没有这样的事情可以应用于所有情况下的“理想”通用开发环境。通常,技术限制阻止了这些想法的全面采用。作为多年的知名承包商,我发现与我共事的最糟糕的系统没有本地管理员权限,每一次安装都需要致电技术支持,他们总是诅咒我们开发人员要求太多。

我拥有的最佳场景是:如果您要删除本地管理员权限,请为他们提供强大的本地托管虚拟机。他们应该在网络上有一个DMZ,这样他们就可以在虚拟机上做。如果他们搞砸了,你可以简单地从文件中恢复虚拟机。在这种情况下,重要的是使用一个好的源代码仓库,比如GIT,Team Foundation Server,SVN等。这是开发应该完成的方式 - 除了实际输入代码之外,不需要依赖开发人员工作站。

这一方面和其它提示的列表:

允许开发人员人数及其虚拟机(互联网接入,应用程序安装等)

使用一个很好的源代码控制库,每个开发人员可以随意分支内的自由从。强制执行常规签入(例如每小时一次)并拥有构建服务器(持续集成或“CI”),以检查构建是否损坏。当构建中断时,CI服务器应该向团队中的每个人发送电子邮件。

为每台本地计算机提供可支付的最佳资源。我听到这样的说法,即4GB足够用于Visual Studio。没有什么比真相更深。你可能决定坚持这一点,但请相信我 - 当你的开发者机器一遍又一遍地分页到磁盘时,因为每个版本都占用大量内存,你每个小时每小时会损失几分钟 - 生产力的损失,慢机器。

尽量不要让你的开发人员看不起你 - 他们会闻到它一英里远,并对你感到愤恨(想要对不满的开发人员负责删除源代码或引入错误?)。有可能他们之所以是“草率的开发者”,是因为公司中没有人能够管理人员。最好的团队由聪明,开放,受过教育的项目经理领导。他们在需要时得到他们所需要的东西。与开发人员的工资成本相比,软件的成本是没有的 - 但我仍然听说这个或那个经理拒绝某个产品,因为它的成本很高。上次它是XML Spy--因为“记事本就足够了”。当然会 - 只要腿足够,而不是汽车,但我不想走到哪里都该死!

为了不利于谷物 - 我实际上认为从所有开发人员中删除管理员能力是一件好事,如果您可以创建具有最高能力的高级用户。我从团队中发现的最大问题是人们应用补丁程序或安装未通过管理清理的其他软件。上次有人安装ReSharper,然后抱怨机器运行缓慢。他们有一台2GB的机器,而ReSharper 5需要4GB的最低配置才能在Visual Studio 2010上运行。

Addtionally - 学会不使用鼠标进行开发。这是我知道的一个激进的概念,但鼠标比键盘快捷键慢。除非图标位于页面的角落,否则平均需要一两秒才能找到图标并单击。记住一条捷径更快。