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