QTP工作原理的學(xué)習(xí)心得.docx_第1頁
QTP工作原理的學(xué)習(xí)心得.docx_第2頁
QTP工作原理的學(xué)習(xí)心得.docx_第3頁
QTP工作原理的學(xué)習(xí)心得.docx_第4頁
QTP工作原理的學(xué)習(xí)心得.docx_第5頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

QTP工作原理的學(xué)習(xí)心得發(fā)表時間:2009-10-10 23:59:11作者:未知來源:網(wǎng)絡(luò)轉(zhuǎn)載閱讀次數(shù):79 一直認(rèn)為學(xué)習(xí)一個工具一定要學(xué)會它的本質(zhì)和原理才能真正的有所收獲,不然工具換掉或者工具被淘汰就會很尷尬,又要從頭學(xué)習(xí)。當(dāng)你學(xué)會了本質(zhì),其他的工具學(xué)習(xí)起來也會很快的,并且從開發(fā)的角度去思考問題,更容易學(xué)習(xí)好一個工具。最近學(xué)習(xí)了幾天的QTP,對QTP的原理有一個簡單的認(rèn)識,和大家分享下。 個人認(rèn)為QTP的腳本運(yùn)行其實(shí)就是一組對象有組織的執(zhí)行自己的方法,最終完成一個流程的過程。當(dāng)打開一個web時,想要腳本能夠模擬人來操作整個流程,那多就要求這個腳本能夠識別人的每一個操作,而人的操作實(shí)際上是對web頁面上控件的操作,所以只要QTP的腳本能夠識別人操作過的控件就可以模擬人的操作流程,而web頁面上的控件都是QTP腳本中的對象,也就是說只有QTP腳本中的對象能夠被唯一的識別出來,就可以模擬人的整個操作流程。而QTP又是如何識別對象的呢?對象識別原理就是獲取hwnd,然后判斷ui屬性,逐個判斷,然后逐層遞歸,最后獲取每個對象的所有層面的屬性,跟對象庫里的屬性進(jìn)行比較,匹配則應(yīng)用。也就是說在你添加一個對象到對象倉庫中的時候,該對象的主要屬性都被保存到對象庫中了,回放QTP腳本的時候?qū)嶋H上就是在被測試軟件中尋找指定的對象,然后按照這些對象指定的方法去完成一個動作,而這些方法就是把windows win32中、web上的一些activex控件中的方法和微軟控件對外的接口中的一些方法進(jìn)行封裝,成為qtp自己的方法。對于任何一個add-in都是先找到人家的對外接口,然后拿過來封裝,需要的時候去調(diào)用接口事件,也就成為了QTP的動作。所以QTP腳本回放實(shí)際上就是要做兩個步驟:1)識別出要操作的對象控件。2)識別出對象控件后來完成該對象控件指定的方法。在QTP識別對象的時候是按照對象的唯一屬性來區(qū)分的,有時候QTP對象倉庫保存的對象屬性是不完全的,導(dǎo)致兩個很相似的對象不能夠識別出來,這樣腳本就會報(bào)錯,或者說對象倉庫中對象的屬性每次都是變化的,那么每次回放腳本也會和對象倉庫中保存的不一致導(dǎo)致腳本報(bào)錯。這里介紹一個很好用的web對象的屬性object屬性。QTP支持直接訪問DOM,可以通過DOM來訪問HTML標(biāo)簽。在QTP中,訪問DOM是通過使用page測試對象的object屬性來進(jìn)一步訪問的,這樣就可以訪問到很底層的對象屬性,可以用底層的對象屬性來唯一區(qū)分web頁面上的對象控件,這樣就能夠解決一些關(guān)于對象識別的錯誤。用page頁中的Link對象舉例說明object屬性:Browser(網(wǎng)易).Page(網(wǎng)易).Link(VIP收費(fèi)郵箱).CheckProperty URL,/其中使用了CheckProperty方法來對比Link對象的URL屬性是否等于指定的地址(/),也可以用Link對象的object屬性中的herf屬性來對比,代碼如下: herf = Browser(網(wǎng)易).Page(網(wǎng)易).Link(VIP收費(fèi)郵箱).Object.hrefIf not herf = / Thenreporter.ReportEvent micFail,/, herfEnd If2009年1月,HP發(fā)布了QTP 10。新版本的QTP在腳本開發(fā)方面增強(qiáng)不少,越來越像一款名副其實(shí)的自動化測試開發(fā)工具了。另外,與QC 10的緊密結(jié)合,不僅延續(xù)和增強(qiáng)了HP的BPT戰(zhàn)略意圖,更讓自動化腳本的版本控制得以真正實(shí)現(xiàn)。現(xiàn)在,就讓我們來展開一次QTP新特性之旅吧!系統(tǒng)需求和環(huán)境支持在系統(tǒng)需求方面,QTP 10所要求的硬件環(huán)境并沒有太大的改變,最低512M的內(nèi)存、PIII以上CPU即可。但是如果使用“Save movie to results”功能的話,則推薦使用1G內(nèi)存以上,因?yàn)樵摴δ軙谶\(yùn)行過程中錄制界面視頻,將占用比較多的內(nèi)存資源。新版本的QTP添加對Windows Server 2008操作系統(tǒng)的支持。瀏覽器方面,則添加對Firefox 3.0.x和IE8.0 beta 2的支持。另外,對Delphi、Java、.NET的支持都有不同程度的增強(qiáng)。增強(qiáng)的QC整合能力對于升級安裝,只能從QTP9.5升級到QTP10,9.5之前的版本需要先卸載再安裝。安裝過程與QTP9.5類似,在此就不再贅述了。安裝完畢后,可以從“Help-Product Feature Movies”菜單中選取視頻,觀看對QTP10的新特性的演示。其中一項(xiàng)介紹的就是QTP10與QC10的整合。在QTP10中,提出了一個新概念“QuickTest assets”:QuickTest assets include tests, components, application areas, and the resources associated with them, such as shared object repositories, function libraries, recovery scenarios, and external data tables.QTP通過與QC整合,把測試腳本所涉及的方方面面的資源統(tǒng)一作為“QuickTest assets”管理起來。在QC10中引入了一個新的模塊“Test Resources”。在之前的版本,QTP的測試腳本和相關(guān)資源文件都是作為附件存儲在QC中,而QC10中的“Test Resources”這個模塊就可用于獨(dú)立管理QTP的各項(xiàng)資源以及它們之間的依賴關(guān)系。版本控制和基線需要注意的是,基線(Baselines)功能只有在QC10的Enterprise和Premier版本中才有,在Starter版本中不支持。在舊版本的QTP和QC中,只支持有限的版本控制功能,并且需要安裝版本控制的插件,通過第三方的版本控制工具來執(zhí)行版本控制功能。而現(xiàn)在,版本控制功能被完全整合到QC中。當(dāng)QTP通過版本控制連接到QC項(xiàng)目中時,你可以把QTP中的任何“QuickTest asset”簽入到版本控制數(shù)據(jù)庫中,相反也可以簽出項(xiàng)目中的任何“QuickTest asset”。類似于版本控制工具中提供的版本比較工具,新版本的整合環(huán)境中提供了“Asset Comparison Tool”,用于比較不同版本的QTP測試腳本、各項(xiàng)“QuickTest Asset”之間的差異??梢浦残訯TP的測試和相關(guān)資源文件通常會被存儲在服務(wù)器或QC上,然而,很多時候,我們需要在離線的情況下打開和運(yùn)行QTP測試腳本,或者出差時把相關(guān)測試腳本打包拷走。現(xiàn)在,新版本的QTP允許你通過“File-Save Test with Resources”的方式創(chuàng)建一個獨(dú)立的測試腳本和相關(guān)資源的完整拷貝。這種方式保存的測試腳本會把測試腳本相關(guān)的資源文件、調(diào)用的action都一并保存到本地磁盤。本地系統(tǒng)監(jiān)視器在QTP10中引入了一個顯著的新功能“Local System Monitoring”??梢詮牟藛巍癋ile-Settings-Local System Monitor”訪問該功能?!癓ocal System Monitoring”功能讓你可以在測試運(yùn)行的過程中,監(jiān)視你的應(yīng)用程序所使用的本地機(jī)器的資源。你可以通過監(jiān)視各項(xiàng)系統(tǒng)計(jì)數(shù)器來觀察和了解你的應(yīng)用程序在單用戶運(yùn)行的情況下的資源使用情況。而且可以定義計(jì)數(shù)器的上限,如果計(jì)數(shù)器的采樣值超過了指定的上限,則測試結(jié)果會置為Fail。動態(tài)調(diào)用Action在以前版本,如果你插入一個外部的Action,那么那個Action就成為測試的一部分,每次打開這個測試都會加載那些Action。而在新版本的QTP中,提供“LoadAndRunAction”語句,可用于在測試腳本運(yùn)行時加載Action。這有什么好處呢?舉個例子,如果你使用了很多條件語句來調(diào)用外部的Action,而你又不想在每次打開測試時都加載那些Action進(jìn)來,因?yàn)椴⒉皇敲看芜\(yùn)行都需要這些Action,那么這個時候“LoadAndRunAction”就很適用了。通過“LoadAndRunAction”調(diào)用的Action只有在測試運(yùn)行時才被加載和執(zhí)行,例如下面的例子在Test1中加載Action1并執(zhí)行一次迭代:CustomerType = DataTable.Value(Customer_Type,dtGlobalSheet)NumOfOrder = DataTable.Value(Number_of_items,dtGlobalSheet)While NumOfOrder 0NumOfOrder = NumOfOrder - 1If CustomerType = Gold or CustomerType = Silver or CustomerType = Bronze ThenLoadAndRunAction c:QTPTestOrderActions, CustomerType&OrderElse Error valueWrongDataValue CustomerTypeEnd IfWend下面的例子同樣是動態(tài)加載Action1并執(zhí)行一次迭代,不同的是通過環(huán)境變量來存儲Action1的路徑:CustomerType = DataTable.Value(Customer_Type,dtGlobalSheet)NumOfOrder = DataTable.Value(Number_of_items,dtGlobalSheet)TestPath=c:QTPTestWhile NumOfOrder 0NumOfOrder = NumOfOrder - 1If CustomerType = Gold ThenLoadAndRunAction Environment(default_path)&OrderActions, GoldOrder,oneiteration, NumOfOrderElseif CustomerType = Silver ThenLoadAndRunAction TestPath&OrderActions, SilverOrder, oneiteration, NumOfOrderElseif CustomerType = Normal ThenLoadAndRunAction TestPath&OrderActions, NormalOrder, oneiteration, NumOfOrderElse Error valueMsgbox WrongDataValue CustomerType End IfWend新的Reporter功能同樣有助于我們更靈活地編寫測試腳本的是Reporter對象的ReportEvent功能,新的ReportEvent語法定義如下:Reporter.ReportEvent EventStatus, ReportStepName, Details , ImageFilePath很明顯,添加了在測試報(bào)告中插入圖像的功能。例如下面的代碼使用ReportEvent來讓測試報(bào)告包含運(yùn)行過程中捕獲的圖片:Browser(Browser).Page(WebPage).Image(MyLogo).CaptureBitmap(MyLogo.bmp)Reporter.ReportEvent micDone, Display Logo, This is my logo, MyLogo.bmp而在之前的版本,要實(shí)現(xiàn)類似的功能,則需要自己動手編寫函數(shù),例如:Function CaptureBitmapAndSaveToLog( w_Snder, micStatus, titleMessage ) Dim dateTimeNow, fileNameStr, detailsStr 用時間作為截圖的文件名dateTimeNow = DotNetFactory.CreateInstance( System.DateTime ).Now.ToString( ddMMyyHHmmss ) fileNameStr = Reporter.ReportPath & & dateTimeNow & .png 調(diào)用CaptureBitmap方法進(jìn)行截圖If w_Snder.Exist Then w_Snder.CaptureBitmap fileNameStr, True Else Desktop.CaptureBitmap fileNameStr, True End If 插入到HTML代碼中detailsStr = < & 通過Reporter展現(xiàn)在測試報(bào)告中Reporter.ReportEvent micStatus, titleMessage, detailsStrEnd Function Register for WEBRegisterUserFunc Browser,CaptureBitmapAndSaveToLog,CaptureBitmapAndSaveToLogRegisterUserFunc Page, CaptureBitmapAndSaveToLog, CaptureBitmapAndSaveToLogRegisterUserFunc Frame, CaptureBitmapAndSaveToLog, CaptureBitmapAndSaveToLogRegisterUserFunc Dialog, CaptureBitmapAndSaveToLog, CaptureBitmapAndSaveToLog Register for Standard WindowRegisterUserFunc Window,CaptureBitmapAndSaveToLog,CaptureBitmapAndSaveToLog Regis

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論