我已经开始了第一次重构庞大系统并为其编写单元测试的经验,但我只是害怕我在不知情的情况下打破了代码。 我研究了“单元测试的艺术”和“使用遗留代码有效地工作”来找到解决方案,我的下一个计划是停止重构一段时间并编写一些集成测试(我选择Fitnesse工具进行集成测试)我改变一些东西后每次运行它们。 我只是想知道是否有其他人有相同的经历?您是否认为合并测试可以很好地解决这个问题?你有更好的主意吗?
我也检查了这个问题(How can I check that I didn't break anything when refactoring?),但我的情况与此不同,因为没有可用的单元测试,我在这里编写单元测试。
答案 0 :(得分:2)
集成测试是重构的良好解决方案的一部分。但是,重构引入的一些问题只会在您部署项目时出现。
更好的想法是将集成测试纳入 continuous delivery 策略。这意味着您应该有一个干净实用的方法来尽可能多地构建和部署项目,同时重构它。书Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment是一本很好的资源。这是它描述的反模式之一(第7-9页):
反模式:仅在开发完成后部署到类似生产的环境
在此模式中,第一次将软件部署到a 像生产一样的环境(例如,分期)曾经是大部分时间 开发工作已经完成......
将应用程序部署到临时表后,新的常见问题 找到错误......
补救措施是集成测试,部署和发布 活动进入发展过程。让他们成为正常的 持续的发展部分,以便在你准备好的时候 将您的系统投入生产中几乎没有风险, 因为你已经在很多不同的场合排练了它 逐渐增加类似生产的测试环境序列。使 确保每个人都参与软件交付过程 构建和发布团队,以测试人员与开发人员一起工作 项目的开始。
答案 1 :(得分:1)
在一天结束时,这是使用旧版代码的问题。
集成测试是您最好的选择,但要编写正确满足您需求的测试,您需要知道原始代码的原始意图,这通常不太明确,因为通常存在隐藏的需求。
没有理想的解决方案。
答案 2 :(得分:1)