自动化测试框架:拥抱Ruby

原创 2007年10月07日 11:18:00

目前,自动化测试框架已经基本成型。朋友们的一些建议,还在陆续消化中,在不久的将来或许都会加入到其中,谢谢大家的鼓励和支持。

最近,在一次技术交流会中,我的一位同事向我提起QTP(QuickTest Pro),肯定了它的描述性编程和我们框架中的设计有类似之处,并指出QTP的可扩展性比较强,比如流程控制(IF、LOOP、SWITCH等)。特别是装载数据批量操作软件方面比较强。我深以为然。

因此,我开始和我的另一位同事小贾琢磨。我们有两种选择,一是在脚本编辑中扩展有关流程的节点(这点很像FinalBuilder),还有就是支持脚本语言。我们选择了后者,因为第一种虽然可以扩展,但最终毕竟还是不灵活。

在对编程语法方面,一开始考虑的是PascalScript,因为我们都是使用的Delphi。但是考虑到测试人员并不是熟悉Delphi的,况且,对于脚本化编程,我最先想到的是Ruby,而不是Delphi。因此我做了一个大胆的假设,如果在我们引擎中,加入对Ruby的支持,应该怎么做呢?

首先是引擎调用Ruby脚本。我查找了一下资料。发现Delphi下有现成的开源控件,而且Ruby其实已经公布了API了。因此这不是问题了。

那么下面就是最重要的问题了,Ruby脚本如何调用引擎去控制控件?我将所有针对引擎的操作,都归结于控件的操作,这简化了依赖性。但是关键的问题还是在于技术上如何实现调用。

必须承认,我对Ruby的了解很少,这方面小贾是专家。在和小贾讨论过程中,发现Delphi写Ruby的扩展没有明确的帮助,倒是有C的实现方式。我相信研究一下C的实现方式,应该可以找到Delphi的实现方式。

但在这个时候,我们忽然提到了Http。这让我想起了引擎中已经存在的一个Http的Server。因此我提出直接通过Http调用引擎。这样就跨越了语言的障碍。我们显然是抓住了RPC的精髓。这个方案一下子得到了小贾的支持。

并且我还想到另外一个理由:先实现了再说(Do it First)。这点小贾更是同意。

在这个基础上,小贾更是提出了利用Ruby定义DSL的方式,来进行编程。对于Ruby定义DSL我也是不怎么了解。在简单研究过范例之后,发现有一定的可行性,但是难度也确实不小。

下面是我和小贾讨论的一些内容,也能初步看出其中的难度。

有关DSL,还真麻烦。我考虑这样的情况:DSL可以转换成窗体实现。但是窗体实现并不完全对应DSL描述。事实上,对于客户的应用来说,一个确定按钮往往不是他的DSL描述的内容,包括所谓的Edit啊,Grid啊都不是的。这些只是实现某类DSL的方式。从反推的方式来设计DSL,确实有难度啊。控件的调用必须做到自动识别了。

比如一个简单的Input对话框,只有一个Value的Edit控件。那么对于DSL描述,我希望是这样的:在没弹出对话框之前,就应该是:设置 属性 新值。对于对话框的弹出是在DSL中不可预计的

可见,DSL的实现还是比较有挑战的。而且这里面也存在一个疑问,DSL适合测试吗?或者说我说的DSL原本是设计给需求人员或者程序员的,而不是特别给测试的。真正在自动化测试中的DSL,应该使用一种全新的方式去定义DSL。

不管怎么说,实现的方案已经基本成熟了。我们也可以展望一下如果实现了Ruby的脚本支持,会带来什么。

  1. 对于Ruby,我计划是作为一个测试步骤(TestStep)加入到原有脚本中。这样既不会丢掉原有脚本编辑的优势,又同时拥有了强大扩展能力。
  2. 如果DSL实现了,那么编程就会变得更加简单。按照小贾的意思,用户可能会放弃我原来的脚本编辑器。不过我不同意:)
  3. Ruby脚本的易用性,是经过众多网友验证的。而我们就会同时拥有这方面的优势。其学习成本也是很低的。世界上有一个强大的社区在支持着它。而且现在众多厂商也开始退出Ruby的编辑器,比如Borland最近推出的3rdRail™。这样我们编写Ruby的脚本,就不需要我们自己造一个轮子了。

Anyway,拥抱Ruby的这个选择,也许会让我们这个系统走向世界也说不定。 

自动化测试框架:拥抱Ruby

2007年10月07日 11:18:29 目前,自动化测试框架已经基本成型。朋友们的一些建议,还在陆续消化中,在不久的将来或许都会加入到其中,谢谢大家的鼓励和支持。最近,在一次技术交流会中,我...
  • softart
  • softart
  • 2007年10月27日 20:58
  • 313

Ruby+Watir搭建自动化测试框架

通过一番比较和精选,最终决定使用目前比较流行的Ruby来作为自动化测试框架的首先测试脚本,加上它的测试工具Watir几乎完美的代替了所谓收费工具QTP,并且有过之而无不及.下面我们正式开始说自动化测试...
  • candle806
  • candle806
  • 2010年08月19日 15:25
  • 4185

移动APP自动化测试框架对比

简介  移动APP的UI自动化测试长久以来一直是一个难点,难点在于UI的”变”, 变化导致自动化用例的大量维护。从分层测试的角度,自动化测试应该逐层进行。最大量实现自动化测试的应该是单元测试,最...
  • xiaoyida11
  • xiaoyida11
  • 2016年10月20日 18:34
  • 5809

Watir - Ruby的开源Web自动化测试框架

陈雷    http://jackei.cnblogs.com/  2006-03-27Watir 是一个使用 Ruby 实现的开源Web 自动化测试框架,相对于那些庞大的商业工具来说,它很小巧,也很...
  • chicochen
  • chicochen
  • 2006年08月27日 14:11
  • 3479

自动化测试框架:自己的框架

这段时间一直在为公司内部开发自动化测试框架,简称GTF。这些代码都是公司的财产,不方便共享。当然了,如果公司愿意,我倒愿意开源了。不说这些了,因为这个框架现在还属于开发阶段,很多事都是言之过早。最近几...
  • xiammy
  • xiammy
  • 2007年05月24日 22:24
  • 5673

webUI自动化测试框架(一):简介和Demo入门

前言:selenium和webdriver是目前主流的ui自动化测试框架之一,selenium又称为selenium RC,基本原理为js注入,而webdriver是直接利用了浏览器的native s...
  • u010798968
  • u010798968
  • 2017年06月23日 10:57
  • 1317

几种常见自动化测试框架

因为自己下所使用的
  • u010202588
  • u010202588
  • 2014年08月17日 21:22
  • 16701

如何选择自动化测试框架

软件自动化测试,作为手工测试的替代,越来越受到关注。Pekka Klärck,作为Robot Framework的创建者和核心开发者,按照系统级别,介绍了几种不同的自动化测试方法的区别。一、记录回放的...
  • hexieshangwang
  • hexieshangwang
  • 2015年11月19日 13:49
  • 2040

sahi自动化环境搭建

一、介绍 sahi 运行为一个代理服务器,并通过注入 JavaScript 来访问 Web 页面中的元素。 http://www.ibm.com/developerworks/cn/web/140...
  • qianxun136930775
  • qianxun136930775
  • 2014年09月02日 00:06
  • 1603

Selenium自动化测试框架第一篇

在这里给大家分享几个Selenium的自动化测试框架 Selenium自动化框架(Java)第一篇: 以excel维护测试数据,进行数据驱动测试 Common模块中主要存放基础操作方法(ex...
  • tigereg000
  • tigereg000
  • 2016年03月30日 22:21
  • 1410
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:自动化测试框架:拥抱Ruby
举报原因:
原因补充:

(最多只允许输入30个字)