在云中开发和测试

关于“ 云 ”及其功能的宣传很多。

我感兴趣的事情之一是云解决方案,它可以帮助小型软件公司,尤其是对启动软件初创公司有所帮助。 开发团队可以利用这些好的工具来构建和测试自己的东西,而无需内部IT的所有麻烦和开销,购买和配置自己的设备,设置工具,系统和网络以及寻找了解所有这些知识的人它足够好,可以正确执行并保持运行。

我想找到一种基于Cloud的技术,该技术可以像Salesforce.com对客户服务业务那样为软件团队服务,以便软件团队可以快速上手,并从一开始就做事。

软件团队需要一组核心的共享工具和功能:

  • 源代码管理/版本控制
  • 错误追踪
  • 协作和共享文档构建和持续集成
  • 源代码扫描和静态分析
  • 单元和功能测试
  • 系统,负载和压力测试
  • 代码部署。

云能否有效地提供所有这些功能?

在云中管理和构建代码

我不断遇到使用GitHub托管其源代码存储库的人们。 不仅是从事开源项目的人们,还有使用GitHub在托管的私有存储库中管理商业项目的公司,该服务由许多创业公司使用 。 在GitHub中,开发人员拥有一个用于使用Git分布式版本控制系统管理代码的平台,并且他们可以为开发团队(尤其是分布式团队)访问一系列好的工具:用于控制许可的管理功能, Wiki , 错误跟踪系统和在线代码审查工具 。

GitHub的一种替代选择是使用Mercurial DVCS的BitBucket 。 像GitHub一样,BitBucket可用于管理开源和私有项目,看起来它提供了一组类似的管理功能和工具。 GitHub 对于开源项目是免费的,对于小型团队来说是便宜的,而BitBucket的定价基于用户数量,小型团队(最多5个用户)对于开放源代码或封闭源代码都是免费的。

另一个基于Mercurial的On Demand SCM平台是Fog Creek Software的Kiln ,它与Fog Creek的错误跟踪和计划系统FogBugz很好地集成在一起。

Atlassian 去年购买了BitBucket,它还为Jira Studio提供了一个全面的托管开发平台,该平台以Subversion代码存储库为中心,与Atlaissian的其他强大开发工具集集成在一起: Jira bug跟踪, FishEye用于代码搜索, Confluence Wiki, Greenhopper用于敏捷团队计划,用于在Amazon EC2和Crucible上进行构建和持续集成的Elastic Bamboo ,用于在线代码审查。 这几乎是团队所需的一切(缺少的只是静态分析以及功能和负载测试平台)。 尽管BitBucket和Jira Studio之间已经存在一些重叠,但是随着时间的推移,相同的集成开发工具支持可能会扩展到BitBucket。

还有CloudBees Dev @ cloud ,它提供了安全的Git,SVN或Maven存储库以及通过托管的Jenkins服务器进行的持续集成的选择。

Spring Source的Code2Cloud可能是一个不错的选择,特别是对于Java / Spring开发人员来说,当它准备就绪时–详细信息目前尚不明确。

Google代码很棒,但目前仅适用于开源项目。

对于企业而言,IBM 最近宣布了 Smart Business Development and Test Cloud和IBM Cloud上的 IBM Smart Business Development and Test (也称为SmartCloud Enterprise –我不确定它们之间有什么区别,我已经厌倦了阅读营销术语),以及各种IBM技术和合作伙伴工具。 这些东西不适合胆小的人或小钱包。

持续集成在云中

持续集成是开发团队必须解决的一个问题,才能使他们走得太远,并且设置CI服务器并使之保持运行并非易事。 这是云的弹性按需模型的另一个很好的选择,仅在需要时才购买更多基础架构。

除了Atlassian托管的端到端平台,以及CloudBees的Jenkins即服务 (可用于构建可通过Internet访问的存储库中托管的代码)之外,Cloud中的CI也有一些选择(由Pascal Thivent on Stack提供)溢出 ):

对于开源项目,有基于TeamCity构建服务器的 CodeBetter 。 对于专有项目,存在在Amazon EC2上托管的Mike CI ,其中包括与Subversion,Git和Mercurial存储库的接口。 和CI Foundry 。 但是,我不知道这些服务的真实性。 Mike CI在我去检查它的最后几次失败了,CI Foundry的主页上包含了这个不太令人信服的证明:

