第八章:QTP自動化測試框架_第1頁
第八章:QTP自動化測試框架_第2頁
第八章:QTP自動化測試框架_第3頁
第八章:QTP自動化測試框架_第4頁
第八章:QTP自動化測試框架_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 講師:孫老師 (北風(fēng)網(wǎng)版權(quán)所有) -QTP從零基礎(chǔ)到精通進階26/18/2021軟件測試框架介紹軟件測試框架介紹什么是框架framework ?v整個或部分系統(tǒng)的可重用設(shè)計,表現(xiàn)為一組抽象構(gòu)件以及構(gòu)件實例間交互的方法;v可被開發(fā)者定制的應(yīng)用骨架。前者是從應(yīng)用方面、而后者是從目的方面給出的定義。測試框架也是如此,測試框架出現(xiàn)的最終目的是花少量的資源來完成盡可能多的測試任務(wù),所以測試框架的建立以及框架的重用性方面是最值得測試人員深入探究的地方。 36/18/2021軟件測試框架介紹軟件測試框架介紹什么是測試框架? 測試框架是一組自動化測試的規(guī)范、測試腳本的基礎(chǔ)代碼,以及測試思想、慣例的集合。測試

2、框架的好處在于:v 減少冗余代碼、提高代碼生產(chǎn)率、提高代碼重用性和可維護性。提高開發(fā)速度,提升測試代碼的執(zhí)行效率;v 提高軟件代碼質(zhì)量,同時引入重構(gòu)概念,讓代碼更干凈和富有彈性;v 提升系統(tǒng)的可信賴度,作為回歸測試的一種實現(xiàn)方法支持修復(fù)后“再測試”,確保代碼的正確性。46/18/2021自動化測試框架介紹自動化測試框架介紹自動化測試框架一般可以分為上下兩個層次,上層是管理整個自動化測試的開發(fā),執(zhí)行以及維護,在比較龐大的項目中,它體現(xiàn)重要的作用,它可以管理整個自動測試,包括自動化測試用例執(zhí)行的次序、測試腳本的維護、以及集中管理測試用例、測試報告和測試任務(wù)等。下層主要是測試腳本的開發(fā),充分的使用相

3、關(guān)的測試工具,構(gòu)建測試驅(qū)動,并完成測試業(yè)務(wù)邏輯。56/18/2021測試驅(qū)動測試驅(qū)動_A測試驅(qū)動是一個自動化測試框架的核心,其決定整個自動化腳本設(shè)計。當(dāng)前比較流行的測試驅(qū)動有數(shù)據(jù)驅(qū)動和關(guān)鍵字驅(qū)動。v數(shù)據(jù)驅(qū)動測試驅(qū)動引擎從數(shù)據(jù)源獲取測試數(shù)據(jù),然后將數(shù)據(jù)以參數(shù)的形式傳遞給測試腳本,最后通過執(zhí)行測試腳本,驗證測試結(jié)果,并將測試結(jié)果輸出。一般數(shù)據(jù)源與測試結(jié)果存儲在數(shù)據(jù)庫、Excel文件、CSV文件等。數(shù)據(jù)驅(qū)動主要優(yōu)點是:測試腳本與測試數(shù)據(jù)的分離,當(dāng)應(yīng)用功能變更時,只需要修改該功能部分的腳本;執(zhí)行測試用例的人員不需要了解測試腳本的實現(xiàn),只關(guān)注測試數(shù)據(jù)表與測試報告表。而且測試腳本的執(zhí)行是離散的,即非線性的

4、,測試人員可以有選擇的執(zhí)行測試用例。66/18/2021測試驅(qū)動測試驅(qū)動_Bv關(guān)鍵字驅(qū)動關(guān)鍵字驅(qū)動的自動化測試框架是在數(shù)據(jù)驅(qū)動的基礎(chǔ)上進行改進,數(shù)據(jù)源里包含的不只是數(shù)據(jù),還有關(guān)鍵字,一個測試用例由一個或若干個關(guān)鍵字組成。每個關(guān)鍵字對應(yīng)個不同的業(yè)務(wù)邏輯,例如,登錄、注銷等。數(shù)據(jù)表通過關(guān)鍵字,查找映射表,執(zhí)行相關(guān)的腳本。驅(qū)動引擎是對數(shù)據(jù)表的數(shù)據(jù)進行分析,根據(jù)不同的測試數(shù)據(jù)或關(guān)鍵字調(diào)用相應(yīng)測試腳本。驅(qū)動引擎還需完成一些測試環(huán)境初始化、全局參數(shù)設(shè)置、測試用例是否執(zhí)行的判斷,以及測試報告的處理等76/18/2021測試腳本開發(fā)測試腳本開發(fā)_Av腳本劃分為了方便以后腳本的維護問題,必須對腳本進行有效的分層

