我正在为我的 Delphi 2009 应用程序构建一个测试工具。测试逻辑相当简单。确保表格正常工作被证明有点复杂。我想要一种模拟真实用户输入的方法,打开一个表单,让它认为有一个用户在输入某些东西并在某些地方点击,并确保它反应正确。我确定有办法做到这一点,我只是不知道它是什么。有谁知道该怎么做?
8 回答
DUnit 有GUITesting.pas,它扩展了测试,因此您可以将点击、键和文本发送到表单上的控件,但仅此而已。
去年那里提到了 CodeGear 开发人员在内部使用的Zombie GUI 测试框架,但自从 Steve 离开 Falafel 后就没有了。
TestComplete 是一个不错的选择。GUI 测试的另一个商业选项是SmarteScript:
对于.net,有用于 GUI 测试 win 应用程序的NUnitForms 。虽然不知道delphi的任何开源。
Test Complete可以测试delphi 表单,但它不是免费的。
这有两个部分,首先你如何自动化 GUI,其次我如何“测试”它是否工作/不工作。
首先:要在 Windows 上自动化 GUI,请尝试使用 AutoIT。它是用于控制 Windows 界面、发送键盘输入事件等的免费工具。http://www.autoitscript.com/autoit3/
其次:测试是一个很大的领域,我不会尝试给你旋风之旅。但是驱动 GUI 和测试结果的机制可以使用 AutoIT 内置的类似 Basic 的语言来处理,或者将它与 Ruby 和 TestUnit(rubys 内置单元测试框架)等语言结合使用。
如果那里没有任何 Deliphi 特有的东西,并且您需要一个快速的解决方案,请尝试一些易于学习的脚本解决方案,例如AutoIt。对于更复杂的脚本,您可以查看Scripted GUI Testing with Ruby。
但请注意,您不应该通过 GUI 测试太多功能,因为这样的测试很可能会中断。如果您最终需要进行过多的 GUI 测试,您可能需要重新考虑设计:将逻辑与 GUI 分离,并使用一些 xUnit 框架直接测试逻辑。
还可以查看有关Windows 表单测试自动化的类似问题。
似乎 DUnit 有一些 gui 测试功能:delphiextreme.com
不完全是您问题的答案,但是 Martin Fowler 有一个关于GUI 架构的非常好的页面(当然是恕我直言) ,其中最后一个条目是“Humble View”架构,专门针对测试驱动的软件开发。值得研究。
这当然不会帮助您完成测试所有控件是否正确连接并处理所有必要事件的任务,但它应该有助于最大限度地减少需要测试的 GUI 代码量。