徐質(zhì)彬 王娟
摘? 要:軟件測(cè)試是確保軟件質(zhì)量的重要手段,貫穿整個(gè)項(xiàng)目流程,在軟件生命周期中占據(jù)重要地位?;诖藢?duì)移動(dòng)端的廣告樣式和交互功能測(cè)試人員的需求進(jìn)行分析,設(shè)計(jì)并實(shí)現(xiàn)測(cè)試任務(wù)觸發(fā)模塊、配置更新模塊、樣式渲染模塊、樣式校驗(yàn)?zāi)K和線(xiàn)上收入監(jiān)控模塊五大功能模塊,這五個(gè)模塊協(xié)同作用,分析測(cè)試人員輸入的測(cè)試環(huán)境模塊的配置信息,調(diào)度手機(jī)資源進(jìn)行樣式展現(xiàn)、樣式抓取,對(duì)生成的樣式圖像進(jìn)行模板匹配,確定相似度。
關(guān)鍵詞:自動(dòng)化測(cè)試;Hu不變矩;Hausdorff距離;模板匹配;組件化
Absrtact:Software testing is an important means to ensure software quality,which runs through the whole project process and occupies an important position in the software life cycle. Based on this,this paper analyzes the needs of mobile advertising style and interactive function testers,designs and implements five functional modules:test task trigger module,configuration update module,style rendering module,style verification module and online revenue monitoring module. These five modules work together to analyze the configuration information of the test environment module input by testers,dispatch mobile phone resources for style display and style capture,and template matching on the generated style images to determine similarity.
Keywords:automated test;Hu invariant moment;Hausdorff distance;template matching;component
0? 引? 言
由于軟件行業(yè)的迅速發(fā)展,軟件測(cè)試日趨成熟,傳統(tǒng)的人工測(cè)試模式無(wú)法滿(mǎn)足持續(xù)集成的快節(jié)奏測(cè)試需要[1]。自動(dòng)化測(cè)試可以在軟件快速迭代的同時(shí)更有效地確保代碼質(zhì)量,使測(cè)試人員不需要頻繁地重復(fù)環(huán)境搭建等耗時(shí)的工作,最大限度地保證測(cè)試的效率。為了避免軟件投放在市場(chǎng)以后產(chǎn)生安全問(wèn)題,軟件公司必須提高軟件質(zhì)量,并確保軟件的穩(wěn)定性和可靠性,以提高軟件公司的競(jìng)爭(zhēng)力[2]。
本文設(shè)計(jì)并實(shí)現(xiàn)的自動(dòng)化測(cè)試平臺(tái)應(yīng)用于公司實(shí)際業(yè)務(wù)中,是對(duì)搜索推廣服務(wù)管理平臺(tái)的推廣信息的前端樣式及交互進(jìn)行自動(dòng)化測(cè)試,加入模板匹配算法進(jìn)行樣式的精準(zhǔn)校驗(yàn),以期為測(cè)試人員減負(fù)。筆者主要負(fù)責(zé)該項(xiàng)目的理論設(shè)計(jì)與測(cè)試工作,故本文主要針對(duì)前期設(shè)計(jì)與功能測(cè)試進(jìn)行論述。搜索推廣服務(wù)管理平臺(tái)的主要業(yè)務(wù)是高效地管理與優(yōu)化搜索推廣信息、更為科學(xué)地評(píng)估推廣效果[3]。通過(guò)分析測(cè)試流程中可自動(dòng)化的部分,得到自動(dòng)化測(cè)試平臺(tái)的業(yè)務(wù)流程如下:測(cè)試人員輸入包含測(cè)試用例和測(cè)試環(huán)境配置等信息的文本文件并觸發(fā)任務(wù)后,平臺(tái)分析用戶(hù)輸入的測(cè)試環(huán)境模塊的配置信息、測(cè)試用例信息和其他信息,創(chuàng)建連續(xù)集成任務(wù)或回歸任務(wù),利用時(shí)間片輪轉(zhuǎn)算法選取不同品牌的四部手機(jī)進(jìn)行樣式抓取,使用Hu不變矩計(jì)算特征值、Hausdorff距離計(jì)算相似度的方法,將生成的圖像與基準(zhǔn)圖片進(jìn)行模板匹配以保證廣告樣式能夠兼容不同尺寸的屏幕。
1? 自動(dòng)化測(cè)試平臺(tái)相關(guān)理論及技術(shù)綜述
1.1? Hu不變矩
本文所設(shè)計(jì)的自動(dòng)化測(cè)試平臺(tái)通過(guò)計(jì)算七個(gè)不變矩得到圖像對(duì)應(yīng)的特征值。Hu不變矩算法的七個(gè)不變矩具有平移、旋轉(zhuǎn)和尺度不變特性。通過(guò)計(jì)算圖像的幾何矩、混合中心矩、歸一化中心矩、七個(gè)不變矩,得到圖像的特征值。對(duì)灰度分布為f(x,y)的圖像,其(p+q)階矩用式(1)的mpq表示,對(duì)(p+q)階混合中心矩用式(2)upq表示,歸一化中心矩用式(3)ηpq表示。式(3)中γ=(p+q+2)/2;p,q=0,1,2,…。七個(gè)不變矩用式(4)中的φ1~φ7表示。
Hu不變矩對(duì)于物體的形狀描述得比較好,一般用來(lái)識(shí)別紋理特征清晰的圖像。本文中,將圖像經(jīng)過(guò)預(yù)處理后生成的水平投影圖的紋理特征清晰,選取Hu不變矩進(jìn)行特征值提取,識(shí)別的準(zhǔn)確率高,識(shí)別效果精準(zhǔn)。
1.2? Hausdorff距離
為判斷待校驗(yàn)樣式是否為模板樣式,進(jìn)行待校驗(yàn)樣式和模板樣式的相似性度量。由于Hausdorff距離已經(jīng)應(yīng)用在人臉識(shí)別、圖像匹配、事物識(shí)別以及目標(biāo)跟蹤等多個(gè)領(lǐng)域中[4],所以,本論文在進(jìn)行模板匹配算法選擇時(shí),主要使用Hausdorff距離作為相似性度量的函數(shù)。
計(jì)算前向Hausdorff距離的方法:對(duì)于待校驗(yàn)圖像的特征集合P={p1,p2,…,pi,…,pN}和模板圖像的特征集合T={t1,t2,…,tj,…,tM},用式(5)、式(6)、式(7)計(jì)算待校驗(yàn)圖像與模板圖像之間的Hausdorff距離[5]。
按照同樣的方法計(jì)算模板圖像和待校驗(yàn)圖像的前向Hausdorff距離,得到的就是待校驗(yàn)圖像和模板圖像的后向Hausdorff距離,取待校驗(yàn)圖像和模板圖像的前向Hausdorff距離和后向Hausdorff距離的最大值就是待校驗(yàn)圖像和模板圖像的Hausdorff距離。通過(guò)對(duì)兩幅圖像的Hausdorff距離進(jìn)行計(jì)算,進(jìn)而對(duì)兩圖像的相似度進(jìn)行評(píng)價(jià)。
2? 自動(dòng)化測(cè)試平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)
本章重點(diǎn)闡述自動(dòng)化測(cè)試平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)過(guò)程。概要設(shè)計(jì)是從總體平臺(tái)設(shè)計(jì),功能體系結(jié)構(gòu)設(shè)計(jì)和數(shù)據(jù)存儲(chǔ)設(shè)計(jì)三個(gè)部分進(jìn)行的,這三個(gè)部分相互補(bǔ)充。平臺(tái)的詳細(xì)設(shè)計(jì)和實(shí)現(xiàn)將根據(jù)平臺(tái)的概要設(shè)計(jì)為標(biāo)準(zhǔn)進(jìn)行擴(kuò)展和完善。
2.1? 總體架構(gòu)
基于模塊分離的思想,本平臺(tái)應(yīng)用OSI體系將平臺(tái)的總體架構(gòu)設(shè)計(jì)劃分為七部分:應(yīng)用層、調(diào)度層、接口層、組件層、存儲(chǔ)層、公共服務(wù)層和工具層??傮w架構(gòu)設(shè)計(jì)如圖1所示。
2.2? 功能結(jié)構(gòu)
在自動(dòng)化測(cè)試平臺(tái)需求分析的過(guò)程中,本文共獲得五個(gè)核心功能,分別為測(cè)試任務(wù)觸發(fā)功能、配置更新功能、樣式渲染功能、樣式校驗(yàn)功能、線(xiàn)上收入監(jiān)控功能。按照功能模塊劃分,得到平臺(tái)的功能模塊如圖2所示。
2.3? 測(cè)試任務(wù)觸發(fā)模塊的設(shè)計(jì)與實(shí)現(xiàn)
測(cè)試任務(wù)觸發(fā)模塊是平臺(tái)的入口模塊,持續(xù)對(duì)MySQL數(shù)據(jù)庫(kù)中的任務(wù)表進(jìn)行測(cè)試任務(wù)讀取操作。測(cè)試任務(wù)觸發(fā)模塊主要實(shí)現(xiàn)測(cè)試任務(wù)的新建和觸發(fā)運(yùn)行,分為自動(dòng)化的持續(xù)集成任務(wù)觸發(fā)模塊和回歸任務(wù)觸發(fā)模塊。流程圖如圖3所示。
2.4? 配置更新模塊的設(shè)計(jì)與實(shí)現(xiàn)
測(cè)試任務(wù)觸發(fā)完畢,生成的測(cè)試用例信息傳入配置更新模塊,由配置更新模塊獲取虛擬機(jī)地址,在虛擬機(jī)上更新測(cè)試環(huán)境的配置。對(duì)配置文件進(jìn)行Md5格式長(zhǎng)度大小進(jìn)行判斷,若長(zhǎng)度不一致,則有新增,需更新配置,若長(zhǎng)度一致,則無(wú)新增,不需更新配置。具體流程圖如圖4所示。
2.5? 樣式渲染模塊的設(shè)計(jì)與實(shí)現(xiàn)
配置更新操作完成,由樣式渲染模塊的資源調(diào)度模塊調(diào)度手機(jī),進(jìn)行樣式渲染展現(xiàn),再調(diào)用樣式抓取模塊,進(jìn)行模擬點(diǎn)擊交互操作。具體流程圖如圖5所示。
2.6? 樣式校驗(yàn)?zāi)K的設(shè)計(jì)與實(shí)現(xiàn)
舊版本的樣式校驗(yàn)?zāi)K采用語(yǔ)義切割的方式解析廣告圖片,生成字典類(lèi)型的info信息。涉及到的OCR識(shí)別流程如圖6所示。
由于實(shí)際圖片都是真機(jī)運(yùn)行的截圖,在MVP平臺(tái)上已經(jīng)做過(guò)預(yù)處理,圖片內(nèi)容較為清晰,故不需要再進(jìn)行處理。本模塊主要進(jìn)行字符切割工作,生成info信息。對(duì)圖片進(jìn)行水平投影,找到每一行的上界限和下界限,進(jìn)行行切割;對(duì)切割出來(lái)的每一行,進(jìn)行垂直投影,找到每一個(gè)字符的左右邊界,進(jìn)行單個(gè)字符的切割。按行將元素內(nèi)容、橫縱坐標(biāo)位置、元素類(lèi)型保存為JSON格式。通過(guò)比對(duì)語(yǔ)義切割模塊所生成的JSON信息與模板信息,遍歷判斷每行的元素是否同一類(lèi)型、是否位于同一位置,來(lái)判斷是否匹配成功。
經(jīng)過(guò)實(shí)驗(yàn)發(fā)現(xiàn),這種方式在執(zhí)行過(guò)程中的可靠性差。當(dāng)出現(xiàn)圖片尺寸發(fā)生變化、廣告模板圖片不一致時(shí),判斷就會(huì)出現(xiàn)錯(cuò)誤,匹配率只有44.5%。當(dāng)出現(xiàn)圖片尺寸一致,并且廣告模板圖片一致的情況時(shí),樣式匹配結(jié)果受到語(yǔ)義切割精確度的影響,匹配率為83.7%。實(shí)驗(yàn)結(jié)果如表1所示。
為了提升樣式匹配的準(zhǔn)確率,確保廣告內(nèi)容不會(huì)對(duì)樣式匹配產(chǎn)生影響,改進(jìn)方案對(duì)圖像進(jìn)行預(yù)處理,采用OpenCV的Mat類(lèi)生成水平投影圖將廣告模板圖片和文字內(nèi)容作投影處理,對(duì)投影圖采用模板匹配的算法優(yōu)化匹配過(guò)程,通過(guò)不變矩計(jì)算圖像特征值,Hausdorff距離判斷相似度的方法,進(jìn)行樣式校驗(yàn)。流程圖如圖7所示。
3? 系統(tǒng)測(cè)試
本章主要從對(duì)主要模塊進(jìn)行功能測(cè)試、安全性測(cè)試、性能測(cè)試三方面對(duì)自動(dòng)化測(cè)試平臺(tái)進(jìn)行測(cè)試。
3.1? 功能測(cè)試
按模塊將自動(dòng)化測(cè)試平臺(tái)的功能測(cè)試點(diǎn)劃分為四個(gè),分別為測(cè)試任務(wù)觸發(fā)模塊功能測(cè)試、配置更新模塊功能測(cè)試、樣式渲染模塊功能測(cè)試、樣式校驗(yàn)?zāi)K功能測(cè)試。
3.1.1? 測(cè)試任務(wù)觸發(fā)模塊功能測(cè)試
測(cè)試定制不同的樣式渲染版本的測(cè)試任務(wù),查看測(cè)試任務(wù)是否依靠正確版本進(jìn)行。部分測(cè)試用例如表2所示。
從表2中可以看出不論是自動(dòng)獲取最新版本,還是輸入版本信息、指定構(gòu)建號(hào),或者輸入版本信息、獲取最新構(gòu)建號(hào),平臺(tái)均能生成和渲染正確的樣式,測(cè)試觸發(fā)功能測(cè)試通過(guò)。
3.1.2? 配置更新模塊功能測(cè)試
分別設(shè)計(jì)測(cè)試用例進(jìn)行不同版本的ASP、Vui、樁數(shù)據(jù)配置更新,確定三個(gè)模塊均能正常啟動(dòng)。部分測(cè)試用例如表3所示。
從表3中可以看出平臺(tái)能夠成功觸發(fā)新、舊配置更新,且不論是單一模塊配置更新還是指定模塊進(jìn)行配置更新,均不影響其他模塊啟動(dòng)。配置更新模塊的數(shù)量不會(huì)對(duì)模塊啟動(dòng)造成影響。配置更新功能測(cè)試通過(guò)。
3.1.3? 樣式渲染模塊功能測(cè)試
設(shè)計(jì)測(cè)試用例進(jìn)行資源調(diào)度和樣式抓取,確定資源調(diào)度和樣式抓取的功能符合預(yù)期。部分測(cè)試用例如表4所示。
從表4中可以看出該模塊能夠?qū)崿F(xiàn)調(diào)度四部手機(jī)進(jìn)行樣式展現(xiàn),抓取的樣式能與樣式展現(xiàn)一一對(duì)應(yīng)。樣式渲染模塊功能測(cè)試通過(guò)。
3.1.4? 樣式校驗(yàn)?zāi)K功能測(cè)試
測(cè)試任務(wù)中,分別對(duì)通欄留白大于45 px、右側(cè)組件超高、左側(cè)留白大于45 px、圖片右側(cè)超高或缺少組件、正常模板樣式廣告這五種情況進(jìn)行驗(yàn)證,查看輸出結(jié)果是否符合預(yù)期。部分測(cè)試用例如表5所示。
從表5中可以看出,當(dāng)樣式正常顯示時(shí),能夠成功匹配到相應(yīng)的模板;當(dāng)樣式顯示有誤時(shí),通欄留白大于45 px、右側(cè)組件超高、左側(cè)留白大于45 px、圖片右側(cè)超高或缺少組件、正常模板樣式廣告這五種情況均能夠?qū)崿F(xiàn)問(wèn)題攔截。樣式校驗(yàn)?zāi)K功能測(cè)試通過(guò)。
3.2? 安全性測(cè)試
出于數(shù)據(jù)安全性考慮,本平臺(tái)只為公司內(nèi)部測(cè)試人員開(kāi)放,只在內(nèi)網(wǎng)環(huán)境下進(jìn)行訪(fǎng)問(wèn),且限制用戶(hù)權(quán)限,避免數(shù)據(jù)泄露。對(duì)平臺(tái)進(jìn)行安全性測(cè)試,測(cè)試用例如表6所示。