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