【问题标题】:User Interface Testing [closed]用户界面测试[关闭]
【发布时间】:2010-09-07 16:22:53
【问题描述】:

我们正在开发一个大型项目,其中包含一些新的/修改的 GUI 功能。过去我们发现,在添加新功能时,我们经常会在相关代码中引入新问题。

我们有非技术用户执行测试,但他们经常遗漏部分内容并让错误漏掉。

是否有组织 WinForms 项目的 UI 测试的最佳实践?有没有办法让它自动化?

【问题讨论】:

  • 您会听到很多“GUI 测试自动化很脆弱”或“自动化 GUI 测试是噩梦”的说法。通常来自那些看到随机人完成测试自动化的人或从未见过 gui 自动化的人只是听说它是如何失败的。无论哪种方式,测试自动化都需要承诺和熟练的东西。工具只是工具,还有很多工具。他们很少:testingfaqs.org/t-gui.html

标签: user-interface testing integration-testing


【解决方案1】:

有一些 GUI 测试工具可以为您点击按钮和其他东西,但根据我的经验,它们非常脆弱。

最好的办法是让你的 UI 层尽可能的薄。您的事件处理程序类最好只有一两行调用其他更可测试的类。这样您就可以在单元测试中测试您的业务逻辑,而无需实际单击按钮。

【讨论】:

    【解决方案2】:

    我对组织或最佳实践无能为力,但NUnit 扩展似乎可用于表单测试,NUnitForms

    【讨论】:

      【解决方案3】:

      下面的书是对该主题的介绍。 有多少开发者就有多少种方法..

      http://pragprog.com/titles/idgtr/scripted-gui-testing-with-ruby

      【讨论】:

        【解决方案4】:

        您可以使用 White 框架自动执行 GUI 测试。

        还可以考虑使用 TDD 友好设计,即使用 MVP/MVC 模式。

        我强烈建议您阅读 Microsoft 模式与实践团队的文档。

        特别是看看Composite UI application blockCompositeWPF

        这些项目专门设计用于为您提供 GUI 应用程序开发的最佳实践,包括测试驱动的 UI。

        【讨论】:

        • "同时考虑使用 TDD 友好的设计,即使用 MVP/MVC 模式。"如果我错了,请纠正我,但这不是“测试友好设计”。我认为 TDD 建议的不仅仅是测试。
        【解决方案5】:

        保持 GUI 层尽可能薄。 Michael Feathers 的文章,The Humble Dialog Box,是经典之作。另请查看 Martin Fowler 的Passive View。我还听说“自动按钮点击器”很脆弱,而且维护测试的时间比维护代码的时间要多。

        【讨论】:

          【解决方案6】:

          有许多工具和库可以自动执行 WinForms 测试,从 White 等开源解决方案到 HP QuickTest Pro 等昂贵的商业解决方案。如果您想推出自己的自动化框架,.NET 中还有 UIAutomation 命名空间。但自动化的真正成本在于实施所需的时间和专业技能。可维护性也是自动化测试设计最重要的方面之一;您不想花费过多的资源使自动化资产与您的应用程序保持同步。还有很多因素会影响自动化决策,具体取决于您的特定应用程序和组织。

          最好的办法是对该主题进行更多研究,并查看一些专门的测试网站,例如http://www.sqaforums.com

          【讨论】:

            【解决方案7】:

            我发现这种快速而肮脏的方法可以在各种浏览器中测试网页布局。它被称为browsershots.org。我们的客户现在需要 5 个浏览器的支持,而完整的回归测试需要大约一周的时间。该服务将提供大约 70 多个浏览器和版本的屏幕截图。我把它们打印出来,然后把它们放在灯光下。如果没有排好,肯定是布局有问题。

            【讨论】:

              【解决方案8】:

              几年前我使用了类似于此产品 (http://www.tethyssolutions.com/product.htm) 和此产品 (http://www.mjtnet.com/macro_scheduler.htm) 的试用下载,我对结果感到满意。这些都是非常便宜的解决方案,其中一些宏记录器产品实际上可以用于自动化测试。

              【讨论】:

                【解决方案9】:

                现在可用的一种新方法是使用 Ruby,通过名为 win32-autogui 的 Ruby gem。这为测试 Windows GUI 应用程序提供了一个框架。将它与 Ruby 工具 RSpec 和 Cucumber 结合使用,就构成了一个相当强大的测试框架。

                【讨论】:

                  【解决方案10】:

                  如何组织 UI 测试取决于您如何设计测试用例。

                  在单元测试级别自动化Windows Forms应用程序可以使用TDD框架,例如NUnit;或者使用 BDD 框架,例如 NSpec。

                  在功能测试级别自动化 Windows 窗体应用程序可以使用 White、CodedUI,甚至直接使用 Windows Automation API 3.0(UI 自动化和 MSAA)。

                  由于上面提到的所有这些东西都是技术而不是解决方案,因此最好在开始编写自动化测试之前基于这些技术构建一些基本的测试自动化/脚本框架。

                  【讨论】:

                  • 你的回答平淡无奇。
                  【解决方案11】:

                  如果有人觉得这很有用:

                  List of GUI testing tools 在维基百科上找到。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-11-16
                    • 1970-01-01
                    • 1970-01-01
                    • 2014-02-20
                    • 2010-10-24
                    • 2011-12-29
                    相关资源
                    最近更新 更多