21.不同环境,就有不同问题

“只要代码能在你的机器上运行就可以了,谁会去关心她是否可以在其他平台上工作,你又不用其他平台。”

如果厂商或者同事说了这样的套话:“哦,那不会有什么不同。”你可以打赌,他们错了,只要环境不同,就哼可能会有不同的问题Ventkat真正在项目中学到了这一课,他的一个同事抱怨说mVenkat的代码失败了。但奇怪的是,问题在于,这于再Venkat机器上通过的一个测试一模一样。实际上,它在一台机器上可以运行,在另一台机器上就不工作。

最后,他们终于找到罪魁祸首:一个NET环境下的API在Windows XP 和Window3002上的行为不同。平台的不同,造成了结果不一样他们算是幸运的,能够偶然发现这个问题,否则,很可能在产品投入使用的时候才会发现。如果很晚才发现这个问题,成本会非常昂贵———现象一下产品发表之后,才发现他并不支持应该支持的平台,那会怎么样也许,你会要求测试团队在所有支持的平台上进行测试,如果他们的手工精细测试,可能并不是最可靠的测试办法,我们需要根据面向开发者的测试办法你已经编写了单元测试,测试你的代码,每次在修改或者重构代码的时候在提交代码之前,你会运行测试办法,那么现在所要做的就是各种支持的平台和环境运行这些测试用例。

广告:个人专属 VPN,独立 IP,流量大,速度快,连接稳定,多机房切换,每月最低仅 5 美元

如果你的应用程序在不同操作系统上运行(例如 MacOs,Linux,Windows等),或者一个操作系统的不同版本(例如:Windows 2000,Windows XP ,Windows 2003 等)你需要测试所有的操作系统。如果你的应用程序要在不同的版本的Java虚拟机或者不同的NET CLR中运行,你也需要测试他们。

阅读 ‧ 电子书库

但是,也许你已经有时间压力了,因此,你怎么可能哟时间在多个平台上运行测试呢?这就要靠持续集成来拯救了。

使用自动化会节省时间

Automate to save time

我们在前面的保持可以发布中学过,用一个持续集成工具,周期性的从源代码控制系统中取得代码,并运行代码,如果有任何测试失败了,它会通知相关的开发者,通知方式可能是电子邮件,页面,RSS Feed,或者其他一些新颖的方式!

要在多个平台上测试,你只要为每个平台设置持续集成系统就行了,但你或者同事提交代码,测试会在每个平台上自动运行,这样,提交代码之后的几分钟,你就可以知道它是否可以在不同的平台上运行!这是多么英明的办法呀!

构建机器的硬件成本相当于开发人员的几个小时而已。如果需要,你甚至可以是用VMware或Virtual PC这样的虚拟机产品,在一台机器上运行不同版本的操作系统 ,VM或CLR不同环境有不同问题。使用持续集成工具,在每一种支持的平台和环境中运行单元测试,要积极地寻找问题,而不是等问题来找你切身感受感觉就像是单元测试,非但如此,而且还是跨越不同的世界的单元测试平衡的艺术? 不硬件比开发人员的时间更便宜,但如果你有很配置,要支持大量的平台,可以选择哪些平台需要内部测试。

? 只因为不同的栈层顺序,不同的单词大小写但而过,就能发现很多的平台上的bug。因此,即使运行 Solaris的客户比用Linux的少的很多,你仍然要在两个系统上进行测试? 你不希望因为一个错误而收到5次通过轰炸(这就像双重征税,会导致电子游戏疲劳症)。可以设置一个主构建平台或者配置,降低其他的构建服务器的运行频率,这样在它失败的时候,你就哟足够多的时间来修复构建平台,或者汇总所以错误报告信息到一个地方,进行统一处理自