图形用户界面自动化测试 - 窗口句柄问题


2

我们公司正在为紧凑型框架应用程序编写GUI自动化测试工具。我们最初搜索了很多工具,但没有一个适合我们。

通过使用该工具,您可以记录测试用例并将它们组合到测试套件中。对于每个测试套件,都会生成一个应用程序,它启动被测应用程序并模拟用户输入。

一般来说这个工具工作正常,但是因为我们用窗口句柄来模拟用户输入,所以你不能做很多事情。例如,我们不可能获得控件的名称(我们只是获取标题)。

使用窗口句柄的另一个问题是检查更改。目前,我们模拟点击一个控件,并根据结果我们知道应用程序是否已经进入下一步。

是否有任何其他(更简单)的方式来做这样的事情(例如消息队列或其他)?

1

如果自动GUI测试工具具有关于框架应用程序编写的知识,则可以使用该信息来制作更好或更高级的脚本。例如TestComplete了解Borland的VCL和WinForms。如果您使用Windows Presentation Foundation测试应用程序的构建,则可为此提供高级的支持build in


2

有趣的问题!我在一段时间内没有做过任何低级别(认为是Win32)的Windows编程,但这是我会做的。

使用命名管道让应用程序监听它。使用这个命名管道作为通信媒介,实现一个真正简单的协议,从而您可以查询应用程序中给定HWND的控件名称或其他您认为有用的东西。确保协议足够丰富,以便在应用程序和测试框架之间交换足够的信息。确保测试框架不会从应用程序中产生太多“特殊行为”,因为那样你就不会真正在测试这些功能,而是测试框架。

可能有更优雅更酷的方式来实现这一点,但这是我从头开始记住的,只使用简单的Win32 API调用。

我们在工作中为产品实现的另一种方法是在事件脚本中记录用户事件,例如鼠标点击和关键事件。这应该足够丰富,以便您可以让应用程序回放它,将这些事件人为注入到消息队列中,并使其具有与第一次记录脚本时相同的方式。您在播放剧本时基本上模拟了用户。

除此之外,你可以记录任何重要的国家(用户的文档,喜好,GUI控制层次等),一旦在录制脚本,而一旦当你播放。这给你两组你可以比较的数据,以确保一切都保持不变。这个解决方案为您提供了不易修改的测试(如果您的GUI改变,您必须重新记录),但这样做提供了令人敬畏的回归测试。 (编辑:这也是一个了不起的质量保证测试工具,例如:只有你的用户记录他们的行为,如果有崩溃,你有很容易通过播放脚本)

祝你好运!

卡尔


0

我终于找到了解决测试的应用程序和该应用程序被测之间进行通信:Managed Spy。它基本上是一个建立在ManagedSpyLib之上的.NET应用程序。

ManagedSpyLib允许编程访问另一个进程的Windows窗体控件。为此,它使用Window Hooks和内存映射文件。

感谢所有帮助我解决问题的人!


0

托管间谍不提供紧凑框架应用程序的解决方案。

Jamo Solutions公司(www.jamosolutions.com)符合移动设备自动化测试的要求,包括.net紧凑型框架应用程序。


1

使用NUnitForms。我使用他们提供单一和多线程应用程序非常成功,你不必担心把手之类的东西

以下是有关NUnitForms值得一读

NUnitForms and failed DragDrop registration - problem of MTA vs STA

Compiled application exe GUI testing with NUnitForms一些帖子