我们正在开展一个涉及大量新/修改的GUI功能的大型项目。遗憾的是,我们过去在添加新功能时经常会在相关代码中引入新问题。
我们让非技术人员进行测试,但他们经常会漏掉某些部分并使错误通过测试。
是否有任何最佳实践可以组织WinForms项目的UI测试?是否有自动化的方法可以实现?
我们正在开展一个涉及大量新/修改的GUI功能的大型项目。遗憾的是,我们过去在添加新功能时经常会在相关代码中引入新问题。
我们让非技术人员进行测试,但他们经常会漏掉某些部分并使错误通过测试。
是否有任何最佳实践可以组织WinForms项目的UI测试?是否有自动化的方法可以实现?
有一些GUI测试工具可以帮你点击按钮等操作,但在我的经验中它们非常脆弱。
最好的做法是尽可能保持你的UI层面尽可能薄。你的事件处理类应该只有一两行调用其他更可测试的类。这样你就可以在单元测试中测试你的业务逻辑而无需实际进行按钮点击。
以下是一本介绍这个主题的书。 就像有很多开发者一样,也有很多种方法。
http://pragprog.com/titles/idgtr/scripted-gui-testing-with-ruby
现在有许多可以自动化WinForms测试的工具和库,包括像White这样的开源解决方案,以及昂贵的商业解决方案,例如HP QuickTest Pro。另外,在.NET中还有UIAutomation命名空间,如果您想要编写自己的自动化框架的话也是可以的。但自动化真正的成本在于实施所需的时间和专业技能。可维护性也是自动化测试设计中最重要的方面之一;您不希望花费过多的资源来保持自动化资产与应用程序的同步。还有很多因素影响是否采用自动化的决策,这些因素将取决于您的特定应用程序和组织。
你最好的选择是对这个主题进行更多的研究,并查看一些专门的测试网站,比如 http://www.sqaforums.com。
如何组织UI测试取决于您如何设计测试用例。
在单元测试级别中自动化Windows Forms应用程序可以使用TDD框架,例如NUnit;或使用BDD框架,例如NSpec。
在功能测试级别中自动化Windows Forms应用程序可以使用White、CodedUI,甚至直接使用Windows Automation API 3.0(UI Automation和MSAA)。
由于上述所有内容都是技术而不是解决方案,因此最好基于这些技术构建一些基本的测试自动化/脚本框架,然后再开始编写自动化测试。
我曾经使用过类似于这个产品(http://www.tethyssolutions.com/product.htm)和这个产品(http://www.mjtnet.com/macro_scheduler.htm)的试用下载,而且我对结果感到满意。这些都是相当便宜的解决方案,其中一些宏记录器产品实际上可以用于自动化测试。