5、,同時,提高了腳本的復(fù)用率。公共類庫 公共類庫包括所有模塊都可能用到的操作方法,其抽象了不同模塊同性,比如操作excel表的方法、讀寫測試報告、驅(qū)動引擎等。模塊特定類庫在模塊內(nèi)部將可以為該模塊共享使用的方法抽象出來,作為一個公共類。它可以是一個單的邏輯操作,也比較獨立。比如客戶端登錄操作、控制臺登錄操作、控制臺更新操作等。測試用例腳本測試用例腳在最上層,它根據(jù)測試點進行設(shè)計,面向具體的應(yīng)用。它可直接調(diào)用公共類庫或模塊特定類庫的方法,即調(diào)單個邏輯操作。它是單個或多個邏輯操作的集合,即一個測試用戶腳本。86/18/2021測試腳本開發(fā)測試腳本開發(fā)_Bv腳本規(guī)范測試腳本的開發(fā)也要遵循編程的規(guī)則與標(biāo)準

6、,應(yīng)該統(tǒng)一規(guī)劃,所有開發(fā)腳本的人員按照統(tǒng)一的規(guī)定進行編碼。除了編程本身規(guī)范,還考慮測試用例與庫函數(shù)名的命名。例如,項目M4.1客戶端登錄測試用例可命名為:TC_M4.1_client_login;讀取excel表的函數(shù)可命名為:read_excel。96/18/2021測試用例測試用例v 測試用例粒度測試用例的粒度決定了用例模型級的復(fù)雜度,也決定了每一個用例內(nèi)部的復(fù)雜度。應(yīng)該根據(jù)每個系統(tǒng)的具體情況來把握各個層次的復(fù)雜度,在盡可能保證整個用例模型的易理解性前提下決定用例的大小和數(shù)目。用例不能太大,這樣一旦出執(zhí)行測試用例出錯,不利于定位問題;但也不能太細化,太小則不方便執(zhí)行。v 測試用例與測試套件

7、一個大型的項目有許功能模塊,必然會產(chǎn)生大量的測試用例,怎樣才能有效的管理這些測試用例呢?這就需要創(chuàng)建測試套件,通過測試套件將測試某一個模塊或功能點的測試用例集合起來,方便運行與管理。例如,只驗證“用戶管理”模塊功能,則只需要執(zhí)行“用戶管理”模塊套件即可。106/18/2021選擇適合自動化測試的用例選擇適合自動化測試的用例通常適合自動化測試的用例有:v產(chǎn)品型項目產(chǎn)品型的項目,新版本是在舊版本的基礎(chǔ)上進行改進,功能變不大的項目,但項目的新老功能都必須重復(fù)的測試。v回歸測試回歸測試是自動化測試的強項,它能夠很好的驗證你是否引入了新的缺陷,老的缺陷是否修改過來了。在某種程度上可以把自動化測試工具叫做

8、回歸測試工具。v機械并頻繁的測試每次需要輸入相同、大量的一些數(shù)據(jù),并且在一個項目中運行的周期比較長。有一些交互性比較強,需要人工干預(yù)的操作,就不要指望通過自動化測試來完成了。例如,用戶使用U-Key登錄。116/18/2021軟件自動化框架的發(fā)展軟件自動化框架的發(fā)展 基于界面的軟件 自動化測試框架和工具的發(fā)展大致經(jīng)歷了三個階段 1.簡單的錄制回放:由工具錄制并記錄操作的過程和數(shù)據(jù)形成腳本,通過回放來重復(fù)人工操作的過程。在這種模式下數(shù)據(jù)和腳本混在一起,幾乎一個測試用例對應(yīng)一個腳本,維護成本很高。而且即使界面的簡單變化也需要重新錄制,腳本可重復(fù)使用的效率低。 2.數(shù)據(jù)驅(qū)動 (data_driven

9、)的自動化測試:從數(shù)據(jù)文件讀取輸入數(shù)據(jù),通過變量的參數(shù)化,將測試數(shù)據(jù)傳入測試腳本,不同的數(shù)據(jù)文件對應(yīng)不同的測試用例。在這種模式下數(shù)據(jù)和腳本分離,腳本的利用率、可維護性大大提高,但受界面變化的影響仍然很大。 3.關(guān)鍵字驅(qū)動(keyword_driven)的自動化測試:關(guān)鍵字驅(qū)動測試是數(shù)據(jù)驅(qū)動測試的一種改進類型,它將測試邏輯按照關(guān)鍵字進行分解,形成數(shù)據(jù)文件,關(guān)鍵字對應(yīng)封裝的業(yè)務(wù)邏輯。 主要關(guān)鍵字包括三類:被操作對象(Item) 、操作(Operation)和值(value) ,用面向?qū)ο笮问娇蓪⑵浔憩F(xiàn)為 Item.Operation(Value)。關(guān)鍵字驅(qū)動的主要思想是:腳本與數(shù)據(jù)分離、界面元素名

