我理想中的功能测试化工具应该满足以下基本条件:
简单。测试本来就够复杂了。测试人员本来就该把精力集中在发现系统错误上面。再让测试人员在测试程序上花费大力气,实在得不偿失。所谓简单,关键在于和浏览器用户的操作同轨。程序代码应该完全屏蔽和用户无关的细节。比如说,如果网页上有个叫“递交”的按钮,那对应点击该按钮的语句应该不比getButton("递交").click()更复杂。简而言之,自动化工具的编程模型能让一个测试员看着用户的操作写出对应的代码。套用现在的流行术语,叫自动测试所用的语言应该是和用户的概念模型(conceptual model)对应的业务领域专属语言(Domain Specific Language)
![](/images/load.gif)
![](/images/load.gif)
![](/images/load.gif)
Mercury Interactive的QuickTest Professional。我用的好像是v3和v4。这款工具号称全面支持图形化自动记录测试操作,支持用VBScript编程和定制记录下的测试操作。号称拥有强大的测试类库和图形化的定制工具。遗憾的是,这款工具给我们的团队带来了无穷无尽的烦恼。它生成的代码包含大量底层细节,根本不适合人去修改和维护。它生成的代码文件居然和它的Object Repository(Object Repository用来存储自动记录中生成的所有对象,以便日后回放时和回放结果比较)绑定。一不小心,就可能破坏这种绑定,导致生成的文件失效。我明白Mercury的初衷是利用Object Repository来简化自动化操作,可惜这个方法完全无效。我们还发现Quick Test Professional回放的时候常常和记录的不一样,导致测试虚假失败。另外,由于测试结果和object repository相比较,直接造成测试回放对GUI敏感。哪怕改变一个按键的位置都会引起测试失败。问题是,功能测试里我们实在不关心一个按键在左上角还是右下角。总而言之,QuickTest Professional没有做到基本要求里的1,2,和3,直接使这个安装空间高达1.2G的软件沦落为适合小型GUi测试的工具。Segue SilkPerformer。我们用过v5和v6.5。这是款相当不错的性能测试工具。功能强大,性能稳定。为我们部门的性能测试和系统测试立下汗马功劳。可惜这款工具并不适合大规模复杂的WEB功能测试,尽管它支持功能测试。我们为了用这款工具,在它的基础上搭建了巨大的测试库,耗资N个人年,但仍然不能让众多的测试人员满意。首先,SilkPerformer的自动记录仍然暴露大量细节,比如说我们必须知道一个button是对应的一个简单链接,还是一段JavaScript。其次,Silkperformer用一种古怪的语言,叫Benchmarking Definition Language。这个语言是标准Pascal和C的混合体,集成了标准pascal的呆板并放弃了C的灵活。这个语言的灵活性之差,以至于它还提供了对COM和JVM的接口,用来支持功能扩展。BTW,对JVM的支持出奇笨拙,比如只有static方法,比如只有一个类。。。最后,SilkPerfomer的BDL在编程上有很多限制。比如它不支持全面HTML解析(6.5开始支持了,但用了一种相当受限的配置方法),也不支持动态的数据结构(不要告诉了定长的数组是动态数据结构,更不消说不同长度的数组居然是不同的数据类型)。对了,我提到了BDL的regular expression支持简直是个笑话么?
![](/images/load.gif)
![](/images/load.gif)