680 likes | 822 Views
实验 Winrunner 的使用. 开启 Winrunner. 开启 Winrunner ,选择 “ Tools ” → “ General Options …” 修改 GUI Map 模式为 GUI Map file per test ,确认后重启软件。. GUI map. 选择 Tools>GUI Map Editor 可以查看 GUI map 的内容。 GUI map 实际上是一个或多个 GUI map 文件的总和。
E N D
开启Winrunner • 开启Winrunner,选择“Tools” →“General Options…” • 修改GUI Map模式为GUI Map file per test,确认后重启软件。
GUI map • 选择Tools>GUI Map Editor 可以查看GUI map的内容。GUI map实际上是一个或多个GUI map文件的总和。 • 在GUI Map Editor中,可以查看整个GUI map或单个GUI map文件的内容。GUI对象按照他们在软件中出现时所在的窗体分组。 • 也可以在GUI Map Editor保存GUI Map。
一、使用两种录制模式 • 操作演示:录制Context Sensitive模式的测试脚本 1、启动WR 2、启动Flight 4A,并登录 3、开始以Context Sensitive模式录制测试脚本 4、开启3号订单 5、停止录制 6、储存测试脚本为lesson3 7、保存GUI Map File,命名为flight4a.gui
保存GUI Map 1). 选择Tools>GUI Map Editor,打开编辑器。 2). 选择View>GUI Files。 3). 确认<Temporary>文件显示在GUI File清单中。文件名前有一个星号(*),表示GUI map文件被改变了。当文件保存后,星号消失。 4). 在GUI Map Editor中,选择File>Save打开Save GUI File对话框。 5). 选择文件夹、文件名(或输入新文件名)。点击保存。被保存的GUI map文件被加载并显示在GUI Map Editor里。下次开启可在此加载。
一、使用两种录制模式 • 操作演示:录制Analog模式的测试脚本 1、打开lesson3测试脚本,将光标移到最后一行 2、开始以Context Sensitive模式录制测试脚本 3、打开传真订单窗口,输入Fax Number:4155551234 4、勾选“Send Signature with order” 5、在Context Sensitive模式下录制签名动作 6、清除签名 7、将Fax Order窗口移动到其它位置
一、使用两种录制模式 8、使用F2切换到Analog模式下录制签名动作 9、再按F2切换回Context Sensitive模式,并将 订单传真出去 10、停止录制 11、保存测试脚本lesson3 12、保存更新后的GUI Map File到flight4a.gui • 操作演示:执行测试脚本lesson3,并分析测试结果
二、加入检查点 • GUI对象检查点 • 在测试应用程序时,通常是透过检查GUI对象的属性,来测试功能是否正常。当GUI对象的属性值与预期的值不符合时,表示有问题产生了。 • 在WR中可以建立GUI检查点,可以检查:
插入GUI检查点 • 检查单个属性的值: 点选Insert->GUI Checkpoint ->For Single Property • 检查单个对象: 点选Insert->GUI Checkpoint-> For Object/Window • 检查一个窗体中的多个对象: 点选Insert->GUI Checkpoint-> For Multiple Objects 插入检查点后,脚本中将加入obj_check_gui 语句或win_check_gui语句。
二、加入检查点 • 插入GUI检查点 1、启动WR,并加载GUI Map File (flight4a.gui) 2、启动Flight 4A,并登录
关于运行差异的提示 • 当WinRunner以Debug或者Verify模式运行测试,如果发现与预期结果不一致的地方,会给出提示:这里我们选择Continue继续运行,最后在结果中查看错误。
建立GUI对象检查点时的建议 • 可以使用create>GUI Checkpoint>For Multiple Objects…,一次检查窗口中多个或是全部的GUI对象; • 如果打算在深夜或无人时执行测试,可以设定当检查点不一致时,WR不要显示讯息以免中断测试的执行; • 如果想要更新检查点的预期值,请以Update模式执行一次测试脚本,则WR会以执行当时截取到的值,覆盖原本的预期值,成为新的预期值。
关闭提示 • WinRunner 主窗口 Settings General Options…
在Flight 4B中运行测试 • 开启在Flight 4B,运行测试脚本,并查看测试结果,找出错误。
二、加入检查点 • 位图检查点 • 如果应用程序包含位图,我们可以通过插入位图检查点,逐一对比各个像素来比较捕获的位图。 • 每当捕获一个对象,WR插入一条obj_check_bitmap语句到测试脚本中,并通过该语句检查一个窗口或一个范围。
分别在Flight 4A和Flight 4B中运行测试,并查看结果,在Flight 4B中发现无法清除签名的mismatch错误。点击红色字体的结果查看原因。
三、插入同步点 • 当执行测试时,所测试的应用程序每次操作的响应时间并不一定,导致执行输入动作的时间也需要等待。 • 比如以下的动作,会花几个秒钟: • 从数据库取得数据; • 等待一个窗口开启; • 等待状态列成为100%; • 等待某个状态讯息出现;
三、插入同步点 • 此时,WR会等待一段固定的时间,直到应用程序可以接受输入的动作; • 等待时间的默认值为10s; • 如果应用程序响应的时间超过WR等待的时间,则测试执行就可能会失败。 • 特别在一些需要联机联网的操作中,等待时间更是无法完全确定是足够的,因此插入同步点是很好的办法。
解决办法 • 增加WR预设等待的时间; • Senttings>General Options>Run,将[Timeout for checkpoints and CS Statements]的值加大,预设为10000msec。 • 加大此设定可能会造成在Context Sensitive的动作变慢。 • 在测试脚本中插入同步点。
三、插入同步点 • 录制测试脚本 1、启动WR,并加载GUI Map File (flight4a.gui) 2、启动Flight 4A,并登录 3、开始以Context Sensitive模式录制测试脚本 4、建立新的订单 5、填入航班与旅客资料 6、点选“Insert Order”,将订单新增到数据库中 7、点选“Delete Order”,删除刚才新增的订单 8、停止录制,并保存测试脚本为lesson6
变更预设等待时间的设定(缩短等待时间,导致脚本运行时由于等待时间不足引发问题)变更预设等待时间的设定(缩短等待时间,导致脚本运行时由于等待时间不足引发问题) 1、点选Tools->General Options… 2、选取Run->Settings 3、将10000msec改成1000msec(1秒) 4、按下“OK” 5、打开Flight 4A运行测试,发现在需要删除订单时出现如下问题:
采用插入同步点的方法 1、确认Flight 4A已经启动,确认WR已经启动,并加载lesson6测试脚本与GUI Map File 2、将光标移动到要插入同步点的位置,在button_press(“Delete Order”);这一行上面插入一行空白行,并将光标移到这一空白行的开头; 3、插入同步点:点选Insert->Synchronization Point ->For Object/Window Bitmap 4、手动将1秒钟改成10秒钟: obj_wait_bitmap("Insert Done...", "Img1", 10) 5、保存测试脚本lesson6 6、如果在Global GUI Map File模式下,记得保存新的GUI对象
三、插入同步点 • 执行已加入同步点的测试脚本: • 确认WR与Flight Reservation的主窗口开启; • 开启测试脚本; • 确认工具列上显示Verify模式; • 点选Run From Top; • 查看测试结果
四、插入函数 • 开启WR并加载GUI Map File; • 开启Flight 4A并登入; • 开始以Context Sensitive模式录制测试脚本; • 开启订单 • 在Flight Reservation选取[File]>[Open Order],勾选[Order No] ,输入3后按下[OK] • 传真订单; • 点选Cancel关闭传真订单窗口; • 停止录制; • 储存测试脚本lesson7。
使用函数产生器在测试脚本中插入函数 • 在button_press(“Cancel”)脚本前插入一行空白; • 开启传真订单窗口; • 取得#Tickets字段的值 • 选取[Insert Function]>[For Object/Window] • 函数产生器会开启并建议使用edit_get_text函数; • 变量的预设名称为text,可改成tickets; • 按下[Paste]将函数插入到测试脚本中。 • 取得Ticket Price字段的值
使用函数产生器在脚本中插入函数(cont.) • 选取[Insert Function]>[For Object/Window] • 函数产生器会开启并建议使用edit_get_text函数; • 变量的预设名称为text,可改成price; • 按下[Paste]将函数插入到测试脚本中。 • 取得Total字段的值 • 选取[Insert Function]>[For Object/Window] • 函数产生器会开启并建议使用edit_get_text函数; • 变量的预设名称为text,可改成total; • 按下[Paste]将函数插入到测试脚本中。 • 点选Cancel关闭传真订单窗口;储存测试脚本。
在测试脚本中加入if/else判断式 • 将光标放在最后一个edit_get_text脚本的下一行; • 加上下列的脚本: • If(tickets*price==total) • tl_step(“total”,0, “Total is correct.”); • else • tl_step(“total”,1, “Total is incorrect.”); • 在if脚本前加上批注: • check that the total ticket price is calculated correctly. • 储存测试脚本。
了解tl_step函数 • 透过加上的tl_step函数,可以自行决定测试脚本中的某段动作是否通过,进而决定整个测试脚本的执行结果是否通过; • tl_step(“total”,1,“Total is incorrect.”); • 第一参数total代表这个动作的名称; • 第二参数为1则WR会判定此动作为失败,为0则WR会判定此动作为通过; • 第三参数Total is incorrect是WR针对此动作显示的讯息,有意义的描述可帮助你在检视最后测试结束时,更了解此动作所代表的意义。
测试脚本的调试(debug)确保插入语句正确 • 选取Debug模式; • 将执行箭头放在测试脚本第一行; • 逐行执行: • 选取[Debug]>[Step],WR开始执行第一行 • 逐行执行完整个测试脚本; • 停止执行: • 执行完最后一行后,点[Stop]按钮 • 检视测试结果: • 选取[Tools]>[Test Results],开启测试结果窗口; • 关闭测试结果窗口。
在另一版本FR执行测试脚本 • 在Flight 4B中执行脚本; • 点选执行模式为Verify; • 点选Run From Top; • 检视测试结果; • 关闭测试结果窗口; • 关闭Flight 4B; • 关闭测试结果; • 此时发现,在4A和4B两个程序中,两个计算均正确。
将测试脚本转化成数据驱动(Data-driven)测试脚本将测试脚本转化成数据驱动(Data-driven)测试脚本 • 开启上次保存的测试脚本lesson7; • 检查GUI Map File是否已经加载; • 执行数据驱动向导 • 点选[TABLE]> [Data Driver Wizard ],出现如下图所示的欢迎窗口,选择下一步; • 建立数据表 • 在[Use a new or existing Excel table]输入lesson8.xls,自动建立一个Excel档案,存储在测试脚本的目录下;
指定数据表的变量名称 • [Assign a name to the variable]使用默认值table为数据表的变量名称; • 以数据表的变量来代表数据表的完整路径与文件名,只要修改此变量的值就可以用其他的数据表取代原本的测试数据了。 • 设定参数化选项 • [Add statements to create a data-driven test]:表示由数据驱动向导自动将转成数据驱动测试脚本的指令加到测试脚本中; • [Parameterize the test]此选项表示要做参数化
选择要被参数化的值 • 第一个显示要参数化的测试脚本为button_set(“Order No.”,ON);这行脚本是勾选[Order No.]radio button,不是我们要作参数化的测试脚本,勾选[Do not replace this data],按下一步。
第二个显示要参数化的测试脚本为edit_set(“Edit”, “3”); 这行脚本是在[Order No.]字段中输入3,就是我们要做参数化的脚本; • 在[Argument to be replaced]字段中显示要被参数化的资料为3; • 在[Replace the selected value with data from:]下选取[A new column],并在字段中输入 Order_Num,则Data Driver Wizard会在lesson8.xls中新增一栏Order_Num字段,且第一笔数据为被参数化的资料:3。 • 按下一步。
五、建立数据驱动测试脚本 • 完成 • 按下[Finish]按钮, Data Driver Wizard将测试脚本转成数据驱动测试脚本: • 开启数据表,将数据加入数据表 • 选取 [Tools]>[Data Table]开启数据表,可以看到第一栏为Order_Num,且其第一笔资料为3; • 加上4笔数据,分别为1、6、8、10,如下图所示; • 储存数据表 • 储存测试脚本
以regular expression调整测试脚本 • 在flight4a.GUI找到Fax Order No.3窗口; • 修改窗口label属性; • 点选[Modify]按钮,开启Modify窗口。