10、與測試內(nèi)部對象名分離、測試描述與具體實現(xiàn)細節(jié)分離。 126/18/2021從上面可以看到,自動化測試框架和腳本的發(fā)展是和軟件工程思想的發(fā)展一脈相承的。軟件開發(fā)的模式從面向機器、到面向過程、再到面向?qū)ο蟆⒚嫦蚍?wù),是一個從底層到高層、從具體到抽象、復(fù)用的粒度從細到粗的發(fā)展過程。而軟件開發(fā)中的模塊化、層次化、松耦合等思想對自動化測試框架的設(shè)計都具有借鑒意義。目錄目錄l問題描述l解決方案1.框架圖示2.數(shù)據(jù)的組織3.驅(qū)動的邏輯4.優(yōu)勢和缺點l參考資料問題描述問題描述l前段時間,完成了一些自動化測試的工作,發(fā)現(xiàn)了幾個問題:1. 腳本文件過大經(jīng)過檢查分析,主要是兩方面原因?qū)е拢皇菍ο髱斓奈募?,默認生成

11、得每個空的對象庫文件為192K,這樣一個空的QTP腳本文件就至少需要192K*2=384K的空間(Action0和Action1),如果分割的Action多的話,占用的空間就更多。二是Excel的文件,同樣由于分割A(yù)ction,每個Action需要使用一個獨立的Sheet,包括腳本中調(diào)用的Action,這個在復(fù)雜的腳本中,表現(xiàn)得更加明顯,往往一個貸款發(fā)放的腳本會占用34M空間。2. 文件數(shù)量過多一個最簡單的QTP腳本,共有4個文件夾,13個文件,當(dāng)分割A(yù)ction較多時,文件數(shù)與Action的個數(shù)呈正比上升。問題描述問題描述l這兩個問題,直接導(dǎo)致最終完成的工程文件達到700800M,文件數(shù)以萬

12、計。這還只包括了信貸與結(jié)算的主要業(yè)務(wù)。而其中真正有用的腳本,全部用文本來存儲的話,不會超過10M。使用Action復(fù)用的方式帶來了維護、轉(zhuǎn)移、版本的巨大困難。解決方案概述解決方案概述1.用VBS的Function代替QTP腳本中的Action。 不使用Action復(fù)用,而使用Function的加載和調(diào)用。直接減少Q(mào)TP腳本的數(shù)量。2.使用單一的QTP腳本入口。 這樣整個工程中,就只有一個QTP腳本,其他的都是VBS文件,并且沒有了過多的Excel文件。確保冗余文件達到最少。3.數(shù)據(jù)文件統(tǒng)一維護。 將所有腳本需要用到的測試數(shù)據(jù)統(tǒng)一放到一個或多個Excel文件中,方便了維護,同時也減少了Excel

13、文件的數(shù)量??蚣軋D示框架圖示框架說明框架說明采用了(TestCase - Task)的模塊化設(shè)計思想,業(yè)務(wù)數(shù)據(jù)驅(qū)動腳本的指導(dǎo)思想。框架并沒有太多的新意,對AUT測試對象的處理,全部交給測試工具和Script去處理,框架只處理業(yè)務(wù)層面的測試數(shù)據(jù)。當(dāng)頁面元素是動態(tài)生成,或者寫得不規(guī)范時,Web對象的識別是困難的,而且用Excel表格來記錄一個個的Web對象,亦不見得實用。因此,對于Web對象的識別就全部放到腳本中去處理。幸好QTP提供的功能足以勝任這個工作??蚣苤?,最核心的可能是Driver腳本,但是在整個測試中,最核心的不是Driver,不是Script,而是業(yè)務(wù)測試數(shù)據(jù)。孤立的來看自動化測試框