人们在说什么…
Lorem ipsum dolor坐下来,一直保持良好的状态。 毛里斯quis ligula vel ligula varius cursus tristique eget sem。 毛里斯人马座(Mauris sagittis),不道德的先导者,sem mi condimentum neque,quis feugiat quam dui dictum risus。 –克里斯·里德 持续部署专家

Thivent建议您可以在Amazon EC2上推出自己的CI解决方案,也可以使用“框内CI”之类的东西 。 利用随需应变的平台,像EC2有意义的CI,而不是供应自己的装备:这是为你做的设置更多的工作,但你可以依靠亚马逊的基础设施,以降低成本,简化操作。

云中的错误跟踪

有一些适合小型团队的,价格合理的基于云的错误跟踪系统,包括Fog Creek Software的FogBugz和Atlassian的Jira Hosted选项,这两个选项也都包含在其托管代码管理套件中。

在云中测试

云对应用程序测试(特别是大规模性能和负载测试)有很大的希望。 您正在构建一个很酷的新Web平台,该平台需要根据您的业务计划支持10,000或100,000个并发会话。 在您的投资者投入更多资金之前,他们想看看您的软件有多真实,距交付可行的产品还有多远。 当然,此时您没有金钱,时间或IT技能来建立自己的大型测试中心,这样做会浪费很多时间–您需要很多设备,但是您不会无需经常使用所有内容。

你可以比较快地旋转起来在EC2上测试场,甚至一个大的-只要你不需要跑很长一段时间的考验,你不要求太高的服务水平,它赢得了”根本就花了你很多钱 。 您在需要时支付所需的费用。

要运行压力测试,您不仅需要在服务器场中部署应用程序,还需要更多。 您还需要可扩展的压力测试工具来驱动负载场景并测量结果。 如今,云中提供了一些可行的选择: SOASTA及其CloudTest解决方案,用于负载测试和极端压力测试,从小型站点扩展到大型站点; 在EC2上运行的云中的HP Load Runner ; 云中的JMeter ; LoadStorm和BrowserMob 。

还有其他一些有趣的测试功能,包括来自Sauce Labs的技术,该技术使您可以在云中的Web应用上运行Selenium测试,或针对不同的基于云的即时可用浏览器手动测试您的应用,所有这些均包含失败测试的视频记录和其他找到问题了。 简单,有用和酷。

适用于初创企业和小型公司的基于云的测试的另一种方式是众包测试服务,如uTest ,您可以在此将人们“放在云端”来测试您的应用程序(Web应用程序,桌面应用程序和移动应用程序),包括功能覆盖率和回归测试(您给他们测试,他们运行它们甚至可能帮助改善它们),探索性测试,可用性测试,负载测试以及测试计划和管理。 与其他基于云的按需解决方案一样,您可以在需要时为工作付费。 uTest有大约40,000个测试人员可用的社区,尽管尚不清楚其中有多少人非常有用。

Mob4Hire是另一个专门针对移动应用程序的众包解决方案–它们提供功能测试和可用性测试以及其他服务,例如市场研究。

云中的静态分析

一些领先的静态分析供应商也已使用云。 惠普提供Fortify on Demand来扫描代码中的安全漏洞,而IBM具有Rational Appscan OnDemand ,其中包括经验丰富的团队的帮助,以帮助您解释结果并计划补救措施。 与小型团队相比,这两种解决方案都更针对企业。

仅通过云提供Veracode ,该软件运行用于安全漏洞的二进制代码分析,并且现在还提供Web漏洞扫描。 他们提供了针对小型Java应用程序的XSS和SQL注入漏洞(两个最常见和致命的Web应用程序漏洞)的免费试用版扫描 。

对于那些关心构建可靠和安全应用程序的初创公司(其中大多数应该如此,尤其是Web 2.0初创公司和移动应用程序开发人员)来说,看一看更简单的基于开发人员IDE的工具(例如Findbugs和Google的CodePro Analytix) (两者都是免费的)可能更有意义。或针对Java的Klocwork Solo for Java (按用户定价)。

权衡

在云端管理代码,构建代码并对其进行测试具有许多明显的优势:

  • 加快产品上市时间–您可以以最少的麻烦和设置时间快速访问基础架构和工具。
  • 节省成本和资本支出-尤其是对于负载测试-您无需先付钱,只需要为使用时所用的东西付费,因此您可以更好地管理现金流。
  • 便利性-您不必自己配置和操作齿轮,也不会增加操作上的麻烦。
  • 获得专业技能的机会–您的云提供商将比您更能负担得起的更多地了解这些技术以及如何解决特定问题,因此您无需签约或聘请专家来帮助解决问题或确保一切就绪正确地工作,或者浪费时间自己弄清楚。
  • 服务级别–他们将有更多的人来帮助保持运行,确保备份代码和数据,清理,监视和修补系统。 与您相比,他们丢失您的代码和数据的可能性较小。

