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

谢谢,杰夫

有帮助吗?

解决方案

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

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

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

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

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

其他提示

我可以提供的其他 GUI 测试工具有:Thoughtworks 白色, PyWinAuto, 自动它, 自动热键.

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

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

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

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

我立即想到应该使用服务器的模拟或存根来测试 GUI,以测试是否发生了正确的交互以及 GUI 是否做出了适当的响应。

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

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

如果您的应用程序是基于 Web 的,您可以使用以下工具编写测试 等待 或者 .

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

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

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

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

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

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

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

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

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

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

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

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

不要错过“GUI”中的“U”
我是说:如果您尝试测试的内容一切正常并且按计划工作,那么您可以按照 塞布·罗斯的回答.

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top