我是一名 Java 开发人员。我在所谓的最佳实践中“长大”。然后我接受了我现在的工作。我在 Java/SOA 团队和 ERP 团队之间做出了选择。有人告诉我,加入 ERP 团队会让我对业务运作方式有最好的了解(不是在技术方面,而是在业务方面。)所以我选择了 ERP。
我发现一个系统包含超过 400 万行“Progress 4GL”代码(因为“4GL 听起来很糟糕”而重命名为 Openedge ABL)代码,分布在大约 11000 个文件中。最好的部分是,没有文件存在超过一个文件夹。所以你有大约 50 个文件夹,每个文件夹中有 300-400 个文件。幸运的是,许多文件在 7 年多的时间里都没有被修改过,其中许多文件已被弃用(但我们不会“以防万一”将它们从版本控制中删除。甚至不要让我开始处理那个文件。 ) 所以我们实际上只需要测试大约 150 万行代码。“仅有的。”
我可以继续谈论该系统的不良做法。底线是多年来,开发人员没有选择拒绝。这是“给我给我给我”,再加上很多承包商进进出出。现在,他们想清理自己的行为。
我建议的第一件事是测试。他们说,基本上“我们多年来一直想进行测试,但我们真的不知道从哪里开始。” 业务逻辑和数据库访问被嵌入到 UI 中。(我会说 GUI,但它不是图形的,它在大型机上。即使是订单输入人员也可以远程登录。)
所以这几乎是最坏的情况。数百万行代码。超过 10 亿美元的年销售额通过该系统运行,因此不会被重写(显然“它按原样工作。”)没有面向对象。没有正式的或自动化的测试。我们的测试人员也是编写规范的人(这使他们倾向于“推动项目通过”。)
我越来越绝望了。我什至愿意在业余时间编写我们需要的任何测试框架(开源框架中的 Openedge 并不多)。我相信它会很快收回成本。我们可以从哪里开始?这里有没有人遇到过类似的项目(即使规模较小),如果有,您是如何应对和克服的?
更新:我已经与我的经理进行了交谈,并且我已批准为创建测试工具制定规范/时间表。起初,我听到的是:“我们真正需要做的是编写一些测试。” 我回答说:“如果我们没有办法运行它们,那么进行测试并不会真正帮助我们。我一直在研究 ProUnit(OEUnit 的旧名称)并认为它对我们有用。” “我们应该用它写一些测试。” 重复了大约 10 分钟,他才意识到这并不像下载库并“使用它”那么简单。但是,批准编写规范以创建测试工具是一个开始!谢谢大家的意见!