目前,自动化测试框架已经基本成型。朋友们的一些建议,还在陆续消化中,在不久的将来或许都会加入到其中,谢谢大家的鼓励和支持。
最近,在一次技术交流会中,我的一位同事向我提起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的脚本支持,会带来什么。
-
对于Ruby,我计划是作为一个测试步骤(TestStep)加入到原有脚本中。这样既不会丢掉原有脚本编辑的优势,又同时拥有了强大扩展能力。
-
如果DSL实现了,那么编程就会变得更加简单。按照小贾的意思,用户可能会放弃我原来的脚本编辑器。不过我不同意:)
-
Ruby脚本的易用性,是经过众多网友验证的。而我们就会同时拥有这方面的优势。其学习成本也是很低的。世界上有一个强大的社区在支持着它。而且现在众多厂商也开始退出Ruby的编辑器,比如Borland最近推出的3rdRail™。这样我们编写Ruby的脚本,就不需要我们自己造一个轮子了。
Anyway,拥抱Ruby的这个选择,也许会让我们这个系统走向世界也说不定。
分享到:
相关推荐
Gauge: 轻量级的跨平台测试自动化工具,可以以业务语言编写测试用例。 用例生成 graphwalker: 基于模型的测试用例生成框架 PICT: 微软公司开发的pairwise testing的用例生成工具 平台,用例和bug管理 TestLink: 开源...
ZenTaoATF是由禅道开发团队开发的自动化测试框架,它只有一个脚本文件,可以支持各种脚本语言编写的自动化测试脚本,语法简单,使用灵活,后续会和禅道项目管理软件进行绑定和集成。 它的基本工作原理如下: 首先,...
### 自动化测试框架知识点详解 #### 一、自动化测试框架...特别是对于Ruby和Watir-WebDriver的详细介绍,可以帮助读者更好地理解如何构建一个高效的自动化测试框架。通过实践,可以进一步探索更多高级功能和应用场景。
为了确保移动应用的质量与稳定性,采用自动化测试框架成为了一种普遍的选择。本文将重点对比分析几种常用的移动APP自动化测试框架,涵盖iOS和Android两大主流操作系统,旨在为读者提供一个全面、深入的理解。 ### ...
本文主要介绍了基于 Ruby 的 Web 自动化测试框架平台应用,着重讨论了 Web 自动化测试的基础理论和 Ruby 自动化测试 Watir 框架。同时,文章还介绍了山西科技资源共享平台的实际项目,对平台应用自动化测试进行了...
因此,Python 和 Ruby 是两种非常适合自动化测试框架的脚本语言。 在设计自动化测试框架时,需要考虑到控制库的设计方法和工具。控制库是自动化测试框架的核心组件之一,它涉及到对远程的被测试对象进行无人值守的...
Ruby 自动化框架Watir(Web Application Testing in Ruby)是一个强大的工具,专为进行Web应用程序的端到端测试而设计。这个框架允许开发者使用Ruby语言编写测试脚本,与浏览器进行交互,模拟真实用户的行为,从而...
Watir 是一个使用 Ruby 实现的开源Web 自动化测试框架,相对于那些庞大的商业工具来说,它很小巧,也很灵活,提供的功能也足够用。最近抽时间试用了一下,感觉还不错,准备下一步在公司推广使用。因为 Watir 的网站...
学习这份资料,读者可以深入了解如何利用Ruby实现Web测试自动化,包括安装和配置所需的库、编写测试脚本、运行和调试测试,以及如何整合到持续集成/持续部署(CI/CD)流程中。此外,还可能涵盖了如何处理测试报告、...
Watir,全称为“Web Application Testing In Ruby”,是一款基于Ruby语言的开源Web自动化测试框架。它的设计目的是模拟人们在浏览器中的行为,如点击链接、填写表单和按下按钮,并能够检查预期的文本是否出现在页面...
测试自动化框架是用于自动化软件测试过程的结构化框架。它提供了执行测试用例、管理和组织测试脚本的标准化方法,旨在提高测试效率、减少错误并加速软件开发的生命周期。自动化测试框架通常包括测试数据管理、测试...
何梁伟-基于AI的移动端自动化测试框架的设计与实践 本文主要介绍了基于AI的移动端自动化测试框架的设计与实践,包括框架的设计理念、技术架构、实现细节等方面的内容。 知识点1: 移动端自动化测试框架的设计理念 ...
本文将详细介绍几个常见的自动化测试框架,包括Monkey、MonkeyRunner、UIAutomator、Robotium以及Appium,帮助开发者理解它们的功能、优缺点及其适用场景。 1. Monkey Monkey是Android SDK自带的简单测试工具,通过...
脚本语言如Python、Ruby、JavaScript等常用于编写自动化测试脚本。它们具有语法简洁、易学易用的特点,同时能灵活地与各种测试框架结合。 4. 自动化测试工具: - Selenium:广泛应用于Web应用的UI测试,支持多种...
自动化测试Watir框架介绍,采用ruby语言,做UI 自动化的不错的帮助文档。
: 轻量级的跨平台测试自动化工具,可以以业务语言编写测试用例。 用例生成 : 基于模型的测试用例生成框架 : 微软公司开发的pairwise testing的用例生成工具 用例和bug管理 : 开源测试用例管理,测试计划,测试执行,...
### 自动化测试框架设计实践 #### 自动化测试框架设计思想 自动化测试框架的设计是软件测试中的一项重要工作,它能够显著提升测试效率和质量,降低测试成本。在设计框架时,要考虑的关键因素包括框架的逻辑结构、...