用户界面测试

16

我们正在开展一个涉及大量新/修改的GUI功能的大型项目。遗憾的是,我们过去在添加新功能时经常会在相关代码中引入新问题。

我们让非技术人员进行测试,但他们经常会漏掉某些部分并使错误通过测试。

是否有任何最佳实践可以组织WinForms项目的UI测试?是否有自动化的方法可以实现?


你可能会听到很多人说“GUI测试自动化很脆弱”或者“自动化GUI测试是噩梦”。通常这些话都来自于那些看过随意编写的测试自动化代码的人,或者是那些只是听说过GUI自动化失败的人。无论哪种情况,测试自动化都需要承诺和熟练的技能。工具只是工具,有很多种。其中一些工具可以在这里找到:http://www.testingfaqs.org/t-gui.html - yoosiba
11个回答

19

有一些GUI测试工具可以帮你点击按钮等操作,但在我的经验中它们非常脆弱。

最好的做法是尽可能保持你的UI层面尽可能薄。你的事件处理类应该只有一两行调用其他更可测试的类。这样你就可以在单元测试中测试你的业务逻辑而无需实际进行按钮点击。


6
你可以使用White框架来自动化GUI测试。
同时考虑使用TDD友好的设计,即使用MVP/MVC模式。
我强烈建议您阅读Microsoft patterns&practices团队的文档。
特别是要查看Composite UI application blockCompositeWPF
这些项目专门设计用于为您提供最佳的GUI应用程序开发实践,包括测试驱动的UI。

还应考虑使用TDD友好的设计,即使用MVP/MVC模式。请纠正我如果我错了,但这不是“测试”友好的设计吗?我认为TDD建议的远不止于测试。 - sixtyfootersdude

4
保持GUI层尽可能薄。Michael Feathers的文章《谦逊的对话框》是经典之作。同时也可以查看Martin Fowler的被动视图。我还听说“自动按钮点击器”很脆弱,很容易花费更多时间来维护测试而不是代码。

2

1

1

现在有许多可以自动化WinForms测试的工具和库,包括像White这样的开源解决方案,以及昂贵的商业解决方案,例如HP QuickTest Pro。另外,在.NET中还有UIAutomation命名空间,如果您想要编写自己的自动化框架的话也是可以的。但自动化真正的成本在于实施所需的时间和专业技能。可维护性也是自动化测试设计中最重要的方面之一;您不希望花费过多的资源来保持自动化资产与应用程序的同步。还有很多因素影响是否采用自动化的决策,这些因素将取决于您的特定应用程序和组织。

你最好的选择是对这个主题进行更多的研究,并查看一些专门的测试网站,比如 http://www.sqaforums.com


1
我找到了一种快速而简单的方法,可以在各种浏览器中测试网页布局。它叫做browsershots.org。我们的客户目前需要在5个浏览器上进行支持,并且需要花费约一周时间进行完整的回归测试。该服务将提供70多个浏览器和版本的屏幕截图。我打印它们出来,然后拿起页面对着光线看。如果它们不对齐,就必须存在布局问题。

0

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

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

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

由于上述所有内容都是技术而不是解决方案,因此最好基于这些技术构建一些基本的测试自动化/脚本框架,然后再开始编写自动化测试。


你的回答毫无内容和深度。 - nalply

0

0

我无法提供组织或最佳实践方面的帮助,但是似乎有一个NUnit扩展可用于表单测试,NUnitForms


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接