14、架,是沒有任何意義的。什么樣的測試用例,決定什么樣的框架。體系結(jié)構(gòu)體系結(jié)構(gòu)1.Test Set驅(qū)動腳本驅(qū)動腳本 初始化 解析Test Set的數(shù)據(jù)文件 調(diào)用TestCase驅(qū)動腳本,向它傳遞測試用例的文件名 如果有必要,調(diào)用框架所必需的庫函數(shù)2.TestCase驅(qū)動腳本驅(qū)動腳本 解析TestCase的數(shù)據(jù)文件 根據(jù)TestCase的解析結(jié)果,加載測試腳本,加載測試數(shù)據(jù) 根據(jù)TestCase的內(nèi)容,調(diào)用Task的測試腳本,并且把測試數(shù)據(jù)的集合傳遞給測試腳本 如果有必要,調(diào)用框架所必需的庫函數(shù)體系結(jié)構(gòu)體系結(jié)構(gòu)3.Task測試腳本測試腳本 執(zhí)行指定的任務(wù)(如輸入數(shù)據(jù),點擊按鈕等) 生成日志,以及測試

15、報告 如果需要則調(diào)用用戶自定義庫函數(shù)4.庫函數(shù)庫函數(shù) 一般的和具體應(yīng)用程序的函數(shù)可以被調(diào)用,以執(zhí)行指定的任務(wù)??蚣艿拇鎯Y(jié)構(gòu)框架的存儲結(jié)構(gòu)框架的存儲結(jié)構(gòu)框架的存儲結(jié)構(gòu)lProject文件夾,整個工程的最高一級目錄,名稱可以修改。lDriver目錄,這個是QuickTest的腳本文件,整個框架的入口。這個腳本包含了testSet和testcase的驅(qū)動腳本。lframeUtil目錄,存放用來支持框架的一些函數(shù)庫。llogs目錄,存放腳本運行日志ltestData目錄,存放測試用例以及測試數(shù)據(jù)的Excel文件ltestScript目錄,存放task腳本,全部存儲為vbs文件。ldriver.vbs

16、文件,使用了QTP的automation object model,也是整個框架的入口??梢灾苯訄?zhí)行該vbs腳本,因此可以做成Windows的自動任務(wù),在指定時間點執(zhí)行。ltestData和testScript目錄下的內(nèi)容,是真正需要開發(fā)的。數(shù)據(jù)的組織數(shù)據(jù)的組織Test SetTestCaseTest DataTest DataTest Set 數(shù)據(jù)文件數(shù)據(jù)文件lTest Set數(shù)據(jù)文件是用來管理測試用例文件的,在這里,扮演了TD的管理測試用例和腳本的角色。很顯然,這個數(shù)據(jù)文件沒有TD的功能強大,不能體現(xiàn)測試用例對需求的覆蓋,沒有測試用例之間的樹形結(jié)構(gòu)但是作為一個輕量級的測試框架,只要能夠記錄

17、、管理50100個測試用例文件,就暫時夠用了。lIDX:index,“”表示該行數(shù)據(jù)有效,“x”表示該行數(shù)據(jù)無效。主要是考慮到Excel直接面對人,用0,1來標(biāo)識有效無效,很不直觀。lname:測試用例的名字,用中文標(biāo)示即可,這個字段只是讓人看起來比較直觀,并不會被用到。ltable:這個字段非常重要,它指向測試用例所在的Excel的文件名。可以帶后綴,也可以不帶后綴。不需要指定文件所在的路徑。lsheet:表示測試用例在Excel文件的Sheet名稱。如果不填寫的話,默認為第一個Sheet。l考慮到有些測試用例極其復(fù)雜,僅僅使用Excel形式的測試用例是遠遠不能實現(xiàn)其復(fù)雜的邏輯,也可以把測試

18、用例寫成vbs文件,直接執(zhí)行該vbs腳本。目前暫未實現(xiàn)。TestCase數(shù)據(jù)文件數(shù)據(jù)文件lTestCase數(shù)據(jù)文件中記錄的就是測試用例,只要不是太過于復(fù)雜的測試流程,都可以直接寫在Excel文件中,當(dāng)然,需要符合一定的規(guī)范,很顯然,這離自然語言還是有一定的距離 。這種形式比較適合step-by-step的測試用例,并且粒度比較粗,減少了測試用例的步驟數(shù)。lIDX:index,“”表示該行數(shù)據(jù)有效,“x”表示該行數(shù)據(jù)無效。lbizName:被測試的業(yè)務(wù)的名稱,比如說“銀行收款”這個業(yè)務(wù)。事實上,這個名稱需要與存儲改業(yè)務(wù)的task腳本的名稱保持一致,而且需要與task腳本中定義的class的名稱也

