張偉
摘? 要:功能自動化測試框架是保證自動化測試高效、持久實(shí)施的基礎(chǔ),在自動化測試初期,應(yīng)該設(shè)計一套適合項目的自動化測試框架。文章以一款Flight軟件系統(tǒng)為被測軟件,以HP UFT為功能自動化測試工具,設(shè)計一種適合Web系統(tǒng)的功能自動化測試框架。
關(guān)鍵詞:自動化測試框架;自動化測試;UFT;功能測試
中圖分類號:TP311.53? ? ? 文獻(xiàn)標(biāo)志碼:A? ? ? ? ?文章編號:2095-2945(2019)33-0159-02
Abstract: The functional automation test framework is the basis for ensuring efficient and long-lasting implementation of automated testing. In the early stages of automated testing, an automated testing framework suitable for the project should be designed. In this paper, a Flight software system is used as the tested software, and HP UFT is used as the function automation test tool to design a functional automation test framework suitable for the Web system.Keywords: automated test framework; automated testing; UFT; functional testing
引言
在功能自動化測試過程中,為了保證測試腳本的規(guī)范性、可讀性和可維護(hù)性,首先要設(shè)計健壯性強(qiáng)的自動化測試框架。所謂的自動化測試框架實(shí)質(zhì)上就是一種規(guī)范的集合,在自動化測試團(tuán)隊開發(fā)過程中,經(jīng)常會遇到很多這樣那樣的問題,例如:測試腳本不統(tǒng)一,出現(xiàn)很多重復(fù)的腳本;對象庫中含有很多重復(fù)的對象,導(dǎo)致對象混亂;測試結(jié)果數(shù)據(jù)不清晰,查看的時間代價過大;測試腳本不規(guī)范,難以修改和復(fù)用,導(dǎo)致維護(hù)的成本很高。要解決這些問題,就必須要為其定義適合項目的規(guī)范集,即自動化測試框架。本文以一款Flight軟件系統(tǒng)為被測軟件,以HP UFT為功能自動化測試工具,設(shè)計一種適合Web系統(tǒng)的功能自動化測試框架。
1 HP UFT
HP UFT是HP公司研制開發(fā)的一款知名的企業(yè)級功能自動化測試工具,它的前身是QTP,QTP11.5版本發(fā)布之后改名為UFT。在UFT中,除了保存和升級了原有的QTP功能,還集成了服務(wù)測試工具Service Test(簡稱ST)。使用HP UFT進(jìn)行功能自動化測試的過程一般包含以下7個步驟:(1)獲取和分析被測系統(tǒng)的功能測試需求,確定需要使用HP UFT測試的功能項,并確定被測業(yè)務(wù)流程;(2)配置HP UFT測試環(huán)境,在這個環(huán)節(jié)中涉及到對象庫、函數(shù)和函數(shù)庫資源,需要將這些資源與當(dāng)前環(huán)境關(guān)聯(lián);(3)使用HP UFT可以將業(yè)務(wù)操作錄制為VB腳本的形式,主要是利用HP UFT的對象識別、鼠標(biāo)和鍵盤監(jiān)控機(jī)制來錄制測試腳本;(4)依據(jù)業(yè)務(wù)需求,在錄制生成腳本的基礎(chǔ)上,修改腳本??梢栽谀_本中進(jìn)行調(diào)整測試步驟,插入檢查點(diǎn)、使用參數(shù)化技術(shù),添加分支、循環(huán)等語句,附加注釋等編輯操作;(5)使用Test Batch Runner、HP ALM等工具批量運(yùn)行測試腳本;(6)使用HP UFT查看工具查看測試結(jié)果,檢查測試過程是否出現(xiàn)異常情況;(7)針對測試過程中的異常情況,
分析并總結(jié)出缺陷報告,然后通過缺陷管理工具提交測試缺陷,如HP ALM、Bugzilla等。
2 自動化測試框架
一個完備的測試框架應(yīng)該考慮測試過程管理、對象的管理、函數(shù)庫的管理、數(shù)據(jù)驅(qū)動、關(guān)鍵字驅(qū)動、錯誤處理、測試報告管理等內(nèi)容。下面以Flight軟件系統(tǒng)為測試案例介紹基于Web軟件系統(tǒng)的UFT功能自動化測試框架。
2.1 測試過程管理
自動化測試工程師在進(jìn)行自動化測試時,首先要考慮的就是測試過程與測試腳本的統(tǒng)一管理。不管是手工測試還是自動化測試都需要依據(jù)規(guī)范的測試流程來開展測試工作,規(guī)范的測試流程是保證測試質(zhì)量的首要因素。在本案例中,使用測試管理工具HP ALM對自動化測試的過程進(jìn)行控制和管理。測試腳本是一種代碼,在測試進(jìn)行過程中,需要對這些代碼進(jìn)行統(tǒng)一的管理。在本案例中,自動化測試用例的測試腳本開發(fā)完成后,將上傳到HP ALM中進(jìn)行統(tǒng)一管理。如果測試腳本有多個版本,那還要考慮腳本的版本控制,可以借助SVN等版本控制軟件對此進(jìn)行管理。功能自動化測試工具HP UFT與HP ALM可以無縫對接,HP ALM不僅可以對HP UFT測試腳本進(jìn)行管理,還可以對對象庫、函數(shù)庫、場景恢復(fù)等資源文件進(jìn)行管理,使腳本更容易得到控制,在一定程度上可以減少后期維護(hù)的成本。
2.2 對象的管理
在功能自動化測試中,最難的問題之一就是對象的識別和管理,因?yàn)槟_本中涉及流程上的變動相對來說比較少,變動最大的通常是對象層。在HP UFT中,對象識別主要包括以下兩種方法:
(1)從對象庫中查找并識別對象
對象庫是HP UFT的一個重要組件,對象庫中存放著與被測業(yè)務(wù)有關(guān)的各種對象,在腳本開發(fā)和回放過程中,可以從對象庫中查看并識別所需要的對象。這種方法實(shí)現(xiàn)了編碼與對象的分離,方便了對象的維護(hù)和管理,但是此對象庫文件只適合HP UFT,很難移植到其他功能自動化測試工具中。
(2)利用描述性編程查找并識別對象
這種方法比較靈活,可移植性好,無需使用對象庫組件,僅利用描述性編程語言來查找并識別當(dāng)前頁面的對象,還可以根據(jù)需要識別并查找某一類的測試對象。
在本案例中,為了方便對象的維護(hù)和管理,優(yōu)先使用對象庫的方式查找和識別對象,如果該方式無法滿足需要,再使用描述性編程查找并識別對象。如果使用對象庫,就需要構(gòu)建和管理對象庫。為了防止對象庫混亂、名稱不統(tǒng)一,在構(gòu)建對象庫時,需要測試人員規(guī)范對象庫中對象的命名,設(shè)置對象的層次結(jié)構(gòu)、將對象庫中重復(fù)的對象刪除掉等。對象庫構(gòu)建完成后,可將對象庫文件上傳到HP ALM系統(tǒng)的測試資源中,以便開發(fā)測試用例腳本時,測試人員可以將對象庫文件關(guān)聯(lián)到當(dāng)前的用例項目中,實(shí)現(xiàn)對象庫文件的共享
2.3 函數(shù)庫的管理
在測試腳本的開發(fā)過程中,可以采用結(jié)構(gòu)化編程的思想,將某些復(fù)用度較高的腳本單獨(dú)放在過程或者函數(shù)中,簡化腳本的開發(fā)工作量。例如:每個用例腳本中都包含著發(fā)送郵件的代碼,就可以將發(fā)送郵件的代碼單獨(dú)寫在一個函數(shù)中,當(dāng)腳本用到發(fā)送郵件的代碼時,直接調(diào)用該函數(shù)即可。另外,如果腳本需要頻繁地調(diào)用外部函數(shù)庫中的函數(shù),需要提前將函數(shù)庫文件關(guān)聯(lián)到當(dāng)前的用例項目中。
在本案例中,將項目的相關(guān)函數(shù)放在外部的函數(shù)庫文件中,實(shí)現(xiàn)腳本與函數(shù)的分離,函數(shù)庫文件可以qfl格式、vbs格式或者是txt格式的。函數(shù)庫構(gòu)建完成后,將其上傳到HP ALM系統(tǒng)的測試資源中,方便測試人員將函數(shù)庫文件關(guān)聯(lián)到當(dāng)前的用例項目。此外,有些函數(shù)也可封裝在動態(tài)鏈接庫文件中(以DLL為后綴名),使用時通過Extern.Declare方法調(diào)用動態(tài)鏈接庫文件中的函數(shù)。
2.4 數(shù)據(jù)驅(qū)動
HP UFT支持?jǐn)?shù)據(jù)驅(qū)動框架,其最大優(yōu)點(diǎn)是實(shí)現(xiàn)了腳本與數(shù)據(jù)的分離,便于數(shù)據(jù)的修改和腳本的維護(hù)。測試腳本里的數(shù)據(jù)不再是hard-code,相反,數(shù)據(jù)是被存儲在HP UFT表中或者外部文件里。在本案例中,我們使用外部的Excel表格用來存儲數(shù)據(jù),測試腳本需要首先連接到外部數(shù)據(jù)源文件,然后從數(shù)據(jù)源里解析這些數(shù)據(jù)。
2.5 關(guān)鍵字驅(qū)動
操作(Operation)和值(value),用面向?qū)ο笮问娇蓪⑵浔憩F(xiàn)為 Item.Operation(Value)。有了這些關(guān)鍵字,那么測試用例的步驟就可以借助這些關(guān)鍵字來表示。例如:某用例步驟“在員工登錄頁面中的用戶名文本框里輸入tester1”的具體實(shí)現(xiàn)腳本可表示為:Browser(“Flight系統(tǒng)”).Page(“員工登錄”).WebEdit(“name”).Set tester1,其中,Browser(“Flight系統(tǒng)”).Page(“員工登錄”).WebEdit(“name”)是指被操作的對象,set是操作的方法, tester1是指具體的用戶名值。
所謂的關(guān)鍵字驅(qū)動測試就是使用關(guān)鍵字驅(qū)動技術(shù)來開發(fā)測試腳本,關(guān)鍵字驅(qū)動測試的具體步驟如下:
(1)建立對象庫,對測試用例中所用到對象(控件)屬性及方法進(jìn)行封裝。
(2)編制腳本,使用封裝好了的對象及其對應(yīng)的方法,為所進(jìn)行的操作賦值。
在HP UFT腳本開發(fā)過程中,可以通過錄制方式生成腳本,也可以通過手工編寫腳本。在本案例中,將兩種方式結(jié)合起來,先用錄制方式快速生成基本業(yè)務(wù)腳本,然后依據(jù)用例的要求通過手工的方式去修改和強(qiáng)化腳本。
2.6 異常監(jiān)控和處理
錯誤處理在自動化測試過程中一直是一件非常繁瑣的事情,我們經(jīng)常會遇到因?yàn)槟_本的一個小錯誤而“卡住”所有其他測試用例的執(zhí)行,以及在復(fù)雜的框架中無法對腳本執(zhí)行過程中出現(xiàn)的錯誤進(jìn)行定位等情況。
錯誤處理的一般原則為:對于可以預(yù)見確切發(fā)生時間的錯誤使用“if err then”形式來進(jìn)行錯誤處理操作,如登錄之后密碼不正確的錯誤操作等;對于無法預(yù)見確切發(fā)生時間的錯誤,通常先使用HP UFT的場景恢復(fù)技術(shù)對錯誤進(jìn)行處理,再繼續(xù)完成后續(xù)的操作。
2.7 測試報告管理
測試執(zhí)行過程,HP UFT會記錄下每個Action的執(zhí)行情況,可以使用Reporter等對象將執(zhí)行過程中的某些關(guān)鍵信息輸出到測試報告中,以便測試人員可以判斷測試用例腳本執(zhí)行通過或是失敗。此外,為了便于查看批量運(yùn)行腳本的結(jié)果數(shù)據(jù),可將所有腳本執(zhí)行過程中的關(guān)鍵數(shù)據(jù)統(tǒng)一輸出到一個文件中,使測試人員可以更加直觀和快速的了解測試執(zhí)行情況。在本案例中,利用Excel.Application對象和Reporter對象將所有測試腳本的關(guān)鍵信息輸出到一個Excel文件中。
3 結(jié)束語
自動化測試框架是保證功能自動化測試有效、持續(xù)使用的基礎(chǔ),在自動化測試初期,測試人員就應(yīng)考慮建立一套自動化測試規(guī)范,即測試框架。另外,自動化測試框架都有其適用范圍,本文所建立的UFT自動化測試框架主要適用于Web軟件系統(tǒng),不適用于CS架構(gòu)軟件系統(tǒng)。
參考文獻(xiàn):
[1]接卉,蘭雨晴,駱沛,等.一種關(guān)鍵字驅(qū)動的自動化測試框架[J].計算機(jī)應(yīng)用研究,2009,26(3):927-929.
[2]自動化測試在大型軟件系統(tǒng)的應(yīng)用與研究[D].浙江大學(xué),2010.
[3]李吟,方建勇,江夢,等.面向需求覆蓋的Web服務(wù)自動化測試框架[J].計算機(jī)科學(xué)與探索,2017,11(11):1747-1763.
[4]黃建軍,李宥謀,劉婧,等.基于Python語言的自動化測試系統(tǒng)的設(shè)計與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2017,40(4):39-43.
[5]李志林.嵌入式軟件自動化測試系統(tǒng)研究[J].現(xiàn)代制造技術(shù)與裝備,2019(06):97-98.
[6]張瑛.回歸測試中機(jī)器挑選用例方法研究[J].科技與企業(yè),2015(5):201-202.
[7]聶長海.關(guān)于軟件測試的幾點(diǎn)思考[J].計算機(jī)科學(xué),2011,38(2):1-3.