贠海順
(中國(guó)航空工業(yè)集團(tuán)公司西安航空計(jì)算技術(shù)研究所,陜西西安,710065)
通過工具(程序)的方式來代替或輔助手工測(cè)試的行為稱為自動(dòng)化測(cè)試。自動(dòng)化測(cè)試一般包括測(cè)試過程自動(dòng)化和測(cè)試結(jié)果分析自動(dòng)化,自動(dòng)化測(cè)試能夠帶來的好處包括:
對(duì)程序的新版本運(yùn)行已有的測(cè)試(回歸測(cè)試),能大大降低回歸測(cè)試的開銷;可以運(yùn)行更多更頻繁的測(cè)試;可以執(zhí)行一些手動(dòng)測(cè)試特別費(fèi)時(shí)費(fèi)力,甚至無法達(dá)到測(cè)試目的的項(xiàng)目。比如壓力測(cè)試,大數(shù)據(jù)或者大量重復(fù)數(shù)據(jù)測(cè)試,必須有自動(dòng)化工具的支持;使測(cè)試具有一致性和可重復(fù)性;可以增加軟件信任度;可以更快地將軟件推向市場(chǎng)。
并非所有的軟件產(chǎn)品都適用于自動(dòng)化測(cè)試,自動(dòng)化測(cè)試適用的場(chǎng)景為:
(1)軟件需求及功能相對(duì)穩(wěn)定
測(cè)試腳本的穩(wěn)定性決定了自動(dòng)化測(cè)試的維護(hù)成本。如果軟件需求變動(dòng)過于頻繁,測(cè)試人員需要根據(jù)變動(dòng)的需求來更新測(cè)試用例以及相關(guān)的測(cè)試腳本,如果腳本維護(hù)所花費(fèi)的成本超過了利用其節(jié)省的測(cè)試成本,那么在不穩(wěn)定階段不適于自動(dòng)化測(cè)試。
(2)項(xiàng)目周期足夠長(zhǎng)
由于自動(dòng)化測(cè)試需求的確定、自動(dòng)化測(cè)試框架的設(shè)計(jì)、測(cè)試腳本的編寫與調(diào)試均需要相當(dāng)長(zhǎng)的時(shí)間來完成。這樣的過程本身就是一個(gè)測(cè)試軟件的開發(fā)過程,需要較長(zhǎng)的時(shí)間來完成。如果項(xiàng)目的周期比較短,沒有足夠的時(shí)間去支持這樣一個(gè)過程。
(3)自動(dòng)化測(cè)試腳本可重復(fù)使用
如果投入大量資源開發(fā)了自動(dòng)化測(cè)試腳本,但是腳本的重復(fù)使用率很低,致使其間所耗費(fèi)的成本大于所創(chuàng)造的經(jīng)濟(jì)價(jià)值,自動(dòng)化測(cè)試不能真正產(chǎn)生效益。
目前的測(cè)試框架及工具主要針對(duì)C/S架構(gòu)或B/S架構(gòu)的應(yīng)用,由于嵌入式軟件測(cè)試目標(biāo)及運(yùn)行方式千差萬別,沒有專門用于嵌入式軟件測(cè)試的通用測(cè)試工具。為了解決嵌入式軟件測(cè)試過程中自動(dòng)化測(cè)試問題,本文在介紹了已有的測(cè)試框架和工具的基礎(chǔ)上,提出了一種適合于嵌入式軟件的嵌入式軟件自動(dòng)化測(cè)試框架,并著重描述了測(cè)試框架下的功能劃分和測(cè)試流程。
常見測(cè)試框架及工具包括:QTP,Rational Robot,Phoenix Framework,selenium,watir,Robot Framework 等。
自動(dòng)化測(cè)試框架與工具主要分為兩類:一種是可提供可重用的基礎(chǔ)自動(dòng)化測(cè)試模塊,如: selenium、watir等,它們主要提供最基礎(chǔ)的自動(dòng)化測(cè)試功能,比如打開一個(gè)程序,模擬鼠標(biāo)和鍵盤來點(diǎn)擊或操作被測(cè)試對(duì)象,最后驗(yàn)證被測(cè)對(duì)象的屬性以判斷程序的正確性;另外一種是可以提供自動(dòng)化測(cè)試執(zhí)行和管理功能的架構(gòu)模塊,如:Phoenix Framework,Robot Framework等,它們本身不提供基礎(chǔ)的自動(dòng)化測(cè)試支持,只是用于組織、管理和執(zhí)行那些獨(dú)立的自動(dòng)化測(cè)試用例,測(cè)試完成后統(tǒng)計(jì)測(cè)試結(jié)果,通常這類框架一般都會(huì)集成一個(gè)基礎(chǔ)自動(dòng)化測(cè)試模塊。
針對(duì)嵌入式軟件自動(dòng)測(cè)試領(lǐng)域,利用已有的測(cè)試框架完成主機(jī)端的測(cè)試管理工作,如果測(cè)試腳本管理,測(cè)試報(bào)告的生成等;目標(biāo)機(jī)端完成實(shí)際測(cè)試執(zhí)行,主機(jī)端與目標(biāo)機(jī)端之間的通信與測(cè)試運(yùn)行方案,則需要進(jìn)行自行開發(fā)。

圖1 基于Robot Framework的自動(dòng)化測(cè)試軟件架構(gòu)
基于Robot Framework的自動(dòng)化測(cè)試軟件架構(gòu)如圖1所示。其中Test Data即測(cè)試腳本。Robot Framework啟動(dòng)后,執(zhí)行Test Data中定義的測(cè)試腳本,產(chǎn)生測(cè)試日志和測(cè)試報(bào)告。測(cè)試庫(kù)的函數(shù)可以作為測(cè)試腳本中的關(guān)鍵字進(jìn)行使用,由測(cè)試庫(kù)(Test Libraries)與目標(biāo)機(jī)端進(jìn)行交互。嵌入式自動(dòng)化測(cè)試采用Robot Framework測(cè)試框架+測(cè)試庫(kù),測(cè)試庫(kù)負(fù)責(zé)與目標(biāo)機(jī)端進(jìn)行交互,獲取目標(biāo)機(jī)端測(cè)試用例的運(yùn)行結(jié)果,并返回給測(cè)試腳本。
測(cè)試庫(kù)主要功能為對(duì)目標(biāo)機(jī)端測(cè)試用例的運(yùn)行過程進(jìn)行控制,具體包括:定義主機(jī)端測(cè)試用例的映像描述文件,建立描述文件到測(cè)試用例映像之間的對(duì)應(yīng)關(guān)系;實(shí)現(xiàn)對(duì)目標(biāo)機(jī)的狀態(tài)查詢、應(yīng)用映像加載、復(fù)位等操作;實(shí)現(xiàn)主機(jī)端控制軟件與目標(biāo)機(jī)軟件的底層通信。測(cè)試庫(kù)功能結(jié)構(gòu)如圖2所示。
通信層通過低層通信代理完成與目標(biāo)機(jī)端的數(shù)據(jù)傳輸。協(xié)議控制層主要作用是在通信層的基礎(chǔ)上,定義實(shí)現(xiàn)主機(jī)端和目標(biāo)機(jī)端的命令協(xié)議。實(shí)現(xiàn):加載運(yùn)行命令、重啟動(dòng)命令、目標(biāo)機(jī)狀態(tài)查詢命令,定義測(cè)試開始和測(cè)試結(jié)束的交互信息約定、測(cè)試用例結(jié)果數(shù)據(jù)表示格式等規(guī)則信息。
(1) 執(zhí)行測(cè)試時(shí),首先讀取測(cè)試描述文件,根據(jù)描述文件,檢查測(cè)試用例配置的完整性。檢查項(xiàng)包括:測(cè)試用例在映像文件是否存在,是否完整。
(2) 測(cè)試啟動(dòng)后,測(cè)試控制層應(yīng)該檢查與目標(biāo)機(jī)端口的連接狀態(tài),及是否可以建立連接。

圖2 測(cè)試庫(kù)功能結(jié)構(gòu)圖

圖3 測(cè)試庫(kù)測(cè)試用例的執(zhí)行過程
(3) 在確認(rèn)目標(biāo)機(jī)端可用以后,讀取測(cè)試計(jì)劃中配置的測(cè)試用例映像,向目標(biāo)機(jī)發(fā)生加載、運(yùn)行命令。
(4) 目標(biāo)機(jī)端,完成映像加載后,運(yùn)行進(jìn)入測(cè)試程序的入口,開始運(yùn)行。運(yùn)行開始時(shí)輸出開始測(cè)試標(biāo)識(shí),運(yùn)行結(jié)束后輸出測(cè)試結(jié)束標(biāo)識(shí)。運(yùn)行過程信息及結(jié)果信息,可以通過串口終端、虛擬終端或主機(jī)文件系統(tǒng)保存到主機(jī)端。
(5) 主機(jī)端,等待獲取當(dāng)前測(cè)試用例的運(yùn)行結(jié)束標(biāo)志,在等待過程中,每間隔一段時(shí)間,可以查詢一下目標(biāo)機(jī)端的狀態(tài),防止測(cè)試用例運(yùn)行死機(jī),陷入永久等待的情況。同時(shí)主機(jī)端在日志文件中記錄測(cè)試用例運(yùn)行軌跡信息及主要操作步驟。
當(dāng)獲取到目標(biāo)機(jī)端口發(fā)送過來的測(cè)試結(jié)束狀態(tài)后,對(duì)測(cè)試結(jié)果進(jìn)行分析,并向目標(biāo)機(jī)端口發(fā)送重啟命令,使目標(biāo)機(jī)進(jìn)行模塊重啟,完成狀態(tài)清理。
(6) 當(dāng)前測(cè)試用例完成運(yùn)行以后,返回當(dāng)前測(cè)試用例的執(zhí)行結(jié)果。
本文給出了一種適合于嵌入式軟件基于RobotFramework的自動(dòng)化測(cè)試框架,描述了測(cè)試框架的功能劃分及自動(dòng)化測(cè)試過程。針對(duì)項(xiàng)目周期長(zhǎng),需要經(jīng)過多輪回歸測(cè)試的復(fù)雜嵌入式系統(tǒng)軟件,可以有效提升測(cè)試效率,降低測(cè)試過程中人的工作量,為嵌入式軟件功能驗(yàn)證提供有效的測(cè)試手段。
參考文獻(xiàn)
[1]李夏安,陳志泊.基于STAF的軟件自動(dòng)化測(cè)試系統(tǒng)的研究和實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2009.03.