一、 簡答題(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-復習總結
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...