技术开发 频道

在大型遗留系统基础上运作重构项目

    在eMAN项目中,我们用Rational Functional Tester(RFT)来做验收测试。我们还评估了另一种针对Swing应用的功能测试工具Abbot。相比之下,RFT最大的优势在于独立性:测试工具与被测应用在不同的Java虚拟机里运行;而Abbot则是在当前虚拟机环境下运行被测应用,如果被测应用与Abbot引用同样的第三方包,就可能出现版本冲突。但RFT也有一些明显的劣势:测试案例编写难度大,占用系统资源多,与Ant集成不佳,而且价格不菲。读者应该根据自己项目的情况谨慎选择。

    除了用RFT实现前台Swing应用的验收测试之外,我们还用Selenium实现了前台Web应用的验收测试。对Abbot的研究也没有浪费,我们用它来实现了Swing界面的单元测试。从理论上来说,任何一段代码都可以并且应该被测试,但适当的工具能让测试事半功倍。组合多种测试工具,从不同层面、不同角度对系统进行测试,才能织起一张可靠的安全网。

    与通常说的“测试驱动开发”(TDD)相比,这种重构项目的节奏略有些不同:不是标准的“红-绿-重构”,而经常是“绿-重构-绿”。不过,这两种节奏都是敏捷项目中很常见的,下面的图就同时包含了两者。

    值得一提的是,图中的弧线不仅代表开发中的一项活动、系统状态的一次变迁,而且还代表一次在结对中转移键盘的机会。在eMAN项目中,我们经常以这样的方式工作:一个人给现有代码补上一段测试,把键盘推给身边的同伴,后者重构被刚才的测试覆盖的那段代码。以这样的节奏稳步前进,确保了知识能够在结对的过程中得到传递。

0
相关文章