在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
目前,自动化测试框架已经基本成型。朋友们的一些建议,还在陆续消化中,在不久的将来或许都会加入到其中,谢谢大家的鼓励和支持。 最近,在一次技术交流会中,我的一位同事向我提起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,应该使用一种全新的方式去定义DSL。 不管怎么说,实现的方案已经基本成熟了。我们也可以展望一下如果实现了Ruby的脚本支持,会带来什么。
Anyway,拥抱Ruby的这个选择,也许会让我们这个系统走向世界也说不定。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论