一、 简答题(30分=3分X10)
1. QTP有几种视图,是哪几种(要求:中英文两种写法)?
关键字视图(Keyword View)、
专家视图(Expert View)
2. 简述QTP的对象仓库机制如何实现自动化测试?
录制时将要操作的对象以对象的方式存储到对象仓库中
回放时,以对象仓库中对象进行相应回放
a.封装被测试对象到对象仓库
(1)获取被操作的对象
(2)使用唯一的对象名将对象保存在对象仓库
(3)保存对象的所有属性信息到对象仓库
(4)提取出关键属性信息
(5)生成脚本
b.对比对象仓库里的对象属性和运行时的真实被测对象的对象属性
(1)在脚本中获取被操作对象(Item)
(2)查看对象仓库中是否有该对象
(3)对比对象仓库里和实际运行时该对象的关键属性
(4)如果对比一致:按照Operation value去操作RO
如不一致:一直对比(20s)
c.对比一致后找到相应的对象,按照脚本驱动对象
3. 如果两行代码之间存在延时,有几种方法解决?分别写出每种解决办法的用法。
Wati 延时固定时间,单位秒
watiProperty 延时时间内如果对象找到就提前结束延时
a.wait
wait time(s)
b.设置步骤之间延时时间(每个步骤都会延时,不太好)
Tools-Options-Run-Normal
c.添加同步点
waitProperty "属性名","属性值"timeout(ms)
4. 如下代码:脚本循环几次?输出内容是?
循环12次
输出: c1,c2,c3,
d1,d2,d3
e1,e2,e3
f1,f2,f3
Print DataTable(1,1)
Print DataTable(1,2)ss
DataTable中数据如下:
循环开关设置如下:
5. 以下代码,输入的内容为?
Function myfun(num1,num2)
Dim mynum
mynum=100
myfun=mynum+num1*num2
End Function
Msgbox myfun(4,5)+mynum
120
6. Action的类型有几种,分别是?
2种,全局表单,和局部表单
2种,
a.reusable action:可以被其它测试调用
b.non-reusable action:只可以被本测试调用
c.external action:其它测试调用可复用的action,生成的action就是外部的action
7. 输入数据参数化的类型有哪些?
3种,
dataTable,
environment,
randomNumber
8. 对输入数据使用DataTable参数化之后,Global 和 Action反复的次数在什么位置设置?
Global在File-settings-Run-中
Action在每个Action-右击-Action Call Properties-Run
9. Insert—>Output建立的输出值可以存放在什么位置?
Run-Time Data Table 中
dataTable
environment
10. 写出下列正则表达式中元字符的意义。
① \d ②\w ③. ④\s ⑤\b ⑥+
1位数字0-9
1位字母、数字、下划线
任意1个字符,除换行符以外
任意1个空白符(空格、tab空格、换行符)
单词的开始或者结束
重复1次或更多次
二、 选择题(35分=5分X7)
1. 在代码中生成多个Action的方法有(ABCD)
A. Call to new Action
对象仓库是以action来区分的,不同action对应不同的对象仓库
B. Call to copy of Action
也会产生不同的对象仓库
可拷贝 可复用的/不可利用的 action
C. Call to Existing Action
也会产生不同的对象仓库
只能调用 可复用的 action
D. 通过分割方式产生新的Action
也会产生不同的对象仓库
分割的光标位置:下一个action代码的第一行
2. DataTable中Sheet表单描述正确的有(ABC)
A. 如果指定Global Sheet中的数据作为参数化数据,那么将应用到整个脚本,即整个脚本执行多次反复
B. 如果指定Action Sheet 中的数据作为参数化数据,则只有相应的Action执行多次反复
C. 如果Global Sheet中的测试数据为三行,QTP默认Test反复三次
D. 如果Action Sheet中的测试数据为三行,QTP默认Action反复三次
3. 下面对VBScript变量描述正确的有(ABC)
A. 除简单数字或字符串以外,Variant可以进一步区分数值信息的特定含义
B. Variant用于数字上下文中时作为数字处理,用于字符串上下文中时作为字符串处理
C. VBScript 只有一种数据类型,称为Variant
D. VBScript变量使用之前必须先定义
4. 阅读以下VBS代码,
1) vDay=Weekday(Date)
2)‘Date 函数返回当前系统日期
3)‘Weekday 函数返回代表一星期中某天的整数。缺省以星期天为第一天,返回值为1。
4)If vDay = 6 then
5)Msgbox“时间过得真快,又到星期五了。"
7)else if vDay > 1 and vDay <6 then
8)Msgbox “明天要上班,不要迟到哦!"
else
9)Msgbox "哈哈,周末啦!"
10)end if
以上代码,有没有错误的地方,如何修改(A D)
A. 在第11行添加End if
B. 去掉第7行代码的中的Then
C. 去掉第7行代码中的else
D. 将第7行代码中的else if 修改为elseif
5. 以下VBS代码中完成计算“2+4+6+8+10“功能的有(CD)
A.
Dim num, Sum
num = 2
Sum = 0
Do While num < 10
num = num + 2
Sum = sum+num
Loop
MsgBox "总和为: " & Sum
B.
Dim num, Sum
num = 10
Sum = 0
Do
Sum = sum+num
num = num - 2
Loop While num <11
MsgBox "总和为: " & Sum
C.
Dim num, Sum
num = 2
Sum = 0
Do Until num>10
Sum = sum+num
num = num + 2
Loop
MsgBox "总和为: " & Sum
D.
Dim num, Sum
Sum = 0
For num=2 to 10 Step 2
Sum = sum+num
Next
MsgBox "总和为: " & Sum
6. 以下选项中能正确打开“百度”的是(A)
A. SystemUtil.Run “iexplore.exe”,”http://www.baidu.com”
B. systemUtil.Run “explore.exe”,”http://www.baidu.com”
C. systemUtil.Run “http://www.baidu.com”,”iexplore”
D. systemUtil.Run “http://www.baidu.com”,”explore.exe”
7. 以下选项中能获取“Mary”的代码是(AC)
A. DataTable.GetSheet(1).SetCurrentRow(3)
Print DataTable(1,1)
B. DataTable.GetSheet(“name”).GetCurrentRow(3)
Print DataTable(1,1)
C. DataTable.GetSheet(1).SetCurrentRow(3)
Print DataTable.GetSheet(1).GetParameter(1).value
D. DataTable.GetSheet(1).SetCurrentRow(3)
Print DataTable.GetSheet(1).GetParameter(1).name
8. 下列选项中描述正确的是(A)
A. 12[123]可以匹配121,122, 123
B. \D{1,2}可以匹配a,b,ab
C. ab*可以匹配ab,abab,ababab等
D. a[0]b可以匹配ab,a0b
三、 编码题(50分)
1. 编写生成(2~7)随机数的代码? (7分)
QTP特有:randomNumber(2,7)
VBS: int((7-2+1)*rnd+2)
2. 根据下图中关键字视图中的代码,编写与其相对应的专家视图中的代码?(8分)
3. 请写出取值范围为0-326数字的正则表达式,也可以匹配以下格式“078”,“001” (10分)
0-9 00-99 000-326
0-9 00-99 000-299 300-319 320-326
\d \d\d [0-2]\d\d 3[0-1]\d 32[0-6]
^([0-2]?\d\d?|3[01]\d|32[0-6])$
=======================================
4. 下图为D:\info.xls文件的截图
使用所学知识,在QTP中实现以下功能: (25分)
a. 将表单“达内花名册”导入QTP的DataTable中(新建一个sheet页) (3分)
b. 统计表单“达内花名册”的列数与行数 (3分)
c. 在数据中查找是否有名字以“小”开头的 (7分)
d. 如果有,统计以“小”开头数据的总数,将数据写入测试结果报告中;如果没有,将没有查到书写到测试结果报告中 (4分)
e. 将数据表中的以“小”开头的名字,都换成以“王”开头,并且将修改够的数据导出到Excel文件中(E:\res.xls)(8分)
Option explicit
Dim rowC '行数
Dim colC '列数
Dim xiaoC '以’小开头的数据的总数
'新建表单
dataTable.AddSheet "新花名册"
'导入数据
dataTable.ImportSheet "c:\info.xls","花名册","新花名册"
'统计行列数
rowC=dataTable.GetSheet("新花名册").GetRowCount
colC=dataTable.GetSheet("新花名册").GetParameterCount
print "行数:"&rowC
print "列数:"&colC
'统计以’小‘开头的数据的总数
xiaoC=0
For i=1 to rowC
dataTable.GetSheet("新花名册").SetCurrentRow i
For j=1 to colC
val=dataTable.GetSheet("新花名册").GetParameter(j).Value
If mid(val,1,1)="小" Then
xiaoC=xiaoC+1
dataTable.GetSheet("新花名册").GetParameter(j).Value="王"&mid(val,2)
End If
Next
Next
If xiaoC>0 Then
reporter.ReportEvent micDone,"统计以“小”开头数据的总数",xiaoC
else
reporter.ReportEvent micDone,"统计以“小”开头数据的总数",xiaoC
End If
'导出数据到\res.xls
dataTable.ExportSheet "res.xls","新花名册"
5. 对被测系统Mtours中的以下两个控件(WebList 和 WebRadioGroup)中的选项进行随机选择,并且输出所选择的内容。(15分)
Browser("Welcome: Mercury Tours").Page("Find a Flight: Mercury").WebList("fromPort").Select “Acapulco”
set froO=Browser("Find a Flight: Mercury").Page("Find a Flight: Mercury").WebList("fromPort")
froC=froO.GetROProperty("items count")
froR=randomNumber(0,froC)
froO.Select froR
msgbox froO.GetROProperty("value")
Browser("Select a Flight: Mercury").Page("Select a Flight: Mercury").WebRadioGroup("outFlight").Select "Blue Skies Airlines$191$723$7:08 pm$"
6. 猜数游戏,需求如下:(20分)
a. 通过rnd函数使系统随机产生一个1~10的随机数
Randomize
int(10*rnd+1)
rnd:0~0.9….
10*rnd:0~9…….
10*rnd+1:1~10.。。。。。
randomize
int(10*rnd+1)或者
randomNumber(1,10)
b. 使用inputbox让用户输入一个1~10的随机数
num=Cint(inputbox(“请输入一个1~10的随机数,输入0可以退出游戏”,”猜数游戏”))
c. 用户输入0可以退出游戏
d. 如果随机数大于用户输入的数据,提示用户:猜小了,并且让用户继续猜
e. 如果随机数小于用户输入的数据,提示用户:猜大了,并且让用户继续猜
f. 如果随机数等于用户输入的数据,提示用户:猜对了,并且提示用户一共猜了几次
g. 如果用户一次就猜对了,提示用户:您太棒了,一次就猜对了
h. 用户猜对了之后,再次产生一个随机数,继续游戏
Dim rNum '随机数
Dim iNum '输入数
Dim caiC '猜对所用次数
randomize
rNum=int(10*rnd+1)
print rNum
iNum=-1
caiC=0
iNum=cint(inputbox("请输入1个1~10的随机整数,输入0可以退出游戏","猜数游戏"))
Do until iNum=0
caiC=caiC+1
If rNum>iNum Then
msgbox "猜小了,请继续猜",,"提示信息"
elseif rNum<iNum then
msgbox "猜大了,请继续猜",,"提示信息"
else
If caiC=1 Then
msgbox "太棒了,一次就猜对了",,"提示信息"
else
msgbox "猜对了,一共猜了"&caiC&"次",,"提示信息"
End If
caiC=0 '猜对后,清空猜数次数
randomize
rNum=int(10*rnd+1) '猜对后,重新生成1~10的随机数
print rNum
End If
iNum=cint(inputbox("请输入1个1~10的随机整数,输入0可以退出游戏","猜数游戏"))
Loop
QTP10-05-复习总结
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...