GUI测试

时间:2008-09-18 12:26:52

标签: unit-testing user-interface functional-programming

我正在研究测试我的GUI的问题,我不完全确定这里的最佳方法。我的GUI是使用传统的MVC框架构建的,因此我可以轻松地测试GUI的逻辑部分,而无需启动GUI本身。但是,当涉及到测试GUI的功能时,我不确定我是否应该担心单独测试GUI组件,或者我是否应该主要关注功能测试系统。这是一个非常复杂的系统,其中测试GUI经常涉及向服务器发送消息,然后在GUI上观察响应。我最初的想法是功能测试是这里的方式,因为我需要一个完整的系统运行来真正测试UI。关于这个问题的评论将不胜感激。

谢谢, 杰夫

13 个答案:

答案 0 :(得分:7)

我可以提供的其他GUI测试工具包括: Thoughtworks WhitePyWinAutoAutoItAutoHotKey

在尝试自动化GUI时要记住的一件事是,您可以做到的唯一方法是在构建GUI时考虑到自动化。 Crush devs认为他们的GUI不应该在项目的早期支持可测试性,并且很乐意公开所有可以帮助按需自动化的钩子,因为您的测试需求需要。

答案 1 :(得分:4)

你有(至少)2个问题 - 环境的复杂性(服务器)和GUI的复杂性。

有许多工具可用于自动化GUI测试。所有这些都或多或少地脆弱,并且面对不断变化的布局需要非常持久的维护。使用它们可以获得好处,但这是一个长期的好处。

另一方面,环境是一个可以驯服的区域。如果您的应用程序使用依赖注入/反转技术(将服务器组件注入应用程序)进行架构,那么您可以使用相关服务器接口的“模拟”来编写测试用例脚本。

结合这两种技术,您可以自动进行GUI测试。

最后一个想法 - 祝你好运!

答案 2 :(得分:3)

根据您所处的MVC(这是一个过度使用的术语)的位置,测试视图可能是一个机械过程,确保调用正确的模型方法以响应视图的正确输入以测试某些客户端对谁知道的一面验证。

很多从MVC演变而来的模式(我正在考虑passive viewsupervising controller)正在努力使视图需要很少的测试,因为它实际上只是将用户输入连接到演示者或模型(取决于您正在使用的模式的确切变体)。

“测试GUI经常涉及向服务器发送消息,然后在GUI上观察响应”这句话让我担心。

我立刻想到应该使用服务器的模拟或存根来测试GUI,以测试正在发生的正确交互并且GUI会做出适当的响应。

如果您需要对服务器进行自动功能测试,我认为没有必要让GUI参与其中。

答案 3 :(得分:2)

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

答案 4 :(得分:2)

如果您的应用程序是基于网络的,您可以使用WatiNSelenium等工具编写测试。

如果您的应用程序是基于Windows .NET的,则可以尝试White

答案 5 :(得分:1)

我的建议:忘记传统的GUI测试。太贵。编写测试需要花费大量时间,工具不是很稳定,因此您将获得不可靠的测试结果。代码和测试之间的耦合非常强大,您将花费大量时间进行维护。

新趋势是忽略GUI测试。请参阅Fowler的ModelViewPresenter模式作为指南link text

答案 6 :(得分:1)

我能说的最清楚的方式是:

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

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

答案 7 :(得分:1)

我们在项目中加入了GUI测试,它有副作用。然而,开发人员有一个关键的设计原则:保持GUI层尽可能薄!

这意味着GUI类中没有逻辑。在负责输入验证等的演示模型中将其分开。

为了在Unix机器上进行测试,我们在运行测试时使用Xvfb服务器作为DISPLAY。

答案 8 :(得分:1)

试试hallway usability test。这是便宜和有用的:去最近的走廊,抓住第一个通过的人,让他们坐在你的电脑上,并使用你的软件。看着他们的肩膀,你会看到他们试图做什么,让他们感到沮丧,等等。这样做几次并注意模式。

答案 9 :(得分:0)

您正在寻找的是“验收测试”。如何操作取决于您正在使用的框架,您正在创建的应用程序类型以及使用何种语言。如果你谷歌你的特定技术和上面的短语,你应该找到一些你可以使用的工具。

答案 10 :(得分:0)

不要错过'GUI'中的'U'
我的意思是:如果您要测试的内容一切正常且按计划运行,那么您可以关注Seb Rose's answer

但请注意,不要忘记 USER界面必须考虑USERS ,而不是任何用户,但应用程序的目标用户。因此,在确定所有工作都必须工作之后,将每个视图/屏幕/表单放在一个测试中,该团队由代表可能使用您的应用程序的每组不同用户的用户组成:高级用户,管理员,MS Office用户,低计算机配置文件用户,高级计算机配置文件用户...然后,获得对每个用户的批评,混合,重新触摸您的GUI,如果它是必要的,然后再回到GUI用户的测试。

答案 11 :(得分:0)

我发现WinTask是进行GUI测试的一种非常好的方法。如果您不经常更改操作系统引用UI的每个元素的方式,WinTask会按名称对UI元素进行寻址,因此即使布局发生更改,仍然可以按下/调整/选择UI元素。

答案 12 :(得分:0)

对于SIMPLE基于Web的GUI测试尝试iMacros(一个简单的Firefox插件,有一个很酷的功能,可以将整个测试发送给另一个人)  请注意,SIMPLE拼写为Initials ...