在所有支持的平台上进行测试

北大青鸟大学城校区logo 北大青鸟大学城校区
招生简章校园环境师资力量就业明星招生问答软件工程师北京大学学历学员项目联系我们 报名通道

免费在线咨询通道>>

免费在线报名通道>>

北大青鸟报名电话
当前位置:北大青鸟 > 北大青鸟校园文化 >

在所有支持的平台上进行测试

标签:   分类:北大青鸟校园文化

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

如果厂商或者同事说了这样的套话:“哦.那不会有什么不同。”你可以打赌,他们错了。只要环境不同,就很可能会有不同的问题。

venkat真在项目中学到了这一谋。他的 一个同事抱怨说.Venkat得代码失败了。但奇怪的是,问题在于,这与在Venkat上通过的一个测试用例一模一样。实际上.它在一台机器上可以工作,在另一台机器上就不工作。

晶后.他们终于找到了罪魁祸首:一个.NET环境下的API在windows xP和windows2003。上的行为不同。平台的不同,造成了结果的不一样.

他们算是幸运的,能够偶然发现这个问题。否则,很可能在产品投入使用的时候才会发现。如果很晚才发现这个问题,成本会非常昂贵——想象一下产品发布之后.才发现它并不支持应该支持的平台,那会怎么样。

也许,你会要求测试团队在所有支持的平台上进行测试。如果他们是手工进行测试,可能并不是最可靠的测试办法。我们需要更加面向开发者的测试办法。

你已经编写了单元测试,测试你的代码。每次在修改或者重构代码的时候,在提交代码之前.你会运行测试用例。那么现在所要做的就是在各种支持的平台和环境中运行这些测试用例。

如果你的应用程序要在不同的操作系统上运行(例如Macos、Linux、Windows等),或者一个操作系统的不同版本(例如windows2000、WindowsXP、Windows2003等),你需要测试所有的操作系统。如果你的应用程序要在不同版本的Java虚拟机或者不同的.NET cLR中运行,你也需要测试它们.

Andy如是说……

但是它在我的机器上可以工作

曾经有这样一个客户,他需要提高他们的OS/2系统性能。于是一个莽撞的开发人员打算用汇编从头开始重写0S/2的调度程序。

从某种程度上说,事实上它是可以工作的.它在最初的开发人员的机器上工作得非常好,但是在其他人的机器上就不能用。他们甚至尝试了从同一个厂商那里购买硬件,安装相同版本的操作系统、数据库和其他的工具,但都徒劳无功。

他们甚至尝试在每天的同一个时间,,以同一个方向面朝机器,宰鸡向众神祭祀,希望能有好运(呵呵,这是我杜撰的,但其他都是真实的)。

团队最终只好放弃了这个方案。与没有文档的内部操作系统纠缠在一起,绝对是非常脆弱的。这不是敏捷的做法.

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

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

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

构建机器的硬件成本相当于开发人员的几个小时而已。如果需要,你甚至可以使用像VMware或Virtual Pc这样的虚拟机产品,在一台机器上运行不同版本的操作系统、vM或cLR。

不同环境,就有不同问题。使用持续集成工具,在每一种支持的平台和环境中运行单元测试。要积极地寻找问题,而不是等问题来找你。

切身感受

感觉就像是在做单元测试.非但如此,而且还是跨越不同的世界的单元测试。

平衡的艺术

硬件比开发人员的时间便宜。但如果你有很多配置,要支持大量的平台,可以选择哪些平台需要内部测试。

只因为不同的栈层顺序、不同的单词大小写等,就能发现恨多平台上的bug。因此.即使运行用solaries比用Linux的少很多.你仍然要在两个系统上都进行测试。

你不希望因为一个错误而收到5次通知轰炸(选就像是双重征税。会导致电子邮件疲劳症)。可以设置一个主构建平台或者配置,降低其他构建服务器的运行频率,这样在它失败的时候,你就有足够的时间来修复主构建平台。或者汇总所有错误报告信息到一个地方.进行统一处理。

若有疑问请拨打北大青鸟咨询热线:010-80146691或点击免费在线咨询!
  • xml地图 网站地图 招生简章 合作企业 学员项目 联系我们
  • 关闭窗口