当我们开始系统重构的时候,不是着手去修改代码,而是首先建立测试机制。不论什么程序,只要是被我们修改了,理论上就可能引入BUG,因此我们就必须要进行测试。既然是测试就必须要有一个正确与否的评判标准。以往的测试,其评判的标准就是是否满足业务需求。因此,测试人员往往总是拿着需求文档测试系统。
与以往的代码修改不同,重构没有引入任何新的需求,系统原来什么功能,重构以后还是这些功能。因此,重构的测试标准就只有一个,就是与之前的功能完全保持一致,仅此而已。
然而在许多经典的重构书籍中,大师们总是建议我们首先建立自动化测试机制,这已经被我在无数次实践中证明是不现实的。要知道我们现在重构的是一个遗留系统,它往往设计混乱,接口不清晰,程序相互依赖。所有这些都使得最初的自动化测试变得非常困难而不切实际。
因此,从一开始就实现自动化测试是不切实际的,我们所能采用的还是手工测试。在重构之前首先将系统启动起来,执行相应的功能,得到各自相应的输出。然后开始重构,每次重构对代码的修改量不要太大,花费的时间不要太长。因为,修改量太大,花费时间太长,一旦测试不通过,很难定位错误的原因。在这种情况下,我们只能还原代码,将此次修改的工作完全作废。如果此次修改已经花费了你数天甚至数月的时间,这样的损失就实在太大了。
每做一次重构,修改一点儿代码,然后提交,对系统进行一次测试。如果系统依然保持与以往一样的功能,重构成功,继续进行下一次重构。如果不是,你不得不还原回来重新重构。频繁地测试着实让你挺烦的,但却有效减少了重构失败带给你的损失。一个折中的办法就是,平时频繁测试的时候,测试项目少一些,只测试主要项目,定期再进行全面地测试。录制QTP 脚本也是一个不错的方式,它虽然有诸多问题,但却可以在系统重构初期有效地建立自动化测试,系统级别的自动化测试。随着系统重构的不断深入,我们的程序开始在改善,耦合变得越来越松散,程序变得越来越内聚,接口变得越来越清晰。这时候,当自动化测试条件成熟时,我们才可以逐渐开始自动化测试,而这种自动化测试才是建立在代码级别的真正的自动化测试。
一旦某个修改测试不通过,则还原回来。这种一次一小步的修改模式,我们形象地称之为“小步快跑”。在测试集成工具的不断监督下一点一点地修改程序,是系统重构异于以往的另外一个特点。通过小步快跑可以使我们在重构的过程中,以最快的速度发现修改的问题,将因修改错误带来的损失减到最小,毕竟是人都不可能避免犯错。
大话重构连载首页:
http://fangang.iteye.com/blog/2081995
特别说明:希望网友们在转载本文时,应当注明作者或出处,以示对作者的尊重,谢谢!
分享到:
相关推荐
Android之大话设计模式——:抽象工厂模式借鉴.pdf
大话Oracle RAC:集群、高可用性、备份与恢复(带目录清晰中文完整版)
大话Oracle RAC:集群、高可用性、备份与恢复。 此书被认为不可多得的好资料之一:大话Oracle RAC(PDF经典),看完之后深有感触,发出来共享一下。
在RAC环境下,数据库服务可以在集群中的任何节点上运行,当某个节点出现故障时,服务能够自动切换到其他健康的节点,确保业务连续性。以下是该书可能涵盖的一些关键知识点: 1. **Oracle RAC基础**:介绍RAC的基本...
Android之大话设计模式——:抽象工厂模式参考.pdf
由于市场上存在大量不同品牌、型号、系统版本的手机和平板,确保应用在各种硬件配置和软件环境下都能正常运行显得至关重要。这需要进行广泛的设备覆盖测试,包括屏幕分辨率、处理器类型、内存大小等因素。此外,对于...
《大话存储:存储系统底层架构原理极限剖析(终极版)》是一本深入探讨存储技术的专业书籍,由一位对技术充满热情的作者精心撰写。这本书以其严谨的态度和丰富的想象力,揭示了存储系统的底层奥秘,旨在帮助读者全面...
大话存储:存储系统底层架构原理极限剖析(终极版)第3部分 大话存储:存储系统底层架构原理极限剖析(终极版)第3部分大话存储:存储系统底层架构原理极限剖析(终极版)第3部分
初中语文文摘历史“大话王”郭台铭:被夏普狠狠摔了个大跟
因此,在使用“大话3WDF解包器”时,我们应尊重原创,仅限于个人学习和研究,不进行非法传播或盈利活动。 总结来说,“大话3WDF解包器”是连接游戏开发世界和玩家社区的一座桥梁,它揭示了游戏资源的内部结构,促进...
《大话Oracle RAC:集群 高可用性 备份与恢复》以Oracle 10g为基础,对Oracle RAC进行了全面的介绍和分析。全书分为两个部分,共14章,第1部分是集群理论篇,这部分从集群基础知识入手,通过分析集群环境和单机环境...
仪表板可以将不同视图组合在一个交互式的面板上,用户可以通过筛选器、动作链接等交互元素探索数据。而故事则允许用户按照特定顺序展示视图,帮助观众逐步理解分析过程和发现的见解。 标签“BI(Business ...
大话存储:存储系统底层架构原理极限剖析(终极版)第4部分 大话存储:存储系统底层架构原理极限剖析(终极版)第4部分
大话存储2:存储系统架构与底层原理极限剖析》内容简介:网络存储是一个涉及计算机硬件以及网络协议/技术、操作系统以及专业软件等各方面综合知识的领域。目前国内阐述网络存储的书籍少之又少,大部分是国外作品,对...
PHPWind论坛是一款在中国广泛应用的开源社区论坛软件,其大话3风格是PHPWind众多主题样式中的一款,专门设计用于提供类似《大话西游3》游戏的视觉体验和交互效果。这一风格通常会包含定制的界面元素、色彩搭配、图标...
【标题解析】:“大话西游之保险版.ppt”这个标题显然采用了电影《大话西游》的经典主题,将其与保险行业相结合,形成了一种寓教于乐、轻松幽默的呈现方式。在这个PPT中,很可能是用电影中的角色和情节来比喻和解释...
大话Java:从零基础到数据库、Web开发以漫画的形式,由浅入深、循序渐进地介绍Java编程的常用技术和方法,内容涵盖了Java基本语法结构、面向对象特征、集合框架体系、异常处理、GUI编程、MySQL数据库、JDBC数据库...
大话存储:存储系统底层架构原理极限剖析(终极版)_张冬2015.01_P989
* distributions3::cdf 方差分析 在方差分析中,我们可以使用以下 R 包和函数来进行方差分析: * stats::aov * stats::bartlett.test * stats::shapiro.test * stats::pairwise.t.test * oneway.test * stats::...