Ranorex自动化测试应用-介绍及用例_第1页
Ranorex自动化测试应用-介绍及用例_第2页
Ranorex自动化测试应用-介绍及用例_第3页
Ranorex自动化测试应用-介绍及用例_第4页
Ranorex自动化测试应用-介绍及用例_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Ranorex自动化测试应用介绍 版本号日期编写者审核者描述V1.02017.05.05质量管理部初版1. Ranorex特色52. Ranorex自定义Action53. Ranorex的其他编辑选项83.1. 添加新的Action83.2. Action条目失败继续运行和禁用103.3. 增加对象库识别对象114. Ranorex自定义常用代码124.1. 自动测试途中强制一个用例失败退出124.2. 抓图及比较图片135. Ranorex创建代码模块155.1. 在代码模块中使用对象库155.2. 代码中实现读取文本文件的内容175.3. 代码中获取数据库信息176. Ranorex测试

2、Android App206.1. Android的测试环境206.1.1. Ranorex服务App206.2. 部署APP到测试设备226.3. 录制Android应用测试257. 问题集267.1. 参数化录入,多次循环录入的实现267.2. 数据库应用相关317.2.1. 配置ODBC317.2.2. 引入命名空间317.2.3. 数据库查询SQL的调用327.2.4. 数据库增、删、改的调用337.2.5. 有参数的存储过程的调用337.2.6. 调用只有单个结果返回SQL的应用341. Ranorex特色Ranorex相对于QTP、RFT等老牌自动化测试工具而言是一个后来者,也就是

