为什么自动GUI工具如此脆弱?

时间:2012-05-23 16:42:04

标签: user-interface automation silktest

大约一年半的时间里,我一直在使用SilkTest,这是一个GUI自动化工具,适用于桌面和Web应用程序。它模拟鼠标和键盘输入,最终模拟最终用户行为。但是,我发现它有点片状;连续工作9次的Button.Click()或DialogBox.Close()方法调用似乎在第10次调用时失败,只在11日返回工作。通常我会用SilkTest(或测试中的应用程序,或操作系统,或者你有什么)来愚弄这个怪癖,但后来我发现其他GUI自动化工具(如Selenium)存在类似的问题:

Selenium Click() fails with Anchor Elements

Selenium Click() fails clicking button object

我知道对于桌面应用程序,每个GUI控件/对话框都有一个与之关联的标记元素(至少在基于Windows的GUI中),对于网页,还有页面元素的域对象模型层次结构。我的猜测是,这些工具有时会遇到导航这些层次结构并找到独特元素和控件的问题。但是这里发生了什么? SilkTest是一个相对陈旧的商业软件包,而selenium是相对较新的,开源的并且在不断发展。他们俩都有类似问题的事实会给我带来一些旗帜。

另外,这是其他GUI测试工具的情况吗?或者我有一个不寻常的经历?

1 个答案:

答案 0 :(得分:6)

这里有两件事你要谈的是,首先是在被测试的应用程序中查找要自动化的对象的概念。您对SilkTest(和其他工具)如何做到这一点的描述是非常准确的,即只要有自动化软件可以用来识别控件的东西就可以了,那么你很好。

第二件事是为什么自动化本身随机失败,因为该工具没有报告它找不到控件,那么它必须认为它向应用程序发送了适当的操作,例如, a单击或类型。这可能是应用程序尚未准备好接受您发送它的操作,这类似于您尝试在“准备好之前”单击某些内容,在这种情况下,应用程序可以决定缓冲输入或丢弃输入。

那么,你如何解决这个问题呢?一种方法是使用该工具的功能,以便在应用程序准备好输入时尝试解决问题,而不是盲目地向其发送输入流。 SilkTest具有允许您执行此操作的功能(与TestPartner一样)。我不能评论Selenium,因为它是我没有用过的东西。

一种简单的测试方法是在违规操作之前插入暂停几秒钟,然后在循环中运行它以查看这是否解决了问题,如果是这种情况那么这就是你的问题。如果这不能解决问题,那么还有其他事情你需要联系测试工具的供应商。

请记住,应用程序变得越来越复杂,即多线程通信,这些中的任何一个都可能导致自动同步失败,从而导致操作失败。

希望有所帮助。