这个问题与单元测试无关。它适用于桌面产品。
这是关于gui的测试,并测试在正确的时间在正确的文本框中输入正确的东西。
我曾经在二手WinRunner工作的公司(不同的部门,所以我不太了解那个),但现在惠普关闭了这个公司,但他们似乎并不担心你是否留在惠普或者去别处。在您注册之前,您无法阅读该产品,这很烦人。
该工具必须与MFC一起使用(不可协商),理想的工具也将......
其他SO用户为自动GUI测试做了什么?
答案 0 :(得分:7)
我们对Rational Robot(RRAFS)使用SAFS framework。还有WinRunner(WRAFS)的SAFS实现,看起来他们有一个新的“基于图像的测试”实现,我不熟悉。
这个框架可以很好地从测试脚本中分离UI实现。我测试了由两个不同团队开发的四个Web应用程序版本(一个团队使用经典ASP,一个使用ASP.NET),我只需要更改UI对象的应用程序映射,测试本身不需要变化
那就是说,框架的语言很麻烦,需要习惯。就语言结构而言,它不是很强大,但通过一些努力,你可以做任何你需要做的事情。它有点像Windows批处理语言中的“编程”,但对于测试;)
满足您的上述个人要求:
1)该工具必须使用MFC(不可协商)。 SAFS框架使用第三方“记录回放”工具来驱动测试,例如Rational Robot或Mercury WinRunner。如果该工具可以与MFC应用程序交互,那么框架可以。我不知道“基于图像的测试”实现如何推动测试,但我猜它也适用于MFC。
2)自动化。 SAFS框架与STAF framework集成,允许您自动执行测试。我有一个概念验证测试,它使用STAF从映像池启动VM映像,安装正在测试的应用程序,运行RRAFS测试,并将结果放在Web服务器上供其他人使用。
3)可编写脚本。 是的,但如上所述,它不是最强大的编程语言。我写了一个Excel加载项,我们的测试人员用它来编写测试,简化了一些事情。
4)自动使用不同的屏幕分辨率。 是的,因为它看起来是UI对象的“幕后”,而不是屏幕。除了“基于图像的测试”选项......
5)能够“窥探”各个静态文本框等 是的,您可以等待UI对象出现,消失,获取值,更改值等等。
6)足够直观,以便非程序员可以创建脚本。 经过一些培训。我们的成功有限。一些质量保证人员可以编写测试,有些人会努力。
7)拥有报告工具,包括个人用户的电子邮件。 是的,使用STAF框架,您可以将结果发布到Web服务器,发送电子邮件等。
答案 1 :(得分:4)
这里有很多好的答案,但我想解决这个目标陈述,特别是:
我能理解你为什么要这样,但这比你想象的要难得多。虽然您可以找到任何数量的工具,但声明可以轻松编写脚本,但在实践中,您至少需要自动化团队中的一些人了解编程。编写相当健壮的脚本将涉及一个或多个循环,if / then / else和子例程调用。不是那些非程序员会发现直觉的东西。
要特别警惕您可以使用工具“记录”某人,然后将其播放进行测试。这种“自动化”通常是如此脆弱,以至于您最终会修改或重新录制脚本,几乎每次软件都会发生变化。
答案 2 :(得分:4)
来自强大的Mercury / HP背景,我强烈建议您使用QuickTest Professional进行GUI测试。它具有许多与WinRunner相同的功能,但没有很多代码。简单的GUI检查可以通过QTP接口完成,只需最少的自定义VB代码即可。使用QTP中的数据表进行简单比较,可以检查框旁边的文本。
如果你习惯了WinRunner,并且知道VBScript(不是那么多TSL),那么我肯定会看看QTP。
就您的其他要求而言,QTP还具有Spy功能,如WinRunner,它将列出您可以对对象执行的所有属性和操作。至于使用的简单性,在我以前的工作中,我们会让业务或系统测试人员创建简单的烟雾脚本,然后我会接受它们并对它们进行编码以进行更深入的测试(多个数据值,错误检查等)。至于报告,QTP将对您输入的标签上的通过/失败/警告进行简单报告,以及您可以输入的自定义数据。因此,您可以使用case语句根据结果填充输出值。它不会发送电子邮件,但如果你与TestDirector / QualityCenter集成,你可以在那里设置,同时自动启动你的脚本,并从那里参数化数据(这很好发送回去测试人员在没有参与脚本itseld的情况下填充数据。
专利
答案 3 :(得分:2)
答案 4 :(得分:2)
桌面或Web应用程序在这里都有相同的测试模式(我曾在两者中工作过。)
在UI中放置尽可能少的逻辑并测试其下的所有内容。所以你说,但是如果我想测试这样的话,当点击一个按钮时会发生什么?单击该按钮时调用的方法应该调用另一个实际进行思考的类。
你可能会说,但我正在使用一些只能存在于我的UI中的静态类/方法,用适配器包装它们并利用该接口来使代码可以测试。
您要自动化的GUI测试部分应在UI下自动执行。您的GUI的某些部分无法自动化。检查以确保“看起来正确”,或测试您可以看到某些元素等等。所有这些都是您的人类应该做的事情。确保事件正确触发,并且从业务对象中正确地返回了值,这就是所有单元测试。
我可以从你的问题中看出你已经非常确定你需要一个自动GUI测试器,但这不是适合这项工作的工具。如果您决定使用它,那么您正试图找到做错事的最佳方法。
如果您认为这不是单元测试,因为您正在测试GUI交互,那么我可以保证您的单元测试不够接近您的UI。如果你是的话,你会觉得你所测试的大部分都是多余的。
如果您不同意我的意见,请发布一些理由,我们会将其排除在外。
答案 5 :(得分:0)
如果您正在测试网络产品,还有更多(开源)替代方案。对于桌面产品,下面是一些流行的通用桌面GUI自动化工具(没有特定的顺序)。我亲自与所有这些人一起工作,他们都完成了工作。如果您选择使用供应商工具,请获取您正在考虑的POC,并根据最适合公司的工具做出决策。一个工具可能更适合特定应用程序,但可能还有其他项目/应用程序需要考虑。