背景 我在一个由 7 名开发人员和 2 名测试人员组成的团队中工作,负责物流系统。我们使用 Delphi 2007 和模型驱动开发,使用Bold for Delphi作为框架。该系统已经投入生产大约 7 年,拥有大约 170 万行代码。我们在 4-5 周后发布到生产环境,几乎每次发布后,我们都必须为我们没有发现的错误做一些补丁。这对我们和客户来说当然是令人恼火的。
当前测试 解决方案当然是更自动化的测试。目前我们有手动测试。以空数据库开始并从建模方法添加数据的 Testdbgenerator。我们还有Testcomplete,它运行一些非常基本的脚本来测试 GUI。时间不足使我们无法添加更多测试,但脚本对应用程序的更改也很敏感。几年前,我真的尝试过使用 DUnit 进行单元测试,但几天后我放弃了。这些单元的连接太强了。
单元测试先决条件 我想我知道单元测试的一些先决条件:
- 编写做一件事的小方法,但要把它做好。
- 不要重复自己。
- 首先编写失败的测试,然后编写代码使测试通过。
- 单元之间的连接应该是松散的。他们应该不太了解对方。
- 使用依赖注入。
使用框架 我们可能会升级到 Delphi XE2,主要是因为 64 位编译器。我对Spring进行了一些研究,但这需要从 D2007 进行更新,而且现在不会发生。或许明年。
问题 大多数代码仍未自动测试。那么提高旧代码的可测试性的最佳途径是什么?或者最好只为新方法编写测试?我不确定增加自动测试的最佳方法是什么,欢迎对此发表评论。我们可以时不时使用 D2007 + DUnit,然后稍后轻松更改为 Delphi XE2 + Spring 吗?
编辑:关于手动测试的当前测试方法,正如克里斯所说的那样,只是“重击并尝试打破它”。