在安全性方面,与基于云的提供商一起工作的普遍论点是,与大多数客户现在或将来相比,他们将对安全性更加负责和认真。 由于规模经济,他们可以投资于做正确的事,并且因为他们必须有安全的竞争能力。 例如,GitHub似乎已经建立了良好的安全程序,并且由Rackspace托管,因此数据中心,网络和服务器的安装和维护要比小型公司(尤其是初创公司)能够承受或愿意承受的要好得多。知道该怎么做。

使用这样的云平台的担忧归结为一些基本点:

1.这是一个共享平台,许多公司都在使用。 平台越成功,他们管理的客户和有趣,有价值的数据/ IP就越多,他们对坏蛋的吸引力就越大。 小公司本身就是一个容易的目标,但并不是特别有趣或不容易找到。 但是,为许多小型创新型公司保存数据的平台吗? 美味…。[以浓浓的声音发出,带有外国口音]

2.每当您外包对您的业务至关重要的核心内容时,您都会承担一些重要的风险。 您的数据/代码/客户群对您而言比对您将此责任外包给谁更重要。 如果发生严重错误,由于Cloud服务无法正常工作而导致您无法对客户进行重要更改或重要错误修复,或者代码的完整性或机密性受到损害,那么他们将感到悲伤,他们会失去一个客户(您)…但是您可能会倒闭。

您可以要求并支付良好的SLA,但Amazon今年早些时候发生的主要EC2中断表明,即使是最好的提供商也无法履行其SLA承诺。 尽管亚马逊在处理和恢复故障方面做了很多正确的事情,但它影响了许多客户的时间太长了。

3.除了使用SSL和网络防火墙并在良好的数据中心中运行之外, 安全的在线平台还有更多功能 -假装是天真的。 作为客户,您需要对云服务提供商在多租户分区方案和软件安全控制以及他们的多租户分区中如何设计和构建软件架构和平台以保护IP和数据的机密性和完整性充满信心。 SDLC。 应用程序代码中的安全漏洞是Web上企业的严重风险来源 ,而且大多数公司在以安全方式构建应用程序方面仍然做得很差 。

DropBox (基于云的文档存储工具)是一个平台的示例,该平台似乎是安全且机密的,直到有人开始对其进行深入研究 ,然后他们继续遇到基本安全问题 ,但遗憾的是,没有托管的平台提供关于我可以找到的安全SDLC的任何形式的陈述,以及他们为确保安全设计和实施平台所采取的步骤。

在云中进行测试,尤其是对Web应用程序的负载测试,似乎是一件容易的事-商业案例太诱人了,不能忽略。 许多其他工具也有很大希望:Atlassian的端到端托管工作室之类的东西可以为一家小公司节省大量时间和麻烦,并且可以节省前期成本。

这取决于您可以对云提供商及其SLA的可用性和支持给予多少信任,以及最终您是否有能力将核心IP信任给其他人。 37 Signals构建并运营自己的用于项目管理和文档共享的云解决方案, 但认为这不是一个好主意 :

出于明显的安全原因,我们在内部托管了应用程序的所有源代码。 这并不是说Github的私有存储库托管不是一个好选择,特别是如果您想要轻松的设置。 只是不适合我们。
JH 08年8月22日

对于某些公司,尤其是初创公司而言,其代码中包含的IP非常重要-这可能是它们所拥有的全部。 具有讽刺意味的是,正是这些公司最有可能使用GitHub,Jira Studio或BitBucket等云平台。 决定是否信任您的未来并非易事。 但是随着技术的不断进步,这是一个值得提出的问题。

参考: Building Real Software博客的 JCG合作伙伴 Jim Bird提供了在云中进行开发和测试的信息 。

相关文章 :
  • 不执行代码审查? 你的借口是什么
  • 2011年排名前25位的最危险软件错误
  • 可用的最强大的JVM语言
  • 选择一种新的编程语言来学习

翻译自: https://www.javacodegeeks.com/2011/07/developing-and-testing-in-cloud.html

你可能感兴趣的:(在云中开发和测试)