我们的团队正计划重新考虑遗留代码库中的一些模块。它是一个用java编写的Web应用程序。它根本没有单元测试。
我要求开发人员在重新分解之前为现有功能写一个junit,但我相信这不会非常广泛。
我可以采取哪些其他措施(blackbox / whitebox / processes)来确保重新分解不会干扰任何现有功能。
目前的系统非常稳定,运行时间超过8年。
由于 灰色
答案 0 :(得分:2)
在开始之前阅读Michael Feathers'Working Effectively with Legacy Code。
处于当前状态的代码很可能无法进行有效的单元测试(因为它可能不是单位)。我看到的工作得很好的是集成级测试,只需运行一些合理的输入并记录输出; Web应用程序使这一点特别合适。写下那些,然后发布一些小方法和类 - 单元测试一切新的 - 同时保持那些高级测试工作。从一开始就做比TDD更好的工作,但它绝对可行。
答案 1 :(得分:1)
您可能面临两个问题:代码在现代意义上不是单元可测试的,并且代码中存在尚未被捕获的错误。面对这种情况,我强烈建议您尽可能多地使用黑白盒测试。据我所知,这是一个痛苦的过程,但有一种方法可以缓解它。
您的工程师可以分解几个接口,以便您可以创建一些集成测试。也就是说,如果他们进行重构,他们可以围绕一些公共区域进行巩固,并将应用程序划分为更小的块,以便在开发周期中可预见的未来基本保持静态吗?这将允许您至少一些更大的方法来执行更多测试。它还允许你,qa家伙,根据它所期望的内容来交互现有的代码。
答案 2 :(得分:0)
除了编写更多junits之外,您始终可以record test scripts with JMeter. 包含断言以确保您获得预期的结果。