教您如何快速捕获.net代码中隐藏的bug_c#应用

2008-02-23 05:41:54来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  团队研发的一个方面就是在将任何的改变合并到中央资料库之前,允许单独的研发者在本地编写并构建(build)有特色的代码。研发者能够在本地测试和调试最新的版本,并且能够确保他们任何的工作代码能够和其他同事的协同工作,他们能够手动测试这些代码,但是更好的办法就是将这一过程自动化并且提供实时反馈,其中一个很优秀的解决方案就是持续集成。

  持续集成

  对于应用软件研发团队而言,有很多提高产品质量和效率的思想,其中的一种思想就是被称作持续集成的方法,持续集成的一个前提就是实时反馈。持续集成的一种最简单的形式就是由一个研发者完成任何的工作,因为任何的改变都是立即可见的,因此,单个研发者在他们出现问题的时候就能知道这个问题的存在,当同样的方法应用到团队环境中,实时方式就会成为一个问题。

  持续集成最大的特色在于当研发者提交他们工作的时候 ,能够减少其他研发者用于检测bug的时间,而往往很难以追踪到由这些bug所导致的问题的根源,因为问题通常是由于整合了新的代码所致,因集成而出现的bug可能在出现问题之前已被嵌入到代码中很久了,和其花费时间去追踪这些bug还不如花在别的项目上,关键是要尽早地发现问题。

  在持续集成方法的帮助下,绝大部分bug能够在引入代码的时候被发现,因为这些“嫌疑犯”(研发者的代码)是在他们提交新代码之后才出现了错误,所以更加明显。因此,少花些时间在追踪这些错误上,研发者就能有更多的时间解决他们自己的问题,最终的结果是生产效率的提高,但这种方法也依赖于构建新版本的频率,从而向研发人员提供有价值的反馈。

  何时进行构建(build)?

  我还记得多年前曾工作过的项目,进行一次构建需要大量的时间和精力,要提醒研发人员递交他们的代码,而且手动的构建过程很紧张,很自然的,当对研发团队的代码进行构建的时候,错误就摇头摆尾地出现了,追踪这些问题是需要时间的,并且希望能沿着正确的方向去解决问题,这样才能获得成功,而这一过程所需的时间往往导致了构建次数的减少,但是,多次构建更易于从持续集成中受益。

  假如您想知道一个成功构建的条件是什么,答案视乎您的项目和环境而决定,但是我经常将他定义为任何的源文档都成功编译、部署并且一系列测试都在系统中获得成功,您需要一系列工具来实现这些工作,虽然自动测试(automated testing)并不是必需的,但是我强烈推荐这种方法。

  工具

  以下是在.NET环境中建立和运行持续集成方法所必需的几本工具列表:

  ·源代码控制:这允许多个程式员通过提交、调出和添加新文档对应用软件代码的协同工作,Visual SourceSafe是一种流行的选择,但更有很多更好的选择,比如Subversion,IBMs Rational ClearCase,CVS和SourceGear Vault。

  ·编译器:您能够使用.NET框架的命令行编译器、Visual Studio .NET或其他的集成研发环境。

  ·持续集成服务器:这是构建过程的主要控制器,他负责监控为程式员提交代码使用的源代码资源库,当加入新的代码时,最新的版本将被取回,构建过程也就取消了,持续集成过程的最后一步是通过电子邮件、网页等形式向整个团队通报构建的状态。有很多工具都能够实现这一步骤,我比较喜欢CruiseControl.NET,另一个选择是免费的Draco.NET,您需要一个专门的服务器来实现这一步骤。

  ·自动构建工具:用于源代码的自动构建的工具是必不可少的,免费的NAnt是个很棒的选择,或您能够使用一个程式生成工具,假如您使用的是CruiseControl.NET的最新版本,则能够和Visual SourceSafe直接对话,这样就无需像NAnt这样的自动构建工具了。

  ·选择性单元测试:在集成阶段应用单元测试能够帮助验证正常工作的代码,一个很出色的工具是NUnit,他是免费的而且在网上有大量的相关信息。

  注意:安装和配置这些工具的内容已超出了这篇文章的范围,但是每个产品的网络社区所提供的文档中包含了您使用这些产品所需的信息。

  您准备好使用持续整合了么?

  持续集成并不是针对缺陷代码的灵丹妙药,但他绝对能够释放出您宝贵的时间去应付更紧张的问题,研发人员依然需要编写强壮的代码并进行良好的单元测试,另外,代码应该按照规则进行提交(我建议每日提交),然而,使用持续集成能够帮助您验证代码、测试、设计等的质量,持续集成能帮助您节省出原本用于构建的时间,但您需要一些时间去配置和管理专门用于持续集成的服务器。


标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 如何用.net array类的sort方法分类数值_c#应用

下一篇: c#操作mysql中文乱码的解决方案_c#应用