15

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

谢谢,杰夫

4

13 回答 13

7

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

尝试自动化 GUI 时要记住的一件事是,您可以做到这一点的唯一方法是在构建 GUI 时考虑到自动化。粉碎那些认为他们的 GUI 不应该在项目早期支持可测试性的开发人员,并愉快地公开所有有助于按需自动化的钩子,因为您的测试需要。

于 2008-09-18T17:15:38.063 回答
4

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

有许多自动化 GUI 测试的工具。所有这些或多或少都是脆弱的,面对不断变化的布局,需要进行大量的持续维护。使用它们有好处,但这是一个长期的好处。

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

结合这两种技术将允许您自动化 GUI 测试。

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

于 2008-09-18T12:34:38.600 回答
3

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

许多从 MVC 演变而来的模式(我在想被动视图监督控制器)都在努力使视图只需要很少的测试,因为它实际上只是将用户输入连接到演示者或模型(取决于确切的您正在使用的模式的变体)。

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

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

如果您需要服务器的自动化功能测试,我认为不需要让 GUI 参与其中。

于 2008-09-18T12:38:16.220 回答
2

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

于 2008-09-18T12:36:01.577 回答
2

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

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

于 2008-09-18T12:37:27.657 回答
1

我的建议:忘记传统的 GUI 测试。太贵。编写测试代码需要很多时间,工具也不是很稳定,所以你会得到不可靠的测试结果。代码和测试之间的耦合非常强,你会花很多时间在维护上。

新趋势是忽略 GUI 测试。请参阅 Fowler 的 ModelViewPresenter 模式作为指南链接文本

于 2008-09-18T12:39:18.573 回答
1

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

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

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

于 2008-09-18T17:03:57.453 回答
1

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

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

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

于 2008-09-18T17:07:43.717 回答
1

Try the hallway usability test. It's cheap and useful: go to the nearest hallway, grab the first person that passes, make them sit at your computer and use your software. Watch over their shoulder, you will see what they try to do, what frustrates them, and so on. Do this a few times and notice the patterns.

于 2009-09-25T21:43:15.823 回答
0

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

于 2008-09-18T12:28:53.747 回答
0

不要错过“GUI”中的“U”
我的意思是:如果您尝试测试的一切正常并且按计划工作,那么您可以遵循Seb Rose 的回答

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

于 2008-09-19T07:25:50.627 回答
0

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

于 2008-09-23T11:24:23.817 回答
0

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

于 2009-05-01T17:56:59.133 回答