19、保持一致。在沒有做名稱的中英文對照字典之前,bizName最好使用英文名,所以最好使用“collection”,而不是“銀行收款”。ltaskName:task的名稱,原子業(yè)務(wù)的名稱,比如新增、修改、刪除等。這個名稱與task腳本中定義的各個Function的名稱應(yīng)該保持一致。同樣,暫時也最好不要使用中文。TestCase數(shù)據(jù)文件數(shù)據(jù)文件lbizDataTable:測試數(shù)據(jù)所在的Excel的Sheet名稱。比如說進行登陸操作時,需要輸入用戶名和密碼等數(shù)據(jù),這些數(shù)據(jù)單獨放在某個Excel文件中的某個Sheet中,把這個Sheet的名稱寫到bizDataTable這個字段中即可,框架會自動去加載這

20、個Sheet中的所有數(shù)據(jù)。lfilter:測試數(shù)據(jù)的過濾條件??赡軠蕚涞臏y試數(shù)據(jù)比較多,但是在當(dāng)前這一個step中,只需要執(zhí)行某一條或幾條數(shù)據(jù),就可以使用filter這個條件。比如說,登陸時,想用錯誤的用戶名和密碼來登陸,那么可以這樣寫:用戶類型=baduser。當(dāng)然“用戶類型”是測試數(shù)據(jù)所在Excel表格中定義過了的字段。老實說,在這次完成的框架中,只有filter這個想法,覺得有點意思。感謝提出這個需求的同事。Test data數(shù)據(jù)文件數(shù)據(jù)文件lTest data數(shù)據(jù)文件,用來存放測試數(shù)據(jù)。沒有區(qū)分輸入數(shù)據(jù)、驗證數(shù)據(jù)、以及輸出數(shù)據(jù),總之,只要是測試過程中,需要用到的數(shù)據(jù),都一古腦的做成一行

21、,放到這個文件中。一是覺得這樣在設(shè)計測試數(shù)據(jù)時,比較方便和直觀,二是也沒有更好的設(shè)計思想。l對業(yè)務(wù)的驗證,按照設(shè)想,是通過日志文件和測試報告來體現(xiàn)的。所以把驗證數(shù)據(jù)與輸入數(shù)據(jù)放到一起,亦不會有太大的不妥。數(shù)據(jù)文件總結(jié)數(shù)據(jù)文件總結(jié)l基于把測試設(shè)計和腳本開發(fā)分開的思路,設(shè)計了這三個Excel表格。測試設(shè)計時,主要是設(shè)計testcase和test data這兩個Excel表格。畢竟,這才是自動化測試最核心的價值所在。腳本寫得再完美,沒有好的測試設(shè)計、測試數(shù)據(jù),對測試本身并不會有太大的幫助。l因此,希望盡可能把這些Excel表格做得更易用。所謂的框架,就是把這3個Excel表格串起來的東西。驅(qū)動腳本的

22、邏輯驅(qū)動腳本的邏輯lTest Set 驅(qū)動腳本偽碼lTestCase 驅(qū)動腳本偽碼lTask 腳本說明Test Set 驅(qū)動腳本偽碼驅(qū)動腳本偽碼1.將test set數(shù)據(jù)所在的整個Sheet加載到QuickTest的Runtime Table中。2.檢查test set數(shù)據(jù)文件中一共有多少行記錄需要執(zhí)行。3.讀取一行數(shù)據(jù)。4.如果該行的IDX的值為“”,那么調(diào)用執(zhí)行TestCase驅(qū)動腳本,并且把測試用例所在的Excel文件名和Sheet名作為參數(shù)傳給TestCase腳本。5.轉(zhuǎn)向第3步,直到所有數(shù)據(jù)被執(zhí)行完畢。6.刪除加載到Runtime Table中的所有數(shù)據(jù)。TestCase 驅(qū)動腳本偽

23、碼驅(qū)動腳本偽碼1.將TestCase所在的Sheet加載到QuickTest的RunTime Table中。2.檢查TestCase數(shù)據(jù)文件中一共有多少行記錄需要執(zhí)行。3.遍歷整個Sheet,加載所有需要被用到的Task腳本:逐行讀取有效數(shù)據(jù)(IDX=“”),如果bizName的值所指向的Task腳本沒有被加載,那么加載之,直到所有數(shù)據(jù)被執(zhí)行完畢。4.遍歷整個Sheet,加載所有需要被用到的Test data數(shù)據(jù):逐行讀取有效數(shù)據(jù)(IDX=“”),如果bizDataTable的值所指向的Sheet(該Sheet的名稱應(yīng)該在本測試用例中是唯一的)沒有被加載到RunTime Table中,那么加載之,直到所有數(shù)據(jù)被執(zhí)行完畢。5.獲取一行的測試步驟的數(shù)據(jù)。6.如果該行的IDX的值為“”,那么解析filter信息,形成條件語句。7.逐行讀取test data所在的Shee

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論