GUI测试工具和反馈

15

我正在解决GUI测试问题,但我不确定最佳方法是什么。我的GUI使用传统的MVC框架构建,因此我可以轻松地测试GUI的逻辑部分而无需启动GUI本身。但是,当涉及测试GUI功能时,我不确定是否应该担心单独测试GUI组件,还是主要集中于对系统进行功能测试。这是一个相当复杂的系统,测试GUI通常涉及向服务器发送消息,然后观察GUI上的响应。我的初步想法是在这里进行功能测试,因为我需要整个系统运行才能真正测试UI。欢迎就此问题发表评论。

13个回答

7
我可以提供其他GUI测试工具: Thoughtworks White, PyWinAuto, AutoIt, AutoHotKey
尝试自动化GUI时需要牢记的一件事是,唯一的方法是在构建GUI时考虑到自动化。在项目初期就打击认为他们的GUI不应支持可测试性的开发人员,并愉快地公开所有可以帮助自动化的钩子,以满足您测试需求的要求。

4
您至少有两个问题 - 环境(服务器)的复杂性和 GUI 的复杂性。
有许多工具可用于自动化 GUI 测试。所有这些工具或多或少都是脆弱的,并且需要在布局发生变化时进行相当频繁的维护。使用它们可以获得好处,但这是一项长期的利益。
另一方面,环境是一个可以被驯服的领域。如果您的应用程序使用依赖注入 / 反转技术构建(其中您将服务器组件“注入”到应用程序中),则可以使用相关服务器接口的“模拟”来使您能够编写测试用例。
结合这两种技术将允许您自动化 GUI 测试。

3
根据你在MVC(这是一个过度使用的术语)光谱中所处的位置,测试视图可能是一个机械过程,确保正确的模型方法响应于视图的正确输入,以测试一些客户端验证。许多从MVC演变而来的模式(我想到被动视图监督控制器)正在努力使视图需要很少的测试,因为它实际上只是将用户输入连接到Presenter或Model(取决于您使用的确切模式变体)。"测试GUI通常涉及向服务器发送消息,然后观察GUI上的响应"这个声明让我担心。我立即想到,应该使用服务器的模拟或存根来测试GUI,以测试是否发生了正确的交互并且GUI做出了适当的响应。如果您需要服务器的自动化功能测试,则不需要让GUI参与其中。

2

Mercury QuickTest Pro、Borland SilkTest 和 Ranorex Recorder 是一些 GUI 测试工具。


水星(Mercury)的唯一“快速”之处就是它的名字中包含了这个词。你想听听关于硒(Selenium)命名选择的故事吗? - Esko

2
如果您的应用程序是基于Web的,您可以使用像WatiNSelenium这样的工具编写测试。
如果您的应用程序是基于Windows .NET的,您可以尝试White

1

尝试走廊可用性测试。它既便宜又有用:去最近的走廊,抓住第一个经过的人,让他们坐在你的电脑前使用你的软件。看着他们的肩膀,你会看到他们尝试做什么,什么让他们感到沮丧等等。多做几次并注意模式。


1
这对于测试GUI设计很好,但它不允许轻松地和重复地检查GUI(按照设计)是否在最近的提交中出现问题或仍然正常工作。 - Joanis

1
我的建议是:忘记传统的GUI测试吧,它太昂贵了。编写测试需要很长时间,工具也不是非常稳定,因此测试结果不可靠。代码与测试之间的耦合非常强,你将花费大量时间进行维护。
新趋势是忽略GUI测试。以Fowler的ModelViewPresenter模式为指导link text

你能详细阐述一下吗?可以引用一些趋势方面的参考资料吗? - Rekin

1

我能说得最清楚的是:

不要浪费时间编写自动化GUI测试

特别是当你使用MVC应用程序时 - 在你的情况下,当你向服务器发送消息时,你可以确保正确的消息编号返回并完成。你可以添加一些额外的情况 - 或者完全另一个测试来确保GUI将消息ID转换为正确的字符串,但你只需要运行那个测试一次。


1
我们在项目中确实会使用GUI测试,但它也有其副作用。然而,开发人员有一个关键的设计原则:尽可能保持GUI层的轻量化! 这意味着GUI类中没有逻辑。将此分离为负责输入验证等的表示模型。
在Unix机器上进行测试时,我们使用Xvfb服务器作为DISPLAY来运行测试。

0
你需要的是“验收测试”。如何进行取决于你使用的框架、创建的应用程序类型以及使用的编程语言。如果你在谷歌上搜索你所使用的技术和上述短语,你应该能找到一些可用的工具。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接