2008-10-22 177 views
8

这个问题不是关于单元测试。它适用于桌面产品。GUI的自动化测试

这是关于gui的测试和测试,在正确的时间在正确的文本框中输入正确的东西。

我曾经在一家使用过WinRunner的公司工作过(不同部门,所以我不太了解这些),但现在惠普已经关闭了它,但他们似乎并不打扰您是否继续使用惠普或去其他地方。在注册之前,您无法阅读关于该产品的信息,这很烦人。

工具与MFC(非流通)和理想的工具也将工作...

  • 自动化。
  • 可脚本化。
  • 自动使用不同的屏幕分辨率。
  • 能够在单个静态文本框等上“窥探”。
  • 足够直观以便非程序员可以创建脚本。
  • 有报告工具,包括个人用户的电子邮件。

其他SO用户对自动GUI测试有什么作用?

回答

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服务器,发送电子邮件等。

2
+0

请阅读关于单元测试,视觉比较和浏览器UI测试的内容。这是针对桌面产品的。 – 2008-10-22 15:45:19

2

桌面或网络应用程序都有相同的测试模式(我在这两个工作)。

在UI中放置尽可能少的逻辑,并测试下面的所有内容。所以你说,但是如果我想测试点击按钮时发生了这样那样的事情呢?当点击该按钮时调用的方法应该调用另一个实际进行思考的类。

你可能会说,但我正在使用一些只能在我的UI中存在的静态类/方法,用适配器包装这些类并使用该接口来使代码可测试。

您想要自动化的GUI测试部分应该在UI下自动执行。有一些GUI不能自动运行。检查以确保事物“看起来是正确的”,或测试你是否可以看到某些元素等等。所有这些都是你的人类应该做的。确保事件正确启动,并且从业务对象正确返回值,这些都是单元测试。

从您的问题中可以看出,您已经决定需要自动GUI测试器,但这不是适合此工作的正确工具。如果你决定使用它,你试图找到做错事的最佳方式。

如果您认为这不是单元测试,因为您正在测试GUI交互,那么我可以保证您的单元测试不够接近您的用户界面。如果你是,你会觉得你所测试的大部分东西都是多余的。

如果您不同意我的观点,请张贴一些原因,我们会将其解决。

+0

upvoted这个答案,但我认为它有时是有意义的在GUI级自动化。虽然理想情况下不在GUI代码中包含应用程序逻辑,但OP可能会继承一些代码,就像那样?显然,你想重构一下,但是你怎么知道它的工作? – 2008-10-22 21:20:54

+0

这是一个巨大的传统MFC应用程序。为约2000个班级编写单元测试几乎是不可能的。目前只有少数几个函数有测试,只是因为它是新代码。 – 2008-10-23 05:13:42

0

如果您正在测试Web产品,还有更多(开源)替代方案。对于桌面产品,下面有一些流行的通用桌面GUI自动化工具(没有特定的顺序)。我已经与所有这些人亲密合作,他们都完成了这项工作。如果您选择使用供应商工具,请为您正在考虑的工具获取POC,并根据最适合该公司的工具做出决定。一种工具可能更适合特定的应用,但可能有其他项目/应用需要考虑。

  • 的QuickTest专业版(HP的继任者的WinRunner)
  • 的Rational Functional Tester(IBM的接班人机器人)
  • TestPartner
4

很多在这里很好的答案,但我想针对这个目标声明,具体如下:

  • 直观够不那么程序员 可以创建脚本ts

我可以理解你为什么要这样做,但这比你想象的要困难得多。虽然你可以找到任何数量的工具,有会要求使编写脚本很容易,在实践中,你将需要至少有一些人对您的自动化团队谁懂编程。编写合理健壮的脚本将涉及一个或多个循环,if/then/else和子例程调用。不是那种非程序员会找到直觉的东西。

要特别警惕的想法,你可以在“记录”使用工具的人,然后回放进行测试。这种“自动化”往往非常脆弱,以致于最终会修改或重新记录脚本以用于软件的几乎所有更改。

4

从强汞/ HP背景的人,我会强烈建议使用QuickTest Professional的您的GUI测试。它具有许多与WinRunner相同的功能,但没有太多代码。简单的GUI检查可以通过QTP接口完成,只需最少的(如果有的话)自定义VB代码。检查框旁边的文本可以使用QTP中的数据表进行简单的比较。如果你习惯了WinRunner,并且知道VBScript(没有那么多TSL),那么我肯定会看QTP。

至于你的其他要求,QTP还具有间谍功能,像WinRunner的,会列出您可以在对象上执行所有属性和操作。至于使用简便,在原来的工作岗位,我们将有业务或系统测试人员创建简单烟雾脚本,然后我会带他们和更多的代码,它们的深度测试(多个数据值,错误检查等)。就报告而言,QTP将对您输入的标签以及您可以输入的自定义数据进行简单的报告,显示合格/不合格/警告。因此,您可以使用case语句根据结果填充输出值。它不会做电子邮件naitevly,但如果你与TestDirector/QualityCenter经过那里直接从那里整合,你可以设置,与自动化脚本的开球一起,和参数数据(这是很好的传送回测试人员可以在不涉及脚本itseld的情况下填充数据)。

Pat