【问题标题】:GUI Testing tools and feedbacks [closed]GUI测试[关闭]
【发布时间】:2010-09-10 15:51:49
【问题描述】:

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

谢谢, 杰夫

【问题讨论】:

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


    【解决方案1】:

    我可以提供的其他 GUI 测试工具有: Thoughtworks White, PyWinAuto, AutoIt, AutoHotKey.

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

    【讨论】:

      【解决方案2】:

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

      有许多自动化 GUI 测试的工具。所有这些或多或少都是脆弱的,并且在面对不断变化的布局时需要几乎不断的维护。使用它们有好处,但这是一个长期的好处。

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

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

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

      【讨论】:

        【解决方案3】:

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

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

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

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

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

          • 关于 Mercury 的唯一“快速”事情是其名称中的一部分。您想听听有关 Selenium 名称选择的故事吗?
          【解决方案5】:

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

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

          【讨论】:

            【解决方案6】:

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

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

            【讨论】:

            • 您能详细说明一下吗?参考一些趋势资料?
            【解决方案7】:

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

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

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

            【讨论】:

              【解决方案8】:

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

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

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

              【讨论】:

                【解决方案9】:

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

                【讨论】:

                • 这对于测试 GUI 设计很有用,但它不允许轻松地反复检查 GUI(按照它的设计)是否在最近的提交中被破坏,或者它是否仍然可以正常工作。
                【解决方案10】:

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

                【讨论】:

                  【解决方案11】:

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

                  【讨论】:

                    【解决方案12】:

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

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

                    【讨论】:

                      【解决方案13】:

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

                      【讨论】:

                        猜你喜欢
                        • 2011-07-21
                        • 2010-09-18
                        • 1970-01-01
                        • 2010-09-10
                        • 2017-03-11
                        • 2010-10-10
                        • 2018-08-31
                        • 2011-01-27
                        • 2013-04-21
                        相关资源
                        最近更新 更多