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