3、最近这些年才冒出来的,但是也在逐渐地发展起来,也有很多自己的特色,更详细的介绍请登录官网了解(例如:1、支持以自动化库的形式供C#、VB.NET调用,让我们可以采用这些标准的编程语言,而不是厂商脚本语言来进行自动化测试代码的开发,支持在VS.NET等IDE中进行自动化脚本开发。 2、支持用XPath来识别GUI元素,验证状态和值、过滤信息等。 3、价格优势 1,190.00 ;Ranorex支持多种语言和平台的测试:.NET, WPF (framework versions 1.1, 2.0, 3.5)Win32 applications (MFC, Delphi)Support for 3r

4、d party controls like Infragistics, DevExpress, QT, etc.Java SWT applicationsWeb Testing, Adobe Flash/Flex Testing安卓及IOS的应用测试;2. Ranorex自定义Action在ranorex自动化测试框架简介-铭鸿.pptx,我们提到数据驱动接口测试,Recorder模块中可以使用变量,而不是一直使用录制过程中的固定字符串值。在Action表内的单元格中,任何你可以改变或者设置值的地方,在那里都可以使用变量。当某天发现这样的数据驱动已经不能满足你的测试需求了,还能有更强大的功能吗

5、?答案是肯定的,在Recorder提供的功能不能够满足的情况下,Ranorex可以使用自定义代码。 下面的一些例子,可以方便演示自定义代码Action。在项目视图窗口中,仔细看一个录制模块文件,你会看到有两个相关的代码文件。以上制模块SayHello有两个代码文件,在Ranorex Studio每个录制模块都对应两种类型的源代码文件:自动生成的主录制模块的源代码文件<RecordingName>. <CS>用户自定义代码的文件<RecordingName>.USERCODE.<CS>每次你更改并保存录制模块,主代码文件SayHello.cs就会重

6、新生成一次。如果需要修改代码一定要在SayHello .UserCode.cs文件中进行。创建自定义代码Action你可以,通过转换现有的action创建用户自定义代码Action,或通过工具栏按钮'Add New Action'增加一个新的“用户自定义代码”Action条目。2.1、转换为用户自定义的代码在录制模块中,选取第4步,鼠标右键打开菜单,选取convert to user code。输入一个自定义的函数名字即可。(也可以为自定义函数增加参数)现在可以通过右击Action,从右键菜单中选择'View Code'跳转到生成的代码。自Ranorex3.3开

7、始,就可以在自定义代码Action使用参数。 可以通过(字符串)值向方法传递,这样就能在测试环境中获得更大的灵活性。要在一个新的自定义代码Action中使用参数,只需按一下旁边的单元格中键入一个值作为方法的参数(如VSayHelloPara)。例如增加以下代码,repo.SimpleGUI.Text.Click(); /将输入焦点放入TextBox框内repo.SimpleGUI.Text.TextValue="" /设置TextBox的值为空这样每次TextBox的内容就是你最近一次的输入了。截图如下:3. Ranorex的其他编辑选项我们已经了解到Recorder通常是

8、用来记录用户action的。录制完成后,可能需要编辑录制的数据,例如合并被分割的键盘录入、删除错误记录的Action及自定义Action。 你还可以添加新的Action,例如像添加一个验证步骤,或在录制过程中没考虑到的Action。3.1. 添加新的Action在Action表中,有两种手动添加action的方式。 一种方法是指定Action本身('添加新Action'),然后分配对应的对象库条目(在多数情况下)。 第二种方法是直接把对象库条目拖放到Action表内,然后生成action。l 使用'Add New Action'按钮添加一个新的Action条目,

9、打开'Add New Action'下拉菜单,如下图所示:l 拖放对象库中的对象来启动添加一个新的Action,如下面图所示,你也可以把对象库条目拖放到Action表中创建新的一行。下图:使用拖放为特定的对象库条目创建一个新的Action(Report ScreenShot)拖放对象到action表中后,会提示指定Action类型。 更多可用的action信息,请参阅下面信息Action条目的类型 Mouse 在当前位置添加一个新的鼠标action条目 Mouse Wheel 添加一个新的鼠标滚轮Action条目 Touch Event 在当前位置添加一个新的触摸事件Actio

10、n条目 Key Shortcut 添加一个新的快捷键action条目(例如'Ctrl + C'或'Ctrl + V') Key Sequence 添加一个新的键盘输入action条目(例如'Hello') Open Browser 打开一个浏览器并导航到指定的URL Run Application 运行指定路径的应用程序 Report 添加一个新的报告Action条目 Delay 添加一个新的延时Action条目 Screenshot:这个Action将一个特定的对象库条目的截图和用户定义的文本输出到测试报告中。 如果没有分配对象库条目,那么会对

11、整个桌面截图。 User Code 这是用来添加一个新的自定义代码Action条目,例如实现用户特定的验证代码3.2. Action条目失败继续运行和禁用表中列出的每个Action条目,都可以设置为禁用或 “失败继续运行”。 设置action条目为“失败继续运行”时,如果遇到错误,模块不会停在那个位置,而是继续执行。 可以通过右键菜单或属性窗口设置这两个选项。 设置为“失败继续运行的条目在Action表中以斜体表示,而禁用的Action条目显示为灰色。 上图:禁用的Action是灰色的,而“失败继续运行'Action以斜体字体表示,对应的步骤有“ ”标记。3.3. 增加对象库识别对象

12、在项目视图,找到对象库,打开后,点击Track。就可以为对象库增加可识别的对象了。 将Ranorex识别对象红色框,放在需要识别的对象上点击鼠标,相关可识别的对象就会增加到项目的对象库中。下图是增加的可识别对象截图:4. Ranorex自定义常用代码4.1. 自动测试途中强制一个用例失败退出Ranorex使用异常处理来决定一个测试用例是失败还是成功。只要所有的ranorex方法都没有抛出异常,测试将会成功。如果你想自己决定是否一个测试用例失败,你需要在测试用例自动测试途中抛出Ranorex异常强制这个测试用例失败。再次看看以下用例: 在Ranorex使用自定义代码如下:在跑以上测试用例时,如果

13、我们遇上返回的结果没有“Hello”字符时,就会终止测试用例,返回一个带错误标记的测试报告。例程代码:repo.SimpleGUI.SayBtn.Click(); if (repo.SimpleGUI.ResultLabel.TextValue.Contains("Hello") Report.Success("返回成功" ,"结果信息包含Hello字符"); else throw new Ranorex.RanorexException("返回失败 ,结果找不到 Hello 字符");4.2. 抓图及比较图片在该

14、章节中,我们将会获知Ranorex如何获取对象的位图,如何用对象的位图和系统中的位图进行比较了。其实图片的比较是大多数GUI自动测试都会涉及到的内容,Ranorex提供了很多强大的功能,这里我们还是先从最最基本的位图截图及比较开始吧。我们依然使用小程序SimpleGUI.exe作为待测应用。建立一个全新的c#测试项目,然后将SimpleGUI.exe上右侧的两个按钮(ColorBtn, ChangeColorBtn)的动作,录制捕获后放到对象库中。然后创建一个用户自定义Action(CompareImg)如下图:编写以下代码:这几行代码,我们首先生成了一个名为BmColorBtn的Bitmap

15、对象,它使用Imaging类的方法CaptureImage来获得对象ColorBtn位图数据,接下来直接使用save函数,保存这个位图数据为一个位图文件RanoRexRes.bmp存放到D盘根目录下,这样就完成了某个控件的抓图了,非常简便快捷。接下来,点击了ChangeColorBtn这个按钮,这时ColorBtn这个控件上的颜色发生了变化,我们将此时的ColorBtn的位图与刚刚保存好的位图BmColorBtn进行比较(这里是比较内存的内容),允许的冗余是10%,也就是说只要两幅位图的内容相似程度高于或者等于90%就认为对比通过,否则Validate类会报错,其实这个结果是我们可以预知一定是

16、以下报告的结果了。附上代码:public void CompareImg() Bitmap BmColorBtn = Imaging.CaptureImage(repo.SimpleGUI.ColorBtn); BmColorBtn.Save("D:/RanorexRes.bmp"); repo.SimpleGUI.ChangeColorBtn.Click(); Imaging.FindOptions myFindOptions = new Imaging.FindOptions(0.90); Validate.CompareImage(repo.SimpleGUI.Col

17、orBtn, BmColorBtn, myFindOptions); 报告截图: 其实从这个例子,我们可以猜测出Ranorex如何加载硬盘里的图片进行比较的用例,大家尝试一下。5. Ranorex创建代码模块5.1. 在代码模块中使用对象库Ranorex可以完全按自定义的流程去组建测试用例,这个时候你需求用到代码模块了。大家可以通过点击工具栏上的'Add Code Module'按钮,创建一个新的代码模块。输入代码模块的名称,点击“创建”按钮后,项目中会自动添加一个新的文件,并且在文件视图中自动打开。Ranorex Studio会创建一个新的测试模块类,它包含一个“Run”的方

18、法,可以用来进行扩展自动化测试代码。在代码模块中使用对象库跟你在录制模式下使用对象库识别对象一样,你也可以在你的代码中使用录制时候识别的对象库。只需在代码模块的初始化定义处,添加一个新的成员代表你的对象库,如下所示:然后就可以在Run函数模块内,自由地通过代码控制测试的流程了。 void ITestModule.Run() Mouse.DefaultMoveTime = 300; Keyboard.DefaultKeyPressTime = 100; Delay.SpeedFactor = 1.0; Mypro.SimpleGUI.Text.TextValue ="广东铭鸿数据有限公

19、司" Mypro.SimpleGUI.SayBtn.Click(); 5.2. 代码中实现读取文本文件的内容Ranorex没有自己的脚本语言,其代码的实现完全与C#或VB一致。以下以C#语言为例:/读取E盘java_out目录下的文件。(以Windows默认的编码方式)放入一个line的string数组内。string line= File.ReadAllLines("E:java_out 1009 记账卡客户资料管理TestCase.txt", System.Text.Encoding.Default);/循环地处理string数组内的信息,将文件内的每一行信息

20、提取到StrTemp变量中。用户再自行处理/StrTemp变量的数值 for (int i = 0; i < line.Length; i+) string StrTemp=linei ;备注:需要在代码模块中增加引用包 using System.IO;5.3. 代码中获取数据库信息Ranorex可以C#语言以ODBC的方式连接数据库,以获取数据库信息,另测试用例更灵活; /Sybase 参考代码 string odbcstr ="Dsn=ytk;uid=ytk_test;pwd=CStest" string ResultStr ="" OdbcC

21、onnection conn=new OdbcConnection(odbcstr); OdbcDataReader ocReader =null; try conn.Open(); Report.Info("数据库连接成功:"); OdbcCommand oc=new OdbcCommand(); oc.Connection =conn; oc.CommandText ="select * from card_inlet_info " ocReader =oc.ExecuteReader(); while (ocReader.Read() string

22、 res_temp = ocReader.GetString(0) + ocReader.GetString(1) +ocReader"s_license_hex".ToString()+"" ResultStr +=res_temp; conn.Close(); Report.Info("数据库连接成功:"+ResultStr); catch (Exception e) Report.Error("数据库连接失败"); /Oracle 范例 string odbcstr ="DSN=GZCS;Uid=a

23、cc_st;Pwd=acc_st;" string ResultStr ="" OdbcConnection conn = new OdbcConnection(odbcstr); OdbcDataReader ocReader =null; try conn.Open(); OdbcCommand oc=new OdbcCommand(); oc.Connection =conn; oc.CommandText ="select * from op_prm_station where record_flag='0'" ocRe

24、ader =oc.ExecuteReader(); while (ocReader.Read() string res_temp = ocReader.GetString(0) + ocReader.GetString(1) + ocReader"chinese_name".ToString()+"" ResultStr +=res_temp; conn.Close(); Report.Info("数据库连接成功:"+ResultStr); catch (Exception e) Report.Error("数据库连接失败&

25、quot;); 备注:需要在代码模块中增加引用包 using System.Data.Odbc;using System.Data.SqlClient;6. Ranorex测试Android App自动化测试Android App,需要先搭建Android的测试环境,然后再创建和执行一个测试。6.1. Android的测试环境Android自动化测试环境,只需要确保被测系统(移动设备)和运行测试的电脑(Ranorex安装的机器)是在同一网段的一个网络中即可。通过Wifi连接是最简单的测试连接方式。见下图:图:通过Wi-Fi自动化测试Android App6.1.1. Ranorex服务App被

26、测系统(Android移动设备)需要确保安装了Ranorex服务App。我们先来安装一下APP,在一个新的录制模块中,点击录制按钮,选取Mobile。在打开的对话框中,点击Add device在Manage Devices对话框选取add,然后选取Android-【Next】-选取NetWork点击【Next】,通过使用二维码阅读器程序来扫描二维码,或通过输入说明中的URL,就可以下载Ranorex服务App并安装到被测的移动设备上。下载并安装后,安装了Ranorex服务App的设备,就可以通过”Network”连接在列表中被看到,选择该设备,并点击“添加”按钮。以下截图表明已经配置好Andr

27、oid设备,测试环境已经搭建成功了。6.2. 部署APP到测试设备测试环境配置好后,就可以将要进行自动化测试的App调制部署到设备上。参考上一节,找到【Add app】页面。如下图:(请确保您的机器上已经安装了JRE 1.6或1.7 ) 点击【Add app】按钮。选择好APK文件,Ranorex会自动调制到选定的设备上,详见下图。上图为调制过程,当完成调制后,APP将在移动设备上安装。下面的截图为APK安装时要进行的确认。 在移动设备安装好App后,点击【Finish】按钮。6.3. 录制Android应用测试准备好设备,并调制好APK后,选择对应的设备以及要执行的App,就可以开始录制了。

28、当你点击录制按钮时,刚才调制在移动设备上的App将自动运行,并在录制机器桌面上弹出通知,告之用户移动设备上的操作将被录制。在录制过程中,Ranorex的Action表将清晰得显示已执行的步骤,并且是实时更新。在移动设备上进行测试后,可以按下“停止”按钮停止录制过程。录制并修改Action表之后,按下“运行”按钮,这样就能在移动设备上执行测试。7. 问题集7.1. 参数化录入,多次循环录入的实现问题:Ranorex录制后,有多个字段的数据,这些数据要求按照某个表格的数据进行输入,这个哪里设置怎么设置?而且这些字段的值不能与上一条记录重复的,此处,需要写脚本做循环吗?回复:字段按照某个表格的数据进

29、行输入,可以通过参数化实现,Ranorex叫做数据源。它是在TestSuite模块实现的。以下举个例子:在乌市轨道系统,需要增加票卡主类型这个参数,页面截图如下:其主类型ID与票卡名称需要参数化,并可以循环增加多个字段。实现步骤如下:1、录制增加票卡类型的整个操作;截图如下2、增加需要参数化的变量;截图如下:按照以上三幅截图,增加两个变量VarCardTpe,VarCardNam。如下图:3、编辑一个Excel文本(保存为“namestr.xlsx”)。如下图:4、在Ranorex的Suite模块内,选定某一个测试用例(TestCase),点击“Data source”选取第3步编辑好的Exc

30、el文件。 点击OK后,程序的界面出现以下信息,表示这个测试用例将自动按数据源的数量循环执行4次。5、变量有了,数据源也设置好了,现在需要的绑定变量。在点击相应的“DataSource.”按钮,将弹出数据源设置页面,点击“DataBinding”,按照以下截图设置。以上步骤即可以完成了。Ranorex目前可以支持4种数据源格式:简单表格、CSV、Excel及ODBC等。使用数据源、参数化录入特别需要注意自动化输入的信息要在一个单独的事务中进行。上面的例子由于事务含登录操作,那这个自动化时,将发现不断地打开新的页面,输入登录信息及增加参数等操作。实际应用中需要多加注意。7.2. 数据库应用相关问

31、题:Ranorex可以连接数据库进行相关的操作吗?回复:是可以的;7.2.1. 配置ODBC需要确保系统的ODBC配置正确;以下为Oracle配置成功的截图7.2.2. 引入命名空间在相应的模块引入命名空间,令代码可以使用C#的数据库相关函数;7.2.3. 数据库查询SQL的调用ODBC的配置如下:要获取车站配置表某些字段的信息,代码如下:string odbcstr ="Dsn=WUMQCS;uid=w_acc_st;pwd=w_acc_st"string ResultStr =""OdbcConnection conn=new OdbcConnect

32、ion(odbcstr);OdbcDataReader ocReader =null; try conn.Open(); Report.Info("数据库连接成功:"); OdbcCommand oc=new OdbcCommand(); oc.Connection =conn; string SqlStr ="0" oc.CommandText ="SELECT t.* FROM w_op_prm_station t where t.record_flag ='"+SqlStr+"'" ocRea

33、der =oc.ExecuteReader(); while (ocReader.Read() string res_temp = ocReader.GetString(0) + ocReader.GetString(1) +ocReader"chinese_name".ToString()+"/r/n" ResultStr +=res_temp; conn.Close(); Report.Info("数据库连接成功:"+ResultStr); catch Report.Error("数据库连接失败"); 7.2.

34、4. 数据库增、删、改的调用这些不用获取返回值的SQL执行见下面代码:string Strtemp =""string odbcstr ="Dsn=WUMQCS;uid=w_acc_st;pwd=w_acc_st"string ResultStr ="" OdbcConnection conn=new OdbcConnection(odbcstr); OdbcDataReader ocReader =null; try conn.Open(); OdbcCommand oc=new OdbcCommand(); oc.Connecti

35、on =conn; oc.CommandText ="delete FROM w_op_prm_dev_code t where t.record_flag ='3' and t.line_id ='01'" +"and t.station_id ='01' and t.dev_type_id ='03' and t.device_id ='001'" oc.ExecuteNonQuery(); oc.CommandText ="commit" oc.Ex

36、ecuteNonQuery(); conn.Close(); Report.Warn("数据库删除车站配置成功。"); catch Report.Error("数据库连接失败"); 7.2.5. 有参数的存储过程的调用调用存储过程的例子如下:string Strtemp=""string odbcstr ="Dsn=WUMQCS;uid=w_acc_st;pwd=w_acc_st" /数据源int vInReturnDay =1; /等待日 1以内 ,2 以外int vBuRecTyp =1; /业务类型 1非即退

37、 4挂失int vResult =0; /存储过程返回值 /初始化非即退的申请 (调用的存储过程有4个参数,其中两个是输入、两个是输出) OdbcConnection conn=new OdbcConnection(odbcstr); OdbcDataReader ocReader =null; try conn.Open(); OdbcCommand oc = new OdbcCommand("call W_ST_CS_NON_RTN(?,?,?,?)", conn); oc.CommandType = CommandType.StoredProcedure; /存储过程的输入参数 oc.Parameters.Add("InReturnDay",OdbcType.Int).Direction=ParameterDirection.Input; oc.Parameters"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论