韩小明@xiammy的专栏

没水的地方挖井,有水的地方修渠

用户操作
[即时聊天] [发私信] [加为好友]
韩小明ID:xiammy
448978次访问,排名105好友15人,关注者82
毕业后一直在广联达工作
xiammy的文章
原创 178 篇
翻译 0 篇
转载 22 篇
评论 1134 篇
韩小明的公告
作者毕业于浙江大学,非常热爱体育运动。现在尤其热爱羽毛球运动。在休息时间非常热爱技术文章写作。
最近垃圾评论泛滥,为了不污染大家的视听,暂时关闭评论,请大家理解。
欢迎转载,但请注意,除非特别声明,本站采用Creative Commons License许可:署名,非商业。

最近评论
Norse:从纯逻辑的角度而言,只要加上一个条件就可以严谨地解决问题:此题是可解的。
这样的话顶多从半真是真还是假来加一层推理,易知半真是真的情况下是无解的,所以半真只能是假,最后就可以按标准答案推出结果了。
Norse:太钻牛角尖了,既然题目这么出,那就是隐含字条真假对应对金块判断的正误,而不是独立的
thesameway:51旧书网 同城易书
www.51jiushu.com
www.51jiushu.net
二手书、旧书同城交易平台
分类齐全、快速发布、准确搜索
xiammy:你说的就是推广策略,是不是采用矫枉过正?
sharkw:可以试一试SqliteSpy,支持sqlite数据库的加解密
文章分类
收藏
    相册
    图书
    链接
    宗刚的专栏(RSS)
    快乐学习(RSS)
    陈亮亮的专栏(RSS)
    朋友
    张恂论 OO
    橘子懒懒的BLOG(RSS)
    言之有李(RSS)
    赵伟的小家
    存档
    订阅我的博客
    XML聚合  FeedSky

    原创 自动化测试框架:拥抱Ruby收藏

    新一篇: 伯乐很多,你是千里马吗? | 旧一篇: 程序员,你双屏了吗?

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

    最近,在一次技术交流会中,我的一位同事向我提起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的这个选择,也许会让我们这个系统走向世界也说不定。 

    发表于 @ 2007年10月07日 11:18:00|评论(loading...)|编辑

    新一篇: 伯乐很多,你是千里马吗? | 旧一篇: 程序员,你双屏了吗?

    评论

    #esuVessLan 发表于2007-10-08 13:39:34  IP: 124.114.28.*
    3rd rails是要收费的,你可以尝试使用netbeans或者radrails
    #wlq211 发表于2007-10-09 10:23:03  IP: 202.207.244.*
    前几天去书店偶遇RUby,翻了一下,有时间再好好看看
    呵呵
    #10jqkA 发表于2007-10-10 09:14:11  IP: 59.108.22.*
    ruby自己就有一个开源的自动化测试框架watir,用它不是直截了当吗?不过呢,watir的底层实现是基于另一个开源测试工具AutoIT,测试web-based还行,其他就不太好用了。
    2007-10-10 21:14:40作者回复
    呵呵,我并不是作基于ruby的自动化测试。而是使用ruby来组织自动化测试的语义
    #10jqkA 发表于2007-10-11 11:55:30  IP: 59.108.22.*
    用来组织自动化测试的语义啊,不错;但是恐怕DSL还真是个麻烦呢。
    你看看我这招如何?用图形的办法来组织(通过拖拽来实现),是不是太激进了?http://huangjien.iblog.com/post/543/50952
    2007-10-11 22:27:19作者回复
    这应该是典型的工作流思想吧。不过,要说起相对固定的控件,确实工作流配置比较合适。<br /><br />不过对于脚本编写,语言和图形,到底谁好谁坏,呵呵,还真难说啊
    #shrinerain 发表于2007-10-11 23:08:44  IP: 60.12.88.*
    忽然发现...

    作者...我们是校友...
    2007-10-12 22:19:21作者回复
    呵呵,幸会了:)
    #hero272285642 发表于2007-11-03 12:53:06  IP: 123.112.110.*
    GOOD ENOUGH
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © 韩小明