Java面试测试

4
今天早上在一次工作面试中,他们问我如果我得到了一些没有测试的遗留代码,并且我需要修改其中的内容,那么我应该如何确保不会出错。
我的答案是,首先我会为我需要修改的代码部分创建一个测试,然后一旦测试通过,我会进行代码修改,确保测试仍然通过。所以基本上是从测试驱动开发的角度来做的。但是面试官好像并不满意我的回答,所以我想听听你们的意见,是否有更好的方法?
我的回答是否正确有效?
非常感谢。

3
我会以同样的方式回答:是的。 - mavarazy
4
如果你希望绝对确认不会出现问题,那就不要做任何改变。否则在系统其他地方出现问题的风险将一直存在。你可以通过适当的测试来减少风险,但是你永远无法完全消除它。 - JonK
1
如果之后你感觉他们需要更多测试,那我会建议添加一些新的测试,这些测试在当前代码中会失败,但是如果修复正确,则会通过。然后,在对代码进行任何更改之前,我会要求对测试进行代码审查。 - OldCurmudgeon
基本上编写测试用例来测试旧代码的所有功能,然后在修改时同时监控测试用例是否仍然通过。我认为您的回答非常好。 - OPK
另一种改变遗留代码并确保不会破坏现有功能的技术是黄金大师 - prgmtc
1个回答

2
你的答案是正确的,但可能过于简化了。 在现实世界中,情况通常不会那么简单。特别是对于遗留系统,其中许多代码过于耦合,存在糟糕的抽象、低效的语言结构等等。如果没有其他测试,这种情况尤其具有挑战性。
有时候,如果依赖项是硬编码的,模拟出这些依赖项就不那么容易了。这时就要看模拟框架的能力是否允许模拟最终类、静态方法等。
也许值得一提的是,“与遗留代码共处”的书中介绍了一些模式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接