欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

测试守护重构

程序员文章站 2022-03-21 15:37:43
作为程序员不得不接受的现实是,大多数系统在接手时就已经是遗留系统了。我在最近几年都没有参与新系统开发,不得不接手遗留系统的改造。改造遗留系统的成本实际上比写新的软件要大很多,毕竟就像给高速上飞驰的汽车换*。不仅不能引入新的错误,原来的错误在某种程度上也需要“将错就错”,否则对现有用户、现有数据而言顺手修复了一个 bug 反而会带来额外的问题。要想改造遗留系统不是这么简单地事情,需要考虑的事情很多,而测试就是其中很重要的部分。没有单元测试、E2E 测试的系统改造起来难度非常大,所以这也是我热衷于在每个项...

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

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

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

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

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

几项特别的注意事项:

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

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

本文地址:https://blog.csdn.net/Linucus/article/details/109616128

相关标签: java研发自测