徐質彬 王娟



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