测试守护重构

作为程序员不得不接受的现实是,大多数系统在接手时就已经是遗留系统了。我在最近几年都没有参与新系统开发,不得不接手遗留系统的改造。改造遗留系统的成本实际上比写新的软件要大很多,毕竟就像给高速上飞驰的汽车换轮子。不仅不能引入新的错误,原来的错误在某种程度上也需要“将错就错”,否则对现有用户、现有数据而言顺手修复了一个 bug 反而会带来额外的问题。

要想改造遗留系统不是这么简单地事情,需要考虑的事情很多,而测试就是其中很重要的部分。没有单元测试、E2E 测试的系统改造起来难度非常大,所以这也是我热衷于在每个项目中引入单元测试、E2E 测试的原因。

对遗留系统重构的逻辑非常直接但并不是直接上手修改代码就好了,需要有几个过程,和几个注意事项。

遗留系统改造的过程我总结为以下几个:

  1. 抽取接口,使组件替换成为可能。
  2. 理解原有系统,并补充测试,让测试覆盖率达到一定程度,使用存量数据作为输入运行测试。
  3. 重新实现接口,替换原有实现。
  4. 使用同样的数据作为输入运行测试。

几项特别的注意事项:

  1. 使用版本管理工具
  2. 充分使用 IDE 的重构工具
  3. 使用持续集成环境,让每一次提交都自动构建一次
  4. 提前考虑数据迁移的成本,编写迁移脚本,并进行测试

当然这部分重点是讨论怎么编写出可靠的测试,重点不是重构。我在大量的重构(清理屎山)的工作主要分为两类:一类是重构单个方法和类,大部分讲解重构技巧的书籍着重说明这部分;还有一类是重构系统,比如流行的微服务拆分和改造,最讨厌的莫过于伪微服务的修正。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值