实验3在WinRunner中创建数据驱动测试和批处理测试Word下载.docx
《实验3在WinRunner中创建数据驱动测试和批处理测试Word下载.docx》由会员分享,可在线阅读,更多相关《实验3在WinRunner中创建数据驱动测试和批处理测试Word下载.docx(11页珍藏版)》请在冰豆网上搜索。
![实验3在WinRunner中创建数据驱动测试和批处理测试Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/8/f01c95b9-c693-4ae4-8053-b28fe7f9931d/f01c95b9-c693-4ae4-8053-b28fe7f9931d1.gif)
在WinRunner中,选择Table>
DataDriverWizard。
数据驱动向导欢迎窗口打开,点击下一步,开始设定参数过程。
3.为测试创建一个数据表:
在UseaneworexistingExceltable文本框中输入Lesson7。
数据驱动向导创建了一个以此名命名的微软Excel表,并保存在测试文件夹中。
4.指定一个表变量名:
接受默认的表变量名table。
5.选择全局参数选项:
选择Addstatementstocreateadata-driventest。
它会向测试中添加一些TSL声明,如:
定义表变量名、打开或关闭数据表、在循环中对于数据表里的每一行执行适当的脚本选择。
选择Parameterizethetest并选择Linebyline选项。
当我们选择参数化测试时,就使WinRunner去已录制的声明和选出的检查站中查找确定的数值用参数来替换它们。
选择一行一行选项,就使向导去为已选出测试的可参数化的每一行打开一个屏幕,由我们来决定是否使这一行参数化。
点击下一步。
6.选择要参数化的数据:
第一个一行一行的屏幕打开,首先列出的是OrderNumber单选按钮。
在这个测试中我们将在每次循环打开不同的传真预定页,而OrderNumber单选按钮每次都会被选中。
所以这个脚本行要保持原样Donotreplacethisdata,并点击Next按钮。
下一个一行一行的屏幕列出的是OrderNumber文本框。
这个文本框中的内容是在每次循环中要发生变化的,注意到”3”这个数值被高亮显示,并在Argumenttobereplaced文本框中显示,表明它是要被参数化的值。
在Replacetheselectedvaluewithdatafrom下选择Anewcolumn,并在后面的文本框中输入Order_Num,这个新列选项在Lesson7.xls文件中创建一个新列标题为Order_Num,并且在这列的第一行输入3。
点击Next按钮,再点击Finish按钮。
这样测试就被参数化了。
在参数化测试中,下列元素被添加或修改:
table=这行定义了数据表变量
ddt_open声明打开一个数据表,下面一行确认数据测试打开成功。
ddt_get_row_count声明检查数据表中有多少行,也就是在测试中要执行多少次参数循环。
for循环设置声明。
ddt_set_row这个声明告诉测试在循环过程中每次要使用表中的哪一行。
edit_set它声明了值“3”将被ddt_val所代替。
ddt_close声明关闭数据表。
二、向数据表中添加数据:
1.打开数据表:
选择Table>
DataTable,Lesson7.xls表被打开。
注意:
表中有一名为Order_Num的列,并且这列中的第一行数据为3。
2.向数据表中添加数据:
在Order_Num列的2、3、4、5行中添加数据1、6、8、10。
3.保存并关闭数据表:
点击表中的一个空单元,在菜单中选择File>
Save保存数据。
然后选择File>
Close关闭数据表。
4.保存测试:
选择File>
Save或点击工具栏中的Save按钮。
三、使用规则表达式调整脚本:
在运行测试之前,我们需要检查数据驱动的测试脚本中是否有某些可能导致冲突的因素。
数据驱动向导已经找到了被选中的检查站和已录制的声明中的所有确定数据,但是没有检查例如对象标签等这种有外部输入容易引起改变的事情。
比如在航班预约应用程序中,传真预约窗口会根据传真预约表单号来改变窗口名称。
如果我们不修改脚本就运行测试,当在第二次循环运行测试时就会失败,这是因为当前运行测试时打开的是名为FaxOrderNo.1的窗口,而脚本中却要激活名为FaxOrderNo.3的窗口,这就使WinRunner无法找到这个窗口。
我们需要使用规则表达式来解决这个问题。
一个规则表达式就是使WinRunner能够识别不同名称或标题的对象的一个带有复杂查询语句的字符串。
1.在GUIMAP文件flight4A.gui中查找传真预约窗口。
GUIFiles,选择flight4a.GUI文件,选择FaxOrderNo.3窗口图标。
2.使用规则表达式改变窗口标签:
点击Modify按钮,修改对话框打开。
在PhysicalDescription属性描述文本框中,修改label属性行,在Fax前添加一个“!
”,再使用“*”代替行尾的空格和3。
3.关闭修改对话框:
点击OK按钮,关闭修改对话框。
4.保存GUIMAP文件并关闭GUIMAP编辑器:
Save,将改变保存到flight4a.GUI文件中。
点击File>
Exit关闭GUIMAP编辑器。
四、定制结果信息:
1.改变tl_step声明。
修改测试脚本中第一行tl_step,为tl_step("
total"
0,"
Correct."
tickets"
ticketsat$"
price"
cost$"
."
);
。
修改测试脚本中第二行tl_step,为tl_step("
1,"
Error!
"
doesnotequal$"
."
2.保存测试:
五、运行测试并分析结果:
1.启动航班预约应用程序Flight4A并登录:
选择Start>
Programs>
WinRunner>
SampleApplications>
Flight4B并以自己的名字和mercury为用户名和密码登录。
将航班预约应用程序和WinRunner重新排放,使它们在桌面上同时可见。
2.选择测试运行模式为Verify校验模式。
3.选择从头开始运行测试:
选择Test>
RunfromTop或点击FromTop按钮。
运行测试对话框打开。
接受默认的文件夹名称res1。
选择Displaytestresultsatendofrun单选框。
单击OK按钮运行测试。
4.查看测试结果:
当测试运行结束后,测试结果自动显示在测试结果窗口中。
在测试记录中tl_step事件被列出了五次,每一次循环都检查了预定的机票数目、票价和总的合计价格。
5.关闭测试结果窗:
在WinRunner测试结果窗中选择File>
Exit。
6.关闭测试脚本和航班预约应用程序:
在WinRunner主窗口中选择File>
Close。
在航班预约应用程序中选择File>
六、数据驱动函数练习:
在以上测试脚本中进行如下修改(独立查找相关函数,阅读说明,了解其使用方法):
1.不允许使用ddt_set_row()和ddt_val()函数,要求应用ddt_val_by_row()函数来代替它们,替代过程中注意函数各参数的含义。
2.自己设置一个变量,用来记录每次循环中total的累加值,并在循环结束后,使用report_msg()函数在测试结果中输出用户提示信息。
table="
Lesson7.xls"
;
rc=ddt_open(table,DDT_MODE_READ);
if(rc!
=E_OK&
&
rc!
=E_FILE_OPEN)
pause("
Cannotopentable."
ddt_get_row_count(table,table_RowCount);
TotalPrice=0;
for(table_Row=1;
table_Row<
=table_RowCount;
table_Row++)
{
#FlightReservation
set_window("
FlightReservation"
5);
menu_select_item("
File;
OpenOrder..."
#OpenOrder
OpenOrder"
4);
button_set("
OrderNo."
ON);
edit_set("
Edit_1"
ddt_val_by_row(table,table_Row,"
Order_Num"
));
button_press("
OK"
9);
FaxOrder..."
#FaxOrderNo.3
FaxOrderNo.3"
3);
edit_get_text("
#Tickets:
"
tickets);
TicketPrice:
price);
Total:
total);
TotalPrice=TotalPrice+total;
#checkthatthetotalticketpriceiscalculatedcorrectly.
if(tickets*price==total)
tl_step("
0,"
else
1,"
dosenotequal$"
Cancel"
}
ddt_close(table);
report_msg("
TheTotalPriceis"
TotalPrice);
问答题:
为什么要创建数据驱动测试?
其基本思想是什么?
答:
当要用多组数据测试相同的操作步骤时,可以通过创建数据驱动测试来完成。
这种测试会循环执行指定的次数,每次执行都由不同的数据驱动。
为了使WR可以使用这些数据,用户必须在测试脚本中建立和数据的联系,这就叫测试参数化。
数据会被储存在一个数据表中。
具体操作时用户可以手工也可以用DataDriverWizard来参数化测试以及把数据储存到表格中。
创建批处理测试
当被测试的应用程序经过修订之后,我们可能希望用那些过去曾经用过的测试脚本对新版本的产品进行测试。
这就需要我们应用批处理技术,一次运行多个测试。
批处理测试与一般测试的不同点包括:
4.包含一个调用声明。
例如:
call"
c:
\\test\\flights\\lesson5"
();
。
在运行测试过程中,WinRunner首先解释调用声明,再打开和运行被调用的测试,被调用测试运行结束后,会返回到批处理测试中并运行其它测试内容。
5.在运行测试前,我们要选择Tools>
GeneralOptions中的Runinbatchmode选项。
这一选项会通知WinRunner禁止一些中断测试的信息。
例如,当WinRunner发现一个位图不匹配错误时,它不会提示你去停止测试运行。
在我们查看批处理测试的运行结果时,我们可以看到批处理测试中调用的所有测试或通过或失败的运行结果。
七、设计一个批处理测试:
1.启动WinRunner创建一个新测试并加载GUIMAP
启动WinRunner并创建一个新测试,选择File>
New,新测试文件打开。
2.在测试脚本中设计调用Lesson4Lesson5Lesson6的声明:
在WinRunner的新测试脚本中,输入
F:
\\陈丹琪\\试验\\WinRunner\\lesson4"
\\陈丹琪\\试验\\WinRunner\\lesson5"
\\陈丹琪\\试验\\WinRunner\\lesson6"
注意Lesson前面的路径要根据自己存放地址书写。
3.定义一个循环调用每个测试三遍:
for(i=0;
i<
3;
i++)
{
4.在通用选项对话框中选择批处理运行选项:
GeneralOptions>
Run中的Runinbatchmode选项。
点击OK按钮。
5.保存批处理测试:
测试文件名存成:
batch。
八、
在航班预约应用程序4B版本中运行批处理测试:
1.启动航班预约应用程序Flight4B并登录:
九、分析测试结果:
1.打开测试结果窗口,显示批处理测试res1的结果:
当测试运行结束后,如果测试结果没有自动显示,选择Tools>
TestResults或点击TestResults按钮,打开测试结果窗口。
2.查看批处理测试结果:
我们看到批处理测试的结果是失败的,因为在前面的实验中我们已经知道版本4B中有些bug。
左侧测试树中显示了批处理测试中调用的所有测试,由于每个测试被调用了三次,所以在列表中每个测试的名称显示了三遍。
右侧列表中列出了批处理测试运行过程中发生的所有事件。
calltest事件表明一个被调用的测试被打开并执行了。
return事件表明控制返回到批处理测试中,并显示了某个被调用测试的运行结果。
3.查看被调用测试的结果:
在测试树中点击想要查看的被调用测试的测试名称,如点击Lesson5,这时测试树中点击的测试名称被高亮显示。
右侧的测试结果表示的是当前测试是否通过的信息。
右侧下面的表格中显示的是目前选定的测试的运行过程中发生的所有事件及结果。
由于在前面的实验中,我们了解4B版本中,清空签名按钮在点击后并没有完成清空的操作,造成在位图检查过程中出现不匹配错误。
双击失败事件,可以显示期望、实际及相比较后的不同结果。
4.关闭测试结果窗:
5.关闭批处理测试:
Close关闭每个在批处理测试中被调用的测试,或选择File>
CloseAll来关闭所有被调测试。
6.在通用选项对话框中清除批处理运行选项:
GeneralOptions,清空Runinbatchmode选项,点击OK按钮。
批处理测试技巧:
i.通过定义搜索路径,可以通知WinRunner到指定的目录中搜索要调用的测试。
GeneralOptions,在Searchpathforcalledtests文本框中定义被调用的测试所在目录,这样在编写调用测试的语句时,就可以直接写被调用的测试名称了。
lesson6"
ii.可以从一个批处理测试向一个被调用的测试传递参数值,参数值使用一个调用声明来定义:
calltest_name([parameter1,parameter2,...]);
iii.在运行批处理测试时,一定不要忘记必须在Runinbatchmode模式下进行。
当应用程序的新版本完成时,开发人员可能修改了某些对象、添加了某个对象或删除了一些对象,我们应该如何使用以前的测试脚本来测试新版本的应用程序呢?
实际WinRunner提供了一个很简单的方法,就是修改GUIMAP。
GUIMAP文件中包含的应用程序各对象的描述信息,包括:
一个逻辑名称,就是我们在测试脚本中看到的,如:
button_press("
InsertOrder"
其中的InsertOrder就是对象的逻辑名称。
一个属性描述,一些可以唯一描述某个对象的属性列表,如:
class:
push_button
label:
}
这个按钮属于按压式按钮对象类型并且其标签为InsertOrder。
当运行测试时,WinRunner在测试脚本中读取对象的逻辑名称,并上GUIMAP文件中查找它的属性描述,然后应用这个描述在被测的应用程序中找到该对象。
所以当对象改变时,我们必须更新GUIMAP文件,使WinRunner在运行测试时能够找到该对象。
一十、在GUIMAP中编辑对象属性:
2.打开GUIMAP文件编辑器:
GUIMAP,在对象/窗体列表框中显示当前GUIMAP文件中的内容。
对象列表以树状方式显示,每个对象由一个图标和一个逻辑名称组成。
双击对象可以展开或收起包含子元素的对象。
勾选显示属性描述单选框,可在其下的文本框中查看到具体的属性描述信息。
3.在GUIMAP文件编辑器树中找到插入预约(InsertOrder)按钮:
选择View>
CollapseObjectsTree(折叠对象树),在对象/窗体列表框中只显示各个窗体的标题。
双击FlightReservation窗体查看其中的对象,拉动滚动条直到在对象列表中找到插入预约(InsertOrder)按钮。
4.查看插入预约(InsertOrder)按钮的属性:
在对象树中单击插入预约(InsertOrder)按钮,其属性就显示在下面的属性窗格中。
5.修改插入预约(InsertOrder)按钮的属性:
点击修改按钮或双击插入预约(InsertOrder)按钮,修改对话框打开。
在属性窗格中的标签由InsertOrder改为Insert。
点击OK按钮确定修改并关闭对话框。
6.保存GUIMAP文件并关闭GUIMAP编辑器:
一十一、向GUIMAP中添加GUI对象:
1.打开航班预约应用程序Flight4A的登录窗口:
Flight4A。
GUIFiles。
3.在登录窗口中识别所有对象:
单击Learn按钮,使用手形指针点击登录窗口的标题栏。
一个消息框弹出,提示将识别窗体中的所有对象,点击Yes按钮。
WinRunner将识别登录窗口中的所有对象属性并记录在临时GUIMAP文件中。
4.向GUIMAP文件中保存新对象:
Save,WinRunner信息对话框通知我们已存在窗口中的新对象添加到flight4a.GUI文件中。
点击Yes按钮。
又一新窗口对话框打开,确认flight4a.GUI文件在LoadedGUIFiles框中显示,点击OK按钮。
在WinRunner再次弹出的消息对话框中