我们先了解RIAtest工具
RIATest是一个Flex自动化GUI测试工具,它刚刚公开发布了Beta版。InfoQ为此采访了RIATest的创造者Tigran Najaryan。
Najaryan首先谈到了创造RIATest的目的:
RIATest 是一个用来对Adobe Flex 3程序进行自动化GUI测试的工具。创造RIATest的目的是为了给商业和专业开发者提供一个简单、干净的测试自动化方案,帮助他们保证产品的质量。我们在定价上非常激进,一心把测试自动化带给更多的Flex用户,而这些用户以前都负担不起其它的Flex测试自动化方案。
说到RIATest如何工作的时候,Najaryan解释说:
从技术上看,RIATest由两部分组成:Agent和IDE(或者命令行执行器)。Agent呆在浏览器一方,直接与被测程序打交道。Agent提供了组件查看器(Component Inspector),让你检查和监视被测程序的GUI组件及其属性。Agent还通过TCP连接与IDE相连。Agent与IDE在回放期间(IDE向 Agent发送指令并接收结果)以及录制期间(Agent把录下的动作通知给IDE)都经由这个TCP连接相互沟通。
测试脚本是用RIAScript语言写的。RIAScript是一个简化版的ActionScript(另有些微扩展)——因此熟悉ActionScript的开发者很容易学会编写RIATest的测试脚本。
RIATest是用什么开发的?Najaryan回答说:
RIATest从一开始就是作为Flex 3测试自动化工具来设计的,它使用了Flex的测试自动化框架。RIATest IDE是用C++和wxWidgets库写的。RIATest Agent是用Flex 3开发的。
由于现在已经可以见到不少Flex测试工具,所以InfoQ请Najaryan将RIATest与其它工具比如FlexUnit作一下比较:
RIATest作为一个自动化GUI测试工具,与单元测试等其他测试手段是相辅相成的。必须通过多种自动化测试手段才能得到最高质量的保证,自动化GUI测试和单元测试都包括在内。
谈到如何测试连通性,如HTTP请求和SOAP连接:
RIATest内建了按照指定条件自动或手动进行同步的功能,因此即使程序需要与远程数据源通信,RIATest也能完全胜任自动化测试的工作。QA工程师可以通过“'waitfor'”操作让测试脚本与被测程序的组件状态同步。
最后,Najaryan给出了一段测试脚本的例子:
查看英文原文:RIATest for Flex Released Beta Product
http://en.wikipedia.org/wiki/RIATest
http://www.infoq.com/news/2008/03/riatest-beta-released
http://www.insideria.com/2009/02/getting-started-with-riatest-2.html
下载可以官方网站下载,要是买还算便宜,相比MI等测试工具,然后我们装好RIATest2.3那就立刻开始使用它吧。
RIATest系统需求
使用RIATest需要下面软件:
- Adobe Flex Builder 3 Professional
- Adobe Flash Player 9,0,115,0 or newer
- Microsoft Windows XP or Vista
- Mozilla Firefox 2 or Internet Explorer 6
例子
RIATest包含一个展示基于Flex类的自动操作例子的项目.
这个项目在C:\Program Files\RIATest\samples\components.
选择应用方案
RIATest为你准备了两种方法: 使用 RIATest time Loader 或通过在编译应用程序时植入RIATest 代理.
用 RIATest Loader是一个简单的方法不需用自动操作库来编译你的应用程序.不是所有的应用程序都能用time Loader 来操作. 对于多数复杂的案例(例如当你的应用程序需要HTML页面并且不用导入无格式的SWF文件) 你需要用 RIATest 代理和自动操作库植入你的应用程序.
使用RIATest Loader
你的SWF应用文件在服务器运行的话。你可以使用本地或者远程的RIATest Loader.
使用本地RIATest Loader
如果你在本地运行你的应用程序,没有特殊要求. 在创建RIATest 项目时你可以指定该项目选项为'Use local Loader'.
使用远程RIATest Loader
如果你通过web服务器来运行你的程序,你需要上传RIATest Loader去服务器,所以RIATest Loader和你的应用程序的URLs要来自相同的域名(否则安全策略不允许Loader去访问你的应用程序). 复制下面目录下C:\Program Files\RIATest\loader 的内容去你的web服务器目录(通常和你的主SWF程序所在的目录相同). 现在打开你的浏览器访问下面地址:
http://your-server-name/your-directory/RIATestLoader.html?rtLoadURL=url-of-your-applicaiton.swf
确定服务器名,路径,应用程序名字的参数正确. 如果每个设置都正确.RIATest Loader将在你的应用程序内载入和运行. 然后关闭浏览器进入RIATest 进入项目的创建.
编译自动化库和静态代理
如果决定使用静态的自动化库和代理需要执行下面步骤:
- 在Flex Builder 3中打开你应用程序项目.
- 选择Project -> Properties -> Flex Compiler.
- 在'Additional compiler arguments' 文本中增加下面内容:
-include-libraries "C:\Program Files\RIATest\agent\RIATestAgent.swc" "C:\Program Files\Adobe\Flex Builder 3\sdks\3.0.0\frameworks\libs\automation.swc" "C:\Program Files\Adobe\Flex Builder 3\sdks\3.0.0\frameworks\libs\automation_agent.swc" "C:\Program Files\Adobe\Flex Builder 3\sdks\3.0.0\frameworks\libs\automation_dmv.swc"
你可能把Flex Builder 3和RIATest安装在其他目录,那么将需要更下面目录C:\Program Files\Adobe\Flex Builder 3 和C:\Program Files\RIATest.
- 点击OK 保存内容关闭对话框.
- 编译你的应用程序.
RIATest代理和Flex 自动操作库现在被植入你的应用程序中. 每次你的应用程序启动,RIATest 代理为了建立自动操作的会话将去连接RIATest工具.
运行你的应用程序. 你将看到RIATest代理工具栏浮动在你的应用程序上. 工具栏标题将显示'为'RIATest Agent - Not connected'. 这是正常的,RIATest 代理没有连接到RIATest 工具.
创建RIATest工程
- 运行RIATest工具选择 File -> New Project. 一个空工程被创建.选择 File -> Save All, 选择目录来保存你的工程, 输入工程名称点击Save..
- 选择 Project -> Options. 确信所以的选择项被选中. 根据你确定的程序导入方案,你有下面选择:
A. 如果你想使用RIATest Loader 和你的SWF应用程序文件在本地,选中'Use local loader'.
B. 如果你想使用RIATest Loader 但你的应用程序在一个web服务器上,选中'Standalone or remote loader'并且在'Application URL' 输入下面内容:
http://your-server-name/your-directory/RIATestLoader.html?rtLoadURL=url-of-your-applicaiton.swf
C. 如果你有包含静态编译的RIATet 代理和自动操作库的应用文件,选中'Standalone or remote loader'并且在'Application URL' 输入你的应用程序HTML文件的地址(例如:http://localhost/myapp/bin/app.html) 或者HTML文件的路径(例如:C:\My Projects\My App\bin\app.html). - 选中 Run -> Launch Application. 默认浏览器将被启动,你的应用程序将被载入浏览器. RIATest 代理工具栏标题将显示'Connecting' 和'Ready' 信息.
- 返回RIATest tool窗口. 消息日志将显示下面内容:
Launching C:\Program Files\Internet Explorer\iexplore.exe "C:\My Projects\My App\bin\app.html"
Application launched. Waiting for connection from agent...
Agent connection accepted.
RIATest 工具标题也显示(Ready) 这样说明代理被连接和准备好,可以录制和运行action了.
录制脚本
确定RIATest 工具和代理被连接(标题都显示 'Ready'). 在RIATest 工具中选择 Project -> Add New Script. 输入新脚本的名称并保存.
选择 Run -> Start Recording (或者点击RIATest代理工具栏上的'Record'按钮). RIATest 工具和代理的标题将显示'Recording'. 切换到你的应用程序窗口来录制你想要的内容. 注意RIATest 工具录制actions声明在测试脚本窗口.
你可以按Ctrl-Shift 在你的应用程序点击任何元素来设置自动化确认和检查点. 当你按下Ctrl-Shift后鼠标点中组件将被高亮显示,用绿色半透明框来区别.
你也可以使用'Inspect' 按钮检查你应用程序的用户界面组件. RIATest 代理将用户蓝色框高亮显示鼠标指定的组件, 将显示组件的类,名称和所有可用属性. 再点击组件将结束'Inspect' 模式.
之后组件被检查你能在代理工具栏中点击'Verify'按钮. 所有的属性目录将被显示. 你可以选择任意一个你想要属性.然后点击OK一个检查点将被建立. 这个检查点将检验在选中属性中的值与当前值进行匹配.
点击RIATest 代理工具栏的'Record' 按钮 或者选择RIATest工具 Run -> Stop Recording 来停止录制. 注意你可以在任何时间停止和重新录制. 如果你录制了错误的内容, 你可以停止录制, 去RIATest 工具, 选择不正确的actions删除, 然后重新再开始录制.
当你完成录制你可以选择Run -> Terminate Application 关闭浏览器包括你的应用程序.
运行测试
在RIATest工具File -> Open Project 打开你的项目. 选择 Run -> Run Without Debugging . 浏览器将打开, 你的应用程序将被载入录制的actions和检查点将被回放.
在RIATest工具中将显示回放进程的消息日志. 检查点成功通过将显示绿色信息, 失败的actions 和检查点将显示红色信息.
回复结束后你的应用程序和浏览器将被关闭.消息日志将显示运行有多少错误和错误原因.
注意: 如果你使用Flex 3 Beta 回放将被限制为30 actions. 请去Adobe获得Flex Builder 3 Professional license .
调试测试
如果你在运行你的测试时遇到错误,你能调试你的脚本. 开始调试选择 Run -> Run Tests . 项目脚本将正常开始运行当遇到错误时(如检查点或action失败) 脚本将被暂停错误行被高亮显示. 消息日志的最后会显示错误原因 (如: 期待值与实际值不同,检查点失败). 你可以切换到你的引用程序检查组件和他们的属性. 也可以检查你的脚本变量值(如果被使用)通过鼠标移动到变量名上.
手动写测试脚本
录制为我们快速创建测试脚本提供帮助. 可是有时你需要执行更多复杂的actions,如在你的应用程序中多次重复用户界面或者执行有条件的actions.
RIATest 工具使用RIAScript. 语言来写测试脚本. RIAScript. 基于基本脚本语言. 你可以声明和赋值给变量,进行函数引用,写判断和循环方法.
RIAtest帮助对手写脚本很有帮助。
遗憾一:没有破解key
遗憾二:RIAScript和ActionScript还是有些不一样
遗憾三:对于自动化工具定义,他算是GUI加白盒自动化测试工具,上手还算容易。
学习工具网站:http://www.vietnamesetestingboard.org/zbxe/?mid=downloadtool&listStyle=webzine&page=7&document_srl=66952&cpage=