




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、quicktest professional文檔狀態(tài):草稿版當(dāng)前版本:v1.3編寫:劉毅編寫日期:2006-10-01審核:審核日期:批準(zhǔn):批準(zhǔn)日期:61 / 46章節(jié)修訂前修訂后修訂內(nèi)容簡(jiǎn)述修訂日期作者文檔修訂記錄編號(hào)版本號(hào)版本號(hào)全部1.0新建2006-10-01劉毅一1.01.1增加 4、5、6 三節(jié)2006-12-27劉毅一、二1.11.2新增第一、二部分圖片說明2007-1-12劉毅二、三1.21.3新增 16、30、33 節(jié),修改112007-1-15劉毅摘 要軟件測(cè)試自動(dòng)化已經(jīng)被很多的軟件測(cè)試專家驗(yàn)證是可行的,并且反復(fù)的運(yùn)用在很多軟件開發(fā)過程中; 大多數(shù)參加軟件測(cè)試的專家也同意自動(dòng)
2、化測(cè)試不只是值得的同時(shí)也是必要的;在軟件測(cè)試的市場(chǎng)上有很多針對(duì)使用者接口gui 應(yīng)用程序所開發(fā)的自動(dòng)化測(cè)試工具, 而且其中有些工具所供應(yīng)的功能,已經(jīng)足夠滿意軟件測(cè)試自動(dòng)化的需求;但是, 我們卻看到越來越多的公司, 在購買自動(dòng)化測(cè)試工具之后才發(fā)覺,實(shí)施一個(gè)符合成本效益cost-effective 的自動(dòng)化測(cè)試解決方案solution 原比其所出現(xiàn)的仍困難;我們會(huì)常常聽到一些埋怨,像是“看軟件測(cè)試工具廠商做起來似乎很簡(jiǎn)潔,但是當(dāng)我們的人自己做的時(shí)候卻完全不是那么一回事!”、“事實(shí)上我們已經(jīng)花了六個(gè)月的時(shí)間在導(dǎo)入自 動(dòng)化測(cè)試,但是大部分的測(cè)試卻仍是停留在人工測(cè)試的階段!”或是“要讓整個(gè)自動(dòng)化測(cè)試運(yùn)作
3、起來所花費(fèi)的時(shí)間實(shí)在太長(zhǎng)了,仍不如使用原本的人工測(cè)試所花的時(shí)間更短!”;通常最終的結(jié)局是“另一個(gè)錯(cuò)誤的選購!”,自動(dòng)化測(cè)試工具從今被束之高閣了;何謂自動(dòng)化測(cè)試?簡(jiǎn)而言之, 所謂的自動(dòng)化測(cè)試就是將您現(xiàn)有的手動(dòng)測(cè)試流程給自動(dòng)化;而且要實(shí)施自動(dòng)化測(cè)試的公司或組織,本身必需要有一套正規(guī) formalized 的手動(dòng)測(cè)試流程;而這個(gè)正規(guī)的手動(dòng)測(cè)試流程至少要包含以下的條件:.具體的測(cè)試個(gè)案 test cases:從商業(yè)功能規(guī)格或設(shè)計(jì)文件而來的測(cè)試個(gè)案,包含可預(yù)期的 predictable 的預(yù)期結(jié)果 expected result ;.獨(dú)立的測(cè)試環(huán)境 test environment :包含可回復(fù)測(cè)試資料
4、的測(cè)試環(huán)境,以便在應(yīng)用軟件每次變動(dòng)后,都可以重復(fù)執(zhí)行測(cè)試個(gè)案;假如您目前的測(cè)試流程并未包含上述條件,即使您導(dǎo)入了自動(dòng)化測(cè)試,也不會(huì)得到多大的好處;所以,假如您的測(cè)試方法testing methodology 只是將應(yīng)用軟件移轉(zhuǎn)到一群由使用者或?qū)<壹?jí)使用者 subject matter experts 組成的測(cè)試團(tuán)隊(duì),然后任由他們?nèi)デ脫翩I盤執(zhí)行測(cè)試工作; 那我建議您先把自動(dòng)化測(cè)試放一邊,把建立一個(gè)有效的測(cè)試流程當(dāng)成您目前首要的工作;由于要自動(dòng)化一項(xiàng)不存在的流程是完全沒有意義的;自動(dòng)化測(cè)試最實(shí)際的應(yīng)用與目的是自動(dòng)化回來測(cè)試regression testing;也就是說,您必需要有用來儲(chǔ)存具體測(cè)試個(gè)
5、案的數(shù)據(jù)庫,而且這些測(cè)試個(gè)案是可以重復(fù)執(zhí)行于每次應(yīng)用軟件被變更后,以確保應(yīng)用軟件的變更沒有產(chǎn)生任何由于不當(dāng)心所造成的影響;自動(dòng)化測(cè)試腳本 script 同時(shí)也是一段程序;為了要更有效的開發(fā)自動(dòng)測(cè)試腳本,您必需和一般軟件開發(fā)的過程一樣, 建立制度以及標(biāo)準(zhǔn); 要更有效的運(yùn)用自動(dòng)化測(cè)試工具, 您至 少 要 有 一 位 受 過 良 好 訓(xùn) 練 的 技術(shù) 人 員 , 換 句話 說 , 您 至 少要 有 一 位 程 序設(shè) 計(jì) 師programmer ;該段文字摘自 totally data-driven automated testing by keith zambelich sr. softwarequ
6、ality assurance analyst , automated testing evangelist ,作者目前為 automated testing specialists, inc. 公司的總裁兼執(zhí)行長(zhǎng)官,主要從事自動(dòng)化測(cè)試導(dǎo)入的顧問工作;本文介紹的相關(guān)學(xué)問就是這位程序設(shè)計(jì)師所需要具備的最基本的學(xué)問;本文系取前者之體會(huì),綜合運(yùn)用,非一人之得,不敢妄專,惟留一己心得耳;1. qtp 安裝第一部分基礎(chǔ)學(xué)問主程序:進(jìn)入下面目錄運(yùn)行:qtp90quicktestsetup.exe在沒有 licence 的情形下挑選安裝 演示版 ,完成安裝之后再破解,其它依據(jù)默認(rèn)設(shè)置完成安裝,可暫不重啟;中
7、途需要下載microsoft script debugger (腳本調(diào)試器) ,假如下載失敗, 可以安裝終止之后另行下載安裝:腳本調(diào)試器 .exe安裝中文插件(可選) : 進(jìn)入下面這個(gè)目錄運(yùn)行:qtp90chsquicktestpro_chs quicktestpro_chs.exe依據(jù)默認(rèn)設(shè)置完成安裝,可暫不重啟;關(guān)聯(lián) qc 插件( mercury quality center add-in): 進(jìn)入下面目錄運(yùn)行:qtp90tdplugin tdpluginsetup.exe依據(jù)默認(rèn)設(shè)置完成安裝,以上安裝完成之后必需重新啟動(dòng) qtp 才可以進(jìn)行許可證的安裝;安裝插件許可證:1、 使用并發(fā)許可
8、證這需要有正版lic 的機(jī)器做服務(wù)器, 在運(yùn)行 qtp 的時(shí)候點(diǎn)擊 “修改插件許可證 ”,挑選安裝并發(fā)許可證,再入如服務(wù)器地址,如:192.168.168.892、使用單機(jī)許可證把 mgn-mqt82.exe 文件放到 x:program filesmercury interactivequicktest professional 下面,然后運(yùn)行,退出重新運(yùn)行qtp 即可;在已經(jīng)安裝并發(fā)許可證而又想修改許可證為單機(jī)許可證的話,可能上面的方法行不通,這種情形下可以試著先使用記事本或者相關(guān)的程序打開c:program filescommon filesmercury interactivelice
9、nse managerlservrc文件,在打開的文件中,復(fù)制形如 下面的一段字符串: d6bum d6bum d6bum d6bum d6bum d6bum d6bum d6bum8qarh# ,記得肯定帶上 “ #號(hào)”,在首次運(yùn)行 qtp 的時(shí)候點(diǎn)擊 “修改插件許可證 ”,挑選安裝單機(jī)許可證,再將這段字符粘貼到里面重啟qtp 就行了;2. qtp 啟動(dòng)要啟動(dòng) quicktest ,請(qǐng)?zhí)暨x “開頭 ”菜單中的 “程序 ” >“quicktestprofessional” >“ quicktest professional;”第一次啟動(dòng) quicktest時(shí),打開 “加載項(xiàng)治理器
10、”對(duì)話框;提示 :假如不期望下次啟動(dòng)quicktest時(shí)打開該對(duì)話框,可以清除“啟動(dòng)時(shí)顯示 ”復(fù)選框;單擊 “確定 ”;打開 “quicktest professional 窗口”;可以挑選打開quicktest教程,開頭錄制新測(cè)試,打開現(xiàn)有測(cè)試或打開空白的新測(cè)試;提示 :可以按esc 鍵關(guān)閉窗口,也可以點(diǎn)擊“空白測(cè)試”建立新的測(cè)試,或者打開其它測(cè)試腳本或組件; 可以單擊 “每日提示 ”瀏覽全部可用提示; 假如不期望下次啟動(dòng)quicktest時(shí)顯示該窗口,可以清除“啟動(dòng)時(shí)顯示該屏幕”復(fù)選框;3. qtp窗口quicktest窗口包含以下關(guān)鍵元素(下圖為qtp 8.2 的試圖,和 9.0 版本稍
11、有不同):. 標(biāo)題欄 -顯示當(dāng)前打開的測(cè)試或組件的名稱;.菜單欄 -顯示 quicktest命令菜單;.文件工具欄 -包含如干按鈕,幫助您治理測(cè)試或組件;.測(cè)試工具欄 -包含如干按鈕,幫助您完成測(cè)試過程;.調(diào)試工具欄 -包含如干按鈕,幫助您對(duì)測(cè)試或組件進(jìn)行調(diào)試(默認(rèn)情形下不顯示);.操作工具欄 -包含如干按鈕和一個(gè)操作列表,用于查看單項(xiàng)操作或整個(gè)測(cè)試流的具體信息;.測(cè)試窗格 -包含關(guān)鍵字視圖和專家視圖選項(xiàng)卡;.active screen -當(dāng)您在錄制會(huì)話過程中執(zhí)行某個(gè)特定步驟時(shí),供應(yīng)了顯現(xiàn)的應(yīng)用程序的快照;.數(shù)據(jù)表 -幫助您對(duì)測(cè)試或組件進(jìn)行參數(shù)化;對(duì)于測(cè)試,數(shù)據(jù)表包含“全局”選項(xiàng)卡和每個(gè)操作的
12、選項(xiàng)卡;對(duì)于組件,數(shù)據(jù)表包含單個(gè)選項(xiàng)卡;.“調(diào)試查看器”窗格-幫助您對(duì)測(cè)試或組件進(jìn)行調(diào)試;“調(diào)試查看器”窗格包含“監(jiān)視表達(dá)式”、“變量”和“命令”選項(xiàng)卡(默認(rèn)情形下不顯示);.狀態(tài)欄 -顯示 quicktest應(yīng)用程序的狀態(tài);4. qtp 常用快捷方式下表這些快捷方式是我們常常用得到的,而其它的快捷方式記憶起來比較復(fù)雜,具體參見 qtp 的幫忙文檔:commandshortcut keyfunction record (一般錄制)f3starts a recording session.run (運(yùn)行)f5starts a run session from the beginning or f
13、romthe line at which the session was paused.stop (停止)f4stops the recording or run session.run from step (叢當(dāng)前步驟運(yùn)行)ctrl +f5starts a run session from the selected step. analog recording(模擬錄制)shift +a lt +f3starts recording in analog recording mode. low level recording (低級(jí)錄制)ctrl +shift +f3starts record
14、ing in low level recording mode. object repository (打開對(duì)象庫)ctrl +ropens the object repository dialog box.step into (單步調(diào)試運(yùn)行到) f11runs only the current line of the script. if the current line calls a method , the method is displayed in the view but is not performed.step over (跳出斷點(diǎn))f10runs only the curr
15、ent line of the script. when the current line calls a method , the method is performed in its entirety , but is not displayed in the view.step out (跳過斷點(diǎn))shift +f11runs to the end of the method then pauses the runsession. available only after running a method using step into .run to step (運(yùn)行到)ctrl +f
16、10runs until the current step.add to watch(添加到觀看表)ctrl +tadds the selected item to the watch tab. insert/remove breakpoint (斷點(diǎn)) f9sets or clears a breakpoint in the test.enable/disable breakpoint(啟用 /停用斷點(diǎn))ctrl +f9enables or disables a breakpoint in the test.clear all breakpoints(清除全部端點(diǎn))ctrl +shift +
17、f9deletes all breakpoints in the test.check syntax (語法檢查)ctrl +7checks the syntax of the active document.5. 檢查點(diǎn)概述在錄制會(huì)話過程中或在編輯測(cè)試或組件時(shí)添加檢查點(diǎn);在錄制了初始測(cè)試或組件之后,通常可以更為便利地定義檢查;有幾種方法可以添加檢查點(diǎn);在錄制或編輯時(shí)添加檢查點(diǎn)使用 “插入 ”菜單上的命令,或者單擊“測(cè)試 ”工具欄上的 “插入檢查點(diǎn) ”按鈕旁邊的箭頭;這將顯示與關(guān)鍵字視圖的選定步驟相關(guān)的檢查點(diǎn)選項(xiàng)的菜單;只在編輯時(shí)添加檢查點(diǎn)右鍵單擊關(guān)鍵字視圖中您要添加檢查點(diǎn)的步驟,然后挑選“插
18、入標(biāo)準(zhǔn)檢查點(diǎn) ”;右鍵單擊 active screen中的任意對(duì)象,然后挑選“插入標(biāo)準(zhǔn)檢查點(diǎn) ”;可使用該選項(xiàng)為active screen中的任意對(duì)象創(chuàng)建檢查點(diǎn)(即使該對(duì)象不是關(guān)鍵字視圖中任一步驟的組成部分);留意 :假如使用 “active screen方”法,請(qǐng)確保active screen包含有關(guān)待檢查對(duì)象的充分?jǐn)?shù)據(jù);明白檢查點(diǎn)類型檢查點(diǎn)類型描述用法示例標(biāo)準(zhǔn)檢查點(diǎn)檢查對(duì)象的屬性值;檢查是否選中某單項(xiàng)按鈕;圖像檢查點(diǎn)檢查圖像的屬性值;檢查圖像源文件是否正確;表檢查點(diǎn)檢查表中的信息;檢查表單元格中的值是否正確;頁面檢查點(diǎn)檢查網(wǎng)頁的特性;檢查加載網(wǎng)頁所需的時(shí)間,或者檢查網(wǎng)頁是否包含中斷鏈接;文
19、 本 / 文 本區(qū)域檢查點(diǎn)檢查文本字符串是否顯示在網(wǎng)頁或應(yīng)用程序窗口中的適當(dāng)位置;檢查預(yù)期的文本字符串是否顯示在網(wǎng)頁或?qū)υ捒蛏系念A(yù)期位置;位圖檢查點(diǎn)將網(wǎng)頁或應(yīng)用程序的某個(gè)區(qū)域捕獲為位圖后對(duì)其進(jìn)行檢查;檢查網(wǎng)頁或網(wǎng)頁的任何部分是否能按預(yù)期顯示;數(shù)據(jù)庫檢查點(diǎn)檢查應(yīng)用程序或網(wǎng)站所拜訪的數(shù)據(jù)庫內(nèi)容檢查數(shù)據(jù)庫查詢中的值是否正確;可 訪 問 性檢查點(diǎn)對(duì)網(wǎng)站區(qū)域進(jìn)行識(shí)別,以檢查是否符合 508 部分;檢查網(wǎng)頁上的圖像是否包含alt屬性(該屬性是 w3c web內(nèi)容可拜訪性規(guī)章所要求的);xml檢查點(diǎn)檢查 xml文檔的數(shù)據(jù)內(nèi)容;留意: xml文件檢查點(diǎn)用于檢查特定的xml文件; xml應(yīng)用程序檢查點(diǎn)用于檢查網(wǎng)
20、頁中的 xml文檔;您可以插入以下檢查點(diǎn)類型以檢查網(wǎng)站或應(yīng)用程序中的各種對(duì)象;“標(biāo)準(zhǔn)檢查點(diǎn) ”檢查應(yīng)用程序或網(wǎng)頁中對(duì)象的屬性值;標(biāo)準(zhǔn)檢查點(diǎn)會(huì)檢查各種對(duì)象,如按鈕、單項(xiàng)按鈕、組合框、列表等等;例如,您可以檢查在挑選單項(xiàng)按鈕之后它是否處于激活狀態(tài),或者可以檢查編輯字段的值;標(biāo)準(zhǔn)檢查點(diǎn)在全部加載項(xiàng)環(huán)境中都受到支持;“圖像檢查點(diǎn) ”檢查應(yīng)用程序或網(wǎng)頁中的圖像的值;例如, 您可以檢查所選圖像的源文件是否正確;留意 :可以通過在圖像對(duì)象上插入標(biāo)準(zhǔn)檢查點(diǎn)來創(chuàng)建圖像檢查點(diǎn);圖像檢查點(diǎn)在web 環(huán)境中受到支持;“位圖檢查點(diǎn) ”檢查位圖格式的網(wǎng)頁或應(yīng)用程序區(qū)域;例如,假設(shè)您有一個(gè)網(wǎng)站,可以顯示用戶指定的城市的地圖
21、;該地圖具有用于縮放的掌握鍵;在單擊放大地圖的掌握鍵后,您可以錄制所顯示的新地圖;使用位圖檢查點(diǎn),您可以檢查該地圖是否正確放大;位圖檢查點(diǎn)在全部加載項(xiàng)環(huán)境中都受到支持;“表檢查點(diǎn) ”檢查表內(nèi)部的信息;例如,假設(shè)您的應(yīng)用程序或網(wǎng)站包含一個(gè)表,該表列出了從紐約到舊金山的全部可用航班;您可以添加一個(gè)表檢查點(diǎn),以檢查該表中的第一個(gè)航班的時(shí)間是否正確;留意 :可以通過在表對(duì)象中插入標(biāo)準(zhǔn)檢查點(diǎn)來創(chuàng)建表檢查點(diǎn);表檢查點(diǎn)在web 和 activex環(huán)境中受到支持;表檢查點(diǎn)仍在很多外部加載項(xiàng)環(huán)境中受到支持;“文本檢查點(diǎn) ”檢查文本字符串是否顯示在應(yīng)用程序或網(wǎng)頁的適當(dāng)位置中;例如, 假設(shè)您的應(yīng)用程序或網(wǎng)頁顯示句子
22、:“從紐約到舊金山的航班 ”;您可以創(chuàng)建一個(gè)文本檢查點(diǎn), 檢查詞語 “紐約 ”是否顯示在 “從”與 “到舊金山的航班 ”之間; 文本檢查點(diǎn)在全部加載項(xiàng)環(huán)境中受到支持(請(qǐng)參閱下面的“受支持的檢查點(diǎn) ”);“文本區(qū)域檢查點(diǎn) ”檢查文本字符串是否依據(jù)指定的條件顯示在windowsapplications中所定義的區(qū)域內(nèi);例如,假設(shè)您的visual basic應(yīng)用程序有一個(gè)按鈕,顯示“查看文檔< 號(hào)碼>”,其中 < 號(hào)碼> 會(huì)被輸入到應(yīng)用程序中其他位置的窗體的四位數(shù)字代碼替換;您可以創(chuàng)建一個(gè)文本區(qū)域檢查點(diǎn),以確認(rèn)在該按鈕上顯示的號(hào)碼與在窗體中輸入的 號(hào)碼相同;文本區(qū)域檢查點(diǎn)在標(biāo)
23、準(zhǔn)windows 、visual basic和 activex加載項(xiàng)環(huán)境中受到支持;文本區(qū)域檢查點(diǎn)仍在一些外部加載項(xiàng)環(huán)境中受到支持;“可拜訪性檢查點(diǎn) ”確定可能不符合萬維網(wǎng)聯(lián)盟w3c web內(nèi)容可拜訪性規(guī)章的網(wǎng)站 區(qū)域;例如,w3c web內(nèi)容可拜訪性規(guī)章的規(guī)章1.1 要求您為每個(gè)非文本元素供應(yīng)等效文本;您可以添加“alt 屬”性檢查,檢查依據(jù)該規(guī)章要求具有“alt 屬”性的對(duì)象是否的確具有這樣的標(biāo)記;可拜訪性檢查點(diǎn)在web 環(huán)境中受到支持;“頁面檢查點(diǎn) ”檢查網(wǎng)頁的特性; 例如,您可以檢查加載網(wǎng)頁所需的時(shí)間,或者檢查網(wǎng)頁是否包含損壞的鏈接;留意 :可以通過在頁面對(duì)象上插入標(biāo)準(zhǔn)檢查點(diǎn)來創(chuàng)建頁面
24、檢查點(diǎn);頁面檢查點(diǎn)在web 環(huán)境中受到支持;“數(shù)據(jù)庫檢查點(diǎn) ”檢查由您的應(yīng)用程序拜訪的數(shù)據(jù)庫的內(nèi)容;例如, 您可以使用數(shù)據(jù)庫檢查點(diǎn)來檢查網(wǎng)站上包含航班信息的數(shù)據(jù)庫的內(nèi)容;數(shù)據(jù)庫檢查點(diǎn)在全部環(huán)境中都受支持(請(qǐng)參閱下面的 “受支持的檢查點(diǎn) ”);“ xml 檢查點(diǎn) ”檢查 xml文件中的xml文檔的數(shù)據(jù)內(nèi)容,或檢查網(wǎng)頁和幀中的xml文檔的數(shù)據(jù)內(nèi)容; 有關(guān) xml檢查點(diǎn)的具體信息, 請(qǐng)參閱第 11 章“檢查 xml” ;xml檢查點(diǎn)(網(wǎng)頁 / 幀)在 web 環(huán)境中受到支持;xml檢查點(diǎn)(文件)在全部環(huán) 境中受到支持(請(qǐng)參閱下面的“受支持的檢查點(diǎn) ”);6. 受支持的檢查點(diǎn)下表顯示了在每個(gè)環(huán)境(默認(rèn)
25、情形下由quicktest professional安裝支持)中受支持的檢查點(diǎn)類型;s - 支持ns - 不支持na -不適用7.規(guī)范例程腳本的生成方式就兩種,一種是自寫腳本,一種是錄制生成;常常聽見有人說,這兩種 方式中首選錄制生成腳本, 由于它簡(jiǎn)潔且智能化; 但我個(gè)人總覺得手寫腳本要好一些,由于:可讀性好, 流程清楚, 檢查點(diǎn)截取含義明確; 業(yè)務(wù)級(jí)的代碼讀起來總比協(xié)議級(jí)的代碼更易讓人懂得, 也更簡(jiǎn)潔保護(hù), 必要時(shí)可建立一個(gè)腳本庫;而錄制生成的代碼大多沒有保護(hù)的價(jià)值,現(xiàn)炒現(xiàn)賣;手寫程序相比錄制腳本更能增加測(cè)試人員的技術(shù)含量;開發(fā)和測(cè)試才能雙重提高,何樂而不為呢? qtp 供應(yīng)了 java u
26、ser,vb user,等語言類型的腳本,就是給我們開發(fā)腳本用的,而不是錄制用的;腳本不管錄制也好,仍是手寫也好, 挑選的時(shí)候應(yīng)當(dāng)以腳本模擬程序真實(shí)有效為準(zhǔn),結(jié)合項(xiàng)目進(jìn)度, 開發(fā)難易程度等因素考慮;而腳本的開發(fā)也需要符合一種規(guī)范,也可以說是一種習(xí)慣, 由于腳本不只是開發(fā)者一個(gè)人看,測(cè)試執(zhí)行人員也需要看, 這就要求可讀性和可保護(hù)性提高;故而開發(fā)時(shí)應(yīng)當(dāng)考慮這層因素,規(guī)范一下;下面這段某系統(tǒng)登陸的腳本,是一位前輩寫的,引用一下(借機(jī)崇拜一下):'*'*模板名稱:login'*開發(fā)人員:ly'*開發(fā)日期:2006-10-12'*最終修改日期 :2006-10-1
27、3'*輸入?yún)?shù):用戶名、密碼'*輸出參數(shù):勝利進(jìn)入'*腳本描述:通用的登陸設(shè)計(jì)'* dim hint_msgdim hintdim actualdialogpopupinvokeapplication "d:program filesmercury interactivequicktest professionalsamples flightappflight4a.exe"' 參數(shù)化 user 和 password 值dialog"login".winedit"agent name:".set
28、datatable"user", dtglobalsheet dialog"login".winedit"password:".set datatable"password", dtglobalsheetdialog"login".winbutton"ok".clickhint = datatable"hint" , dtglobalsheet' 判定彈出錯(cuò)誤提示框的正確性,假如輸入了正確密碼,而用戶名又大于4 個(gè)字符就不彈出錯(cuò)誤提示框,否就彈出錯(cuò)
29、誤提示框;if dialog"login".dialog"flight reservations".exist then actualdialogpopup = "true"elseend ifactualdialogpopup = "false"expecteddialogpopup = datatable"expecteddialogpopup", dtglobalsheet if actualdialogpopup = expecteddialogpopup thenreporter.re
30、portevent micpass, " 登陸 ", " 程序判定正確 ."' 假如彈出錯(cuò)誤提示框,通過對(duì)比hint if actualdialogpopup = "true" thenhint_msg = dialog"login".dialog"flightreservations".static"static".getroproperty"text" if hint = hint_msg thenreporter.reportevent mi
31、cpass , "登陸錯(cuò)誤提示 ", " 錯(cuò)誤提示信息正確."elsereporter.reportevent micfail , " 登陸錯(cuò)誤提示 ", " 錯(cuò)誤提示信息錯(cuò)誤 ."elseend ifdialog"login".dialog"flight reservations".winbutton"確定 ".click dialog"login".closewindow"flight reservation".
32、closeend ifelsereporter.reportevent micfail , " 登陸" , " 程序判定錯(cuò)誤 ." if actualdialogpopup = "true" then dialog"login".dialog"flight reservations".close dialog"login".closeelsewindow"flight reservation".close end ifend if8. 模板的應(yīng)用新建一個(gè)文
33、本, 輸入一些新建 action 常常包含的信息, 然后儲(chǔ)存為 actiontemplate.mst文件,并復(fù)制到 qtp/dat 目錄下;這樣每次新建action 都會(huì)包含固定的信息了;例如 :'-腳本說明 -'產(chǎn)品版本 :'測(cè)試員 :'編寫日期 :'測(cè)試功能 :'腳本類型 :'被測(cè)試對(duì)象初始狀態(tài) :'進(jìn)展程度 :''-腳本內(nèi)容 -9. 方式與級(jí)別analog recording模擬錄制 將“模擬錄制 ”用于您要在其中錄制鼠標(biāo)的實(shí)際移動(dòng)的應(yīng)用程序;這些可能包括繪制鼠標(biāo)簽名或者使用通過拖動(dòng)鼠標(biāo)創(chuàng)建圖像的繪圖應(yīng)用程序
34、;您可以用 “模擬錄制 ”模式相對(duì)于屏幕或特定窗口進(jìn)行錄制;相對(duì)于指定窗口錄制- 假如對(duì)其執(zhí)行操作的對(duì)象位于一個(gè)窗口內(nèi)部而且該窗口在模擬錄制會(huì)話期間沒有移動(dòng);這可以確保在運(yùn)行會(huì)話過程中,quicktest 將精確地標(biāo)識(shí)在其上執(zhí)行模擬步驟的窗口位置,即使當(dāng)您運(yùn)行模擬步驟時(shí)窗口位于不同的位置;quicktest 不會(huì)錄制在指定窗口外部執(zhí)行的任何單擊或鼠標(biāo)移動(dòng);當(dāng)使用這種模式時(shí),quicktest 不會(huì)捕獲任何 active screen圖像;相對(duì)于屏幕錄制- 假如在其上錄制模擬步驟的窗口在錄制過程中移動(dòng),或者您所執(zhí)行的操作是針對(duì)位于多個(gè)窗口內(nèi)的對(duì)象;這可能包括將對(duì)象從一個(gè)窗口拖放到另一個(gè)窗口中;當(dāng)
35、使用這種模式時(shí), quicktest將捕獲您在其中進(jìn)行錄制的窗口的最終狀態(tài)的active screen圖像;使用 “模擬錄制 ”錄制的步驟被儲(chǔ)存在單獨(dú)的數(shù)據(jù)文件中; 該文件與在其中錄制模擬步驟的操作或組件一起儲(chǔ)備;當(dāng)以 “模擬錄制 ”模式進(jìn)行錄制時(shí), quicktest 將向測(cè)試或組件添加一個(gè)調(diào)用所錄制的模擬文件的 “runanalog”語句;相應(yīng)的 active screen 將顯示在模擬錄制會(huì)話期間執(zhí)行的最終一個(gè)模擬步驟的結(jié)果;low-level recording 低級(jí)錄制 使用 “低級(jí)錄制 ”在不受 quicktest 支持的環(huán)境或?qū)ο笊线M(jìn)行錄制;當(dāng)您需要在應(yīng)用程序屏幕上錄制操作的精確
36、位置時(shí),請(qǐng)使用“低級(jí)錄制 ”;當(dāng)以正常模式錄制時(shí),quicktest 將在對(duì)象上執(zhí)行步驟, 即使該對(duì)象已經(jīng)移動(dòng)到屏幕上的新位置;假如對(duì)象的位置對(duì)于您的測(cè)試或 組件特別重要, 請(qǐng)切換到 “低級(jí)錄制 ”以使 quicktest 能夠依據(jù)屏幕上的x 坐標(biāo)和 y 坐標(biāo)錄制該對(duì)象;這樣,該步驟只有在對(duì)象位于正確的位置時(shí)才能通過;當(dāng)使用 “低級(jí)錄制 ”時(shí), quicktest 將全部父類對(duì)象錄制為windows測(cè)試對(duì)象,將全部其他對(duì)象錄制為winobject測(cè)試對(duì)象;它們?cè)赼ctive screen中顯示為標(biāo)準(zhǔn)windows對(duì)象; “低級(jí)錄制 ”對(duì)每個(gè)測(cè)試對(duì)象支持以下方法:winobject測(cè)試對(duì)象 -
37、click 、dblclick 、drag 、drop 、 typewindow測(cè)試對(duì)象 - click 、dblclick 、 drag、drop 、 type、activate 、minimize 、 restore、maximize以“低級(jí)錄制 ”模式錄制的每個(gè)步驟都顯示在關(guān)鍵字視圖和專家視圖中;( “模擬錄制 ”僅錄制關(guān)鍵字視圖中那個(gè)調(diào)用外部模擬數(shù)據(jù)文件的步驟;)模擬錄制和低級(jí)錄制的規(guī)章模擬錄制和低級(jí)錄制產(chǎn)生的腳本無法插入檢查點(diǎn),而且應(yīng)用程序界面稍有變動(dòng)就腳本無法正常運(yùn)行,所以非萬不得已(qtp 正常支持的 b/s 結(jié)構(gòu)以外的情形)應(yīng)當(dāng)防止這兩種錄制方式; 有時(shí)候由于無法正常錄制或者無
38、法正常運(yùn)行,初學(xué)者就可能考慮使用這兩種方式錄制,事實(shí)上,只要是c/s(其實(shí)部分結(jié)構(gòu)簡(jiǎn)潔一點(diǎn)的b/s)結(jié)構(gòu),基本上都能夠防止所遇到的這些問題,具體方法,參見其次部分;當(dāng)挑選 “模擬錄制 ”或“低級(jí)錄制 ”時(shí),請(qǐng)考慮以下規(guī)章:只有當(dāng) quicktest的正常錄制模式不能精確錄制您的操作時(shí),才應(yīng)使用“模擬錄制 ”或“低級(jí)錄制 ”;“模擬錄制 ”和“低級(jí)錄制 ”要求比正常錄制模式更多的磁盤空間;對(duì)于特定的步驟,您可以在錄制會(huì)話期間切換到“模擬錄制 ”或“低級(jí)錄制 ”;在以 “模擬錄制 ”或“低級(jí)錄制 ”模式錄制了必要的步驟之后,就可以返回到正常錄制模式來完成錄制會(huì)話的其余部分;其次部分 對(duì)象庫和對(duì)象屬
39、性10. 對(duì)象識(shí)別和智能標(biāo)識(shí)對(duì)象的屬性識(shí)別主要來自qtp 識(shí)別的網(wǎng)頁(或者其它)本身的控件設(shè)計(jì),因此對(duì)象的屬性是敏捷多變的,有時(shí)候我們需要添加一個(gè)或多個(gè)屬性,有時(shí)需要?jiǎng)h除一個(gè)或多個(gè)屬性,具體的情形要依據(jù)當(dāng)時(shí)的情形而定;錄制或編寫測(cè)試腳本的時(shí)候要留意多觀看:哪些屬性能夠唯獨(dú)表示一個(gè)對(duì)象,哪些屬性值是隨機(jī)變化的,哪些屬性需要多次運(yùn)行時(shí)都能夠匹配;對(duì)于對(duì)象屬性是變化的,可以參數(shù)化/或者用正就表達(dá)式(參見第一部分基礎(chǔ)學(xué)問),即在選定的對(duì)象的屬性值里面采納正就表達(dá)式(具體書寫規(guī)章參見 “正就表達(dá)式 ”一節(jié)) 或者使用參數(shù)表(不是很敏捷)來對(duì)其進(jìn)行賦值;這樣qtp 運(yùn)行時(shí)會(huì)自動(dòng)查找對(duì)象進(jìn)行匹配,比較便利,
40、不需要反復(fù)添加對(duì)象;報(bào)匹配多個(gè)對(duì)象錯(cuò)誤,可以spy如下圖 查看對(duì)象,添加一個(gè)該對(duì)象另一個(gè)唯獨(dú)標(biāo)識(shí)屬性,而這些能夠唯獨(dú)標(biāo)識(shí)的屬性需要自己認(rèn)真觀看來查找,通常這些唯獨(dú)標(biāo)識(shí)對(duì)象的屬性往往是可變化的,假如需要獵取對(duì)象屬性值,這種方法事實(shí)上并不是很明智;例如web 復(fù)選框類 webcheckbox 的的對(duì)象屬性基本上都是一樣的,錄制時(shí)的區(qū)分可能只是自動(dòng)在他的運(yùn)行時(shí)屬性里添加index 或 location 使錄制的對(duì)象變?yōu)開2、_3 等等,否就運(yùn)行時(shí)就會(huì)提示無法唯獨(dú)表示對(duì)象,而qtp 本身的智能表示機(jī)制就可以解決這個(gè)問題, 不需要手工添加屬性來區(qū)分;上圖中顯示能夠?yàn)橐粎^(qū)分于其它幾行的對(duì)象是憑證號(hào)對(duì)應(yīng)的列
41、,其對(duì)象屬性值1117 是不同與其它對(duì)象的唯獨(dú)標(biāo)識(shí), 然而在對(duì)象捕獲的時(shí)候假如將此對(duì)象屬性值也包含在內(nèi)的話,下次運(yùn)行時(shí)假如第一行1117 號(hào)票據(jù)已經(jīng)不存在的話,qtp 就會(huì)報(bào)“找不到對(duì)象” 錯(cuò)誤;所以對(duì)于多個(gè)完全相同的對(duì)象,可以采納添加index ,location , createtime 等特殊屬性的 “定位法 ”來識(shí)別對(duì)象;例如:index: 依據(jù)程序源碼,繪制對(duì)象的先后標(biāo)識(shí)對(duì)象,所以與其它相同對(duì)象是相互依靠,當(dāng)其它對(duì)象發(fā)生變化后,原先的全部對(duì)象index 屬性要發(fā)生變化,開頭是0;東亞銀行前端交易頁面某些交易(例如rb7h , rb1904 等)進(jìn)行時(shí)需要獵取webelement 的變
42、化的屬性值 “ innertext,為”了能夠?qū)⒔灰走M(jìn)行下去,只能使用方法三里的方法:刪除屬性“innertext ,”然后通過調(diào)整 index 的值來定位所需要獵取的屬性的屬性值所在的位置;location :依據(jù)對(duì)象的位置進(jìn)行確定,從上到下,從左到右createtime:依據(jù)對(duì)象被瀏覽器打開的先后標(biāo)識(shí)對(duì)象在對(duì)象庫里添加一個(gè)自動(dòng)含有index 標(biāo)識(shí)屬性的對(duì)象, 然后每次通過 settoproperty 來改變 index 值,對(duì)對(duì)象進(jìn)行數(shù)據(jù)驅(qū)動(dòng),使其操作另一個(gè)對(duì)象,但腳本始終操作原先index 屬性值的對(duì)象;這時(shí)考慮把該對(duì)象刪除掉,重新添加一個(gè)不自動(dòng)含有index 標(biāo)識(shí)屬性的該類對(duì)象,然后,
43、手工添加index 標(biāo)識(shí)屬性,后來腳本能正常工作了,可見兩次的對(duì) 象屬性完全一樣,但形成方式不一樣,導(dǎo)致的結(jié)果往往也不一樣;而 qtp 自身為明白決相像問題在windows 控件里都會(huì)添加 window id 這個(gè)屬性,它是個(gè)隨機(jī)變化的屬性, 每次都會(huì)隨機(jī)產(chǎn)生一個(gè)與上次不同的值,所以這樣反而無法在下一次運(yùn)行時(shí)對(duì)對(duì)象進(jìn)行匹配,總是提示找不到對(duì)象,有時(shí)可以刪除對(duì)象的變化的屬性來解決識(shí)別問題,再進(jìn)行錄制腳本的時(shí)候可以事先在工具對(duì)象標(biāo)識(shí)(如圖)里面通過配置各個(gè)類的屬性操作來刪除這些可變屬性,重新進(jìn)行錄制或添加對(duì)象就可以了;挑選相應(yīng)的插件類型(如web、activex 等),然后對(duì)相應(yīng)的類(如webel
44、ement)分別在強(qiáng)制屬性和幫助屬性里點(diǎn)擊“添加 /刪除” 按鈕, 配置你所需要的能夠?yàn)橐粯?biāo)示你所需要的對(duì)象的屬性;如需啟用智能標(biāo)識(shí),就選中“啟用智能表識(shí)”,然后點(diǎn)擊“配置”按鈕(如圖):同樣在“基本挑選屬性”和“可挑選屬性”里面通過點(diǎn)擊“添加/刪除”按鈕來挑選進(jìn)行對(duì)象智能標(biāo)識(shí)的屬性;另外換一種思維方式,實(shí)行等效的方法; 比如用鍵盤代替鼠標(biāo)或用操作系統(tǒng)本身特性去解決問題; 這種方法可忽視對(duì)象庫中的對(duì)象,不需要識(shí)別,前提是除去判定語句;但是這種寫法 使用鍵盤模擬函數(shù)只能夠處理彈出對(duì)話框或msgbox 中只有一個(gè)按鈕的情況,或者兩種但是默認(rèn)停留在需要點(diǎn)擊的地方;相關(guān)信息參見下文“鍵盤模擬” ;11
45、. 萬能鍵盤模擬函數(shù)extern.declare micv oid, "keybd_event" , "user32.dll" , "keybd_event" , micbyte , micbyte ,micdword , miculongextern.keybd_event 32 (參數(shù)), 0, 0, 0由于 space 鍵代碼為 32,所以上述代碼模擬了點(diǎn)擊space 鍵操作,其它鍵盤操作代替可由下表查得:更多的鍵盤代碼請(qǐng)參見:虛擬鍵盤碼一覽表12. 鍵盤模擬函數(shù): wscript.shell 的應(yīng)用set wshshell =
46、createobject"wscript.shell"wshshell.sendkeys "enter"'模擬鍵盤進(jìn)行操作鍵盤鍵 -函數(shù)一覽表keyargumentbackspacebackspace, bs , or bksp breakbreakcaps lockcapslock del or deletedelete or del down arrowdownendendenterenter or esceschelphelphomehomeins or insertinsert or insleft arrowleftnum locknu
47、mlockpage downpgdnpage uppgupprint screenprtscright arrowrightscroll lockscrolllocktabtabup arrowupf1f1f2f2f3f3f4f4f5f5f6f6f7f7f8f8f9f9f10f10f11f11f12f1213. 等待時(shí)間的藝術(shù)某個(gè)對(duì)象是否顯現(xiàn)不明確或者應(yīng)用系統(tǒng)響應(yīng)時(shí)間不確定的時(shí)候,我們往往實(shí)行wait 的方法, 而且這個(gè)時(shí)間是不確定, 所以一般初學(xué)者會(huì)考慮使用最大時(shí)間值(系統(tǒng)最慢的情形) ;其實(shí)完全沒有必要等這么長(zhǎng)時(shí)間,而且假如系統(tǒng)忽快忽慢怎么辦?總不能每次“跑腳本” 之前都去修改一次吧, 這
48、樣腳本少仍可以, 腳本多(一個(gè)或多個(gè)測(cè)試集往往牽涉到幾十上百個(gè)測(cè)試腳本)了呢?這樣的話,腳本保護(hù)的代價(jià)太昂貴了!這種情形下可以考慮寫一些循環(huán)語句代替wait 語句,這些語句寫得合理的話,會(huì)在系統(tǒng)響應(yīng)的第一時(shí)間做下一步操作,而長(zhǎng)時(shí)間無響應(yīng)就可以通過跳出條件來終止運(yùn)行,報(bào)告系統(tǒng)連接超時(shí)就可以了; 由于這種速度的系統(tǒng)版本客戶是不會(huì)要的,一般情形下這種測(cè)試是沒 有意義的;下面是我曾經(jīng)使用的一些例子:系統(tǒng)必需作出響應(yīng)的情形,無須跳出,只待系統(tǒng)正常,否就手動(dòng)干預(yù):doifbrowser"teller".page"teller".frame"content&
49、quot;.weblist"acct_status".getroproperty"value"= "" then elseexit do end ifloop使用 waitproperty 函數(shù),該函數(shù)的作用基本上和if exist( second) end if 比較類似;但是它的判定結(jié)果有true 和 false 兩種,在 if 的判定語句的時(shí)候很便利,由于條件成立可以執(zhí)行下一步,反之假如需要不成立而去執(zhí)行下一步,他的作用就不是if exist( second) end if 所能比的了;waitproperty"vis
50、ible" ,true, 10000第一個(gè)引號(hào)內(nèi)參數(shù)是對(duì)象的屬性名稱,其次個(gè)是該屬性的值,第三個(gè)就是等待的時(shí)間, 單位是毫秒,具體的應(yīng)用如:if browser"teller".page"teller".webelement"手續(xù)費(fèi)打印完畢!".waitproperty"innertext"," 手續(xù)費(fèi)打印完畢!", 60000 = false then browser"teller".page"teller".image"toolba
51、r_refresh_0".clickelseif browser"teller".dialog"microsoft internet explorer".exist10then browser"teller".dialog"microsoft internet explorer".winbutton"確定 ".click browser"teller".page"teller".image"toolbar_refresh_0"
52、.click reporter.reportevent micfail , "發(fā)出托收票據(jù) ", "交易失敗 "exitaction1end if定義彈出框存在性狀態(tài),使用循環(huán)語句判定dim blndone ,counter blndone=false counter=1while blndonewait 1 blndone=window"iexplore".winobject"ok".exist counter=counter+1if counter=10 thenblndone=true end ifwend循
53、環(huán)判定,跳出條件是i=10 dim ii=1while window"iexplore".winobject"ok".exist and i<10 window"iexplore".winobject"ok".clicki=i+1 wend14. 驗(yàn)證彈出錯(cuò)誤類型if browser"teller".dialog"explorer".exist1 thenem=browser"teller ".dialog"explorer ".
54、static"密碼錯(cuò)誤 .".getroproperty"text"if em<>datatable.value"error_info"then msgboxemreporter.reportevent micfail," 系統(tǒng)登陸 "," 密碼錯(cuò)誤 "end if browser"teller".dialog"explorer".close或者 browser"teller".dialog"explorer&qu
55、ot;.winbutton確定 .clickend if一:對(duì)于 dialog 中,雖然提示信息對(duì)象名稱是" 用戶密碼錯(cuò)誤 ",但假如信息對(duì)象名稱是“該用戶不存在 ”,不用更換會(huì)自動(dòng)識(shí)別,我想主要是錄制第一遍時(shí),“用戶密碼錯(cuò)誤 ”只是讓運(yùn)行時(shí)能找到這個(gè)掌握,而不管它是什么內(nèi)容,由于在對(duì)象倉庫中,text 不是打算該對(duì)象的屬性;事實(shí)上,可以經(jīng)過對(duì)象屬性配置,在static 對(duì)象的強(qiáng)制屬性中添加text 屬性,然后上面的語句就可以這樣寫了:if browser"teller".dialog"explorer". static"密碼錯(cuò)誤 .".exist1 then msgbox 密碼錯(cuò)誤 .reporter.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度智能制造企業(yè)生產(chǎn)管理人才招聘與智能制造協(xié)議
- 二零二五年度立體停車設(shè)備研發(fā)與委托運(yùn)營管理合同
- 二零二五年度航空航天就業(yè)勞動(dòng)合同
- 二零二五年度叉車安全風(fēng)險(xiǎn)評(píng)估與整改合同
- 圍城深度解讀與評(píng)析征文
- 新產(chǎn)品市場(chǎng)推廣策略及執(zhí)行方案
- 工業(yè)自動(dòng)化控制系統(tǒng)設(shè)計(jì)與維護(hù)服務(wù)協(xié)議
- 《天文觀測(cè)與天體物理學(xué)習(xí)計(jì)劃》
- 行業(yè)市場(chǎng)深度調(diào)研分析
- 互聯(lián)網(wǎng)+三農(nóng)營銷模式創(chuàng)新案例集
- H3C-CAS虛擬化平臺(tái)詳細(xì)介紹
- 藥房品種類別及數(shù)量清單
- 玻璃工藝學(xué)第4章 玻璃的性質(zhì)
- 四川省藥械集中采購及醫(yī)藥價(jià)格監(jiān)測(cè)平臺(tái)操作指引
- 機(jī)關(guān)檔案管理工作培訓(xùn)PPT課件
- 大學(xué)生安全教育課件(ppt共41張)
- 初中物理人教版八年級(jí)下冊(cè) 第1節(jié)牛頓第一定律 課件
- 網(wǎng)站培訓(xùn)內(nèi)容trswcm65表單選件用戶手冊(cè)
- 監(jiān)理大綱(范本)
- 空調(diào)系統(tǒng)維保記錄表格模板
- 打印版-圓與二次函數(shù)綜合題精練(帶答案)
評(píng)論
0/150
提交評(píng)論