馬驍驊 周文睿
(中國電子科技集團(tuán)公司第15研究所,北京 100083)
API是相關(guān)應(yīng)用編程接口當(dāng)中一組允許軟件之間進(jìn)行有效通信的定義、過程和協(xié)議集合。API的主要功能之一是能夠有效提供一組相對通用的通信功能。在某種程度上API也被稱之為一個中間組件,允許在不同平臺上實現(xiàn)相關(guān)數(shù)據(jù)共享。
框架(framework)是一個框子——指其約束性,也是一個架子——指其支撐性。是一個基本概念上的結(jié)構(gòu),用于去解決或者處理復(fù)雜的問題。另一個定義是現(xiàn)階段許多框架是可以由相關(guān)應(yīng)用開發(fā)者進(jìn)一步有效定制出來的各種應(yīng)用框架,一般來說前者在應(yīng)用層面,后者則主要是在目標(biāo)層面給出定義[1]。
設(shè)計合理的自動化測試框架測試API類型被測件,測試代碼要能自動化,并且如果被測件已經(jīng)產(chǎn)品化,測試代碼應(yīng)具有可沿用性。測試代碼要符合測試框架要求[2]。
(1)支撐性。框架本身不解決什么問題,但給了解決問題的相關(guān)組件一個組合底子,這個底子的科學(xué)性和易用性直接影響在此之上進(jìn)一步開發(fā)的科學(xué)性和方便性。(2)通用性??蚣軕?yīng)做到基本的通用性;并且可以適應(yīng)不同項目,或根據(jù)不同項目特點,對測試框架可進(jìn)行裁剪來滿足要求。(3)自動化。測試框架應(yīng)該可滿足自動化測試執(zhí)行,可以做到伸縮有度。
(1)非自動化測試需要人工干預(yù),導(dǎo)致執(zhí)行效率低,而且偶然性和不確定性。(2)對于復(fù)雜軟件或者不需要人工干預(yù)的軟件,自動化測試是一個很好的選擇。(3)系統(tǒng)越復(fù)雜,問題越多。(4)上線時間長、構(gòu)件失敗率高導(dǎo)致的蝴蝶效應(yīng)(迭代快,加班多)。
通用的自動化測試框架包括三大部分,分別為測試程序主體模塊、數(shù)據(jù)定義模塊、結(jié)果匹配與輸出模塊。以下對三大模塊設(shè)計進(jìn)行一一介紹。
(1)數(shù)據(jù)定義模塊含義。數(shù)據(jù)定義模塊需要注意的問題就是“如何存儲、引用、分組、共享以及重用測試腳本和測試數(shù)據(jù)”。由自動化測試框架的設(shè)計者來決定如何組織數(shù)據(jù)定義模塊,以及相對應(yīng)的測試程序主題模塊如何有效讀取這些數(shù)據(jù)。另一方面,測試數(shù)據(jù)的易用性和維護(hù)性也是相關(guān)自動化測試框架當(dāng)中可行性的一個重要方面。數(shù)據(jù)定義模塊包括:公共數(shù)據(jù)定義模塊和非公共數(shù)據(jù)定義模塊[3]。(2)數(shù)據(jù)定義模塊設(shè)計原則。基于最佳實踐基礎(chǔ),筆者進(jìn)一步總結(jié)了6個被證明在將測試數(shù)據(jù)組織到測試設(shè)置中非常有效的通用設(shè)計規(guī)則。這些規(guī)則在一定程度上應(yīng)當(dāng)被視為相關(guān)內(nèi)部測試自動化框架開發(fā)或評估業(yè)務(wù)框架的功能要求。
3.2.1 測試程序主體模塊代碼編寫原則
(1)測試代碼要做到高內(nèi)聚低耦合;(2)測試代碼中要做到代碼封裝。
3.2.2 測試程序主體模塊設(shè)計
測試主函數(shù)模塊分為“調(diào)用被測API函數(shù)模塊”和“執(zhí)行測試函數(shù)模塊”兩部分:調(diào)用被測API函數(shù)模塊和執(zhí)行測試函數(shù)模塊。
測試結(jié)果匹配與輸出分為3種方式,分別為斷言、截圖、日志生成,如圖1所示。
圖1 測試結(jié)果匹配與輸出
有時我們測試的API函數(shù)是通過視覺來判斷函數(shù)是否測試通過,此時就需要借助圖片截圖、圖片比對手段,來判斷預(yù)期結(jié)果是否與實際運行結(jié)果一致,也就是將兩張圖片進(jìn)行比對,查看其相似度。
加入輸出日志功能,模擬結(jié)果輸出到創(chuàng)建的路徑下的文件