王寅 黃河基 李佳芮
摘? 要:現(xiàn)有的GUI自動(dòng)測(cè)試技術(shù)通常需要借助被測(cè)設(shè)備的底層界面框架來(lái)獲取信息,難以實(shí)現(xiàn)跨平臺(tái)。針對(duì)這種現(xiàn)象,文章提出了基于視覺(jué)的移動(dòng)應(yīng)用自動(dòng)測(cè)試技術(shù),使用YOLOv5模型檢測(cè)界面中可執(zhí)行控件,對(duì)不同測(cè)試輸入下的狀態(tài)合并方法進(jìn)行研究,采用交并比與平均表面距離相結(jié)合的方式識(shí)別界面中相似狀態(tài)。經(jīng)過(guò)實(shí)驗(yàn)證明,該方法狀態(tài)識(shí)別效果良好,為基于視覺(jué)特征的GUI自動(dòng)化測(cè)試提供一定的參考。
關(guān)鍵詞:GUI測(cè)試;視覺(jué)特征;相似性度量;視覺(jué)化測(cè)試
中圖分類號(hào):TP183;TP391.4 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2023)18-0106-05
Mobile Application Automatic Testing Based on YOLO
WANG Yin, HUANG Heji, LI Jiarui
(Nanjing University of Aeronautics and Astronautics, Nanjing? 211106, China)
Abstract: The existing GUI automatic testing technology usually relies on the underlying interface framework of the detected equipment to obtain information, which is hard to realize cross-platform. In response to the phenomenon, this paper proposes a vision-based mobile application automatic testing technology, uses YOLOv5 model to detect the executable widgets in the interface, researches the state merging method under different test inputs, and combines the average intersection union ratio with the average surface distance to identify similar states in the interface. Experiments prove that the method has a good effect on identifying status and provides a certain reference for the automatic GUI testing based on visual feature.
Keywords: GUI testing; visual feature; similarity measurement; visual testing
0? 引? 言
隨著互聯(lián)網(wǎng)技術(shù)的高速發(fā)展進(jìn)步,移動(dòng)應(yīng)用軟件從數(shù)量、類型等方面都呈現(xiàn)爆炸式增長(zhǎng)。圖形用戶界面(Graphics User Interface, GUI)在移動(dòng)應(yīng)用軟件中得到了廣泛應(yīng)用,隨之而來(lái)的質(zhì)量問(wèn)題也越發(fā)突出。GUI測(cè)試時(shí)檢測(cè)移動(dòng)應(yīng)用質(zhì)量的重要手段,其中GUI自動(dòng)測(cè)試通過(guò)分析被測(cè)應(yīng)用程序的界面,采用不同策略生成測(cè)試輸入來(lái)激發(fā)界面動(dòng)作,實(shí)現(xiàn)了自動(dòng)化測(cè)試應(yīng)用,大大降低了測(cè)試成本。
基于模型的GUI測(cè)試技術(shù)(Model-based GUI Testing, MBGT)是一種對(duì)移動(dòng)應(yīng)用進(jìn)行測(cè)試的重要方法,它通過(guò)構(gòu)建模型來(lái)抽象GUI系統(tǒng),結(jié)合模型對(duì)圖形界面進(jìn)行測(cè)試,大大地提升了測(cè)試效率?;谀P偷臏y(cè)試工具有Droidbot[1]、APE[2],通過(guò)在測(cè)試過(guò)程中對(duì)被測(cè)應(yīng)用程序進(jìn)行系統(tǒng)的探索將GUI與可執(zhí)行操作相關(guān)聯(lián),得到能夠記錄界面行為的有限狀態(tài)機(jī)等模型。Baek等人[3]提出了基于安卓平臺(tái)的多層次GUI比較方法,該方法在模型構(gòu)建過(guò)程基于視覺(jué)方法的GUI界面模型抽取技術(shù)研究中提供多個(gè)模型抽象級(jí)別的選擇。然而這些GUI測(cè)試方法依賴被測(cè)設(shè)備提供的界面框架來(lái)獲取內(nèi)部結(jié)構(gòu)信息、生成輸入事件,所以無(wú)法應(yīng)用于一些系統(tǒng)封閉的設(shè)備或底層訪問(wèn)受限的應(yīng)用程序,難以實(shí)現(xiàn)跨平臺(tái)測(cè)試。
針對(duì)跨平臺(tái)測(cè)試的問(wèn)題,本文提出了基于視覺(jué)的MBGT方法,利用計(jì)算機(jī)視覺(jué)技術(shù)來(lái)識(shí)別界面進(jìn)行測(cè)試。在視覺(jué)化的測(cè)試框架下,界面往往出現(xiàn)內(nèi)部結(jié)構(gòu)樹(shù)的信息相同但是GUI外觀(文本、圖像等)大相徑庭的情況,給相同功能的界面識(shí)別帶來(lái)了困難。一方面容易造成狀態(tài)空間爆炸,另一方面易于產(chǎn)生冗余的界面探索,降低測(cè)試效率。如何區(qū)分具有相同功能的界面,識(shí)別界面狀態(tài)是一個(gè)關(guān)鍵的問(wèn)題。
在圖形用戶界面日益復(fù)雜的情況下,很多研究將深度學(xué)習(xí)與測(cè)試技術(shù)相結(jié)合,能夠更為精準(zhǔn)的識(shí)別GUI控件元素。White等人[4]提出了一種改進(jìn)GUI測(cè)試的技術(shù),將深度學(xué)習(xí)技術(shù)在圖形界面控件識(shí)別中應(yīng)用,用來(lái)引導(dǎo)隨機(jī)測(cè)試,顯著提高了分支覆蓋率。Moran[5]等人結(jié)合了機(jī)器學(xué)習(xí)和計(jì)算機(jī)視覺(jué)方法,通過(guò)KNN生成合適的分層GUI結(jié)構(gòu)來(lái)實(shí)現(xiàn)GUI界面的原型化。
為了解決測(cè)試過(guò)程中狀態(tài)合并困難的問(wèn)題,構(gòu)建更為高效的基于視覺(jué)特征的GUI自動(dòng)測(cè)試方法,本文采用YOLO模型識(shí)別界面控件并設(shè)計(jì)狀態(tài)合并策略,提出了一種基于YOLO的移動(dòng)應(yīng)用自動(dòng)測(cè)試方法。
1? 基于YOLO的移動(dòng)應(yīng)用自動(dòng)測(cè)試框架
為實(shí)現(xiàn)更為高效的基于視覺(jué)的MBGT測(cè)試方法,提出了一種基于YOLO的移動(dòng)應(yīng)用自動(dòng)測(cè)試技術(shù)。首先對(duì)測(cè)試方法框架進(jìn)行介紹,包括狀態(tài)遷移模型、測(cè)試框架;接著介紹了基于YOLOv5的控件識(shí)別方法;最后介紹了基于測(cè)試輸入的相似狀態(tài)合并方法。
該框架以運(yùn)行時(shí)的設(shè)備屏幕圖像為基礎(chǔ),使用視覺(jué)化方法對(duì)界面圖像進(jìn)行分析,通過(guò)識(shí)別圖像的控件區(qū)域,觸發(fā)動(dòng)作來(lái)實(shí)現(xiàn)界面探索測(cè)試,采用多種視覺(jué)方法對(duì)相似的界面狀態(tài)進(jìn)行合并避免探索無(wú)效狀態(tài),從而抽取能夠描述軟件行為的模型。
1.1? 狀態(tài)遷移模型
界面狀態(tài)遷移模型通過(guò)對(duì)當(dāng)前狀態(tài)執(zhí)行測(cè)試輸入實(shí)現(xiàn)狀態(tài)的轉(zhuǎn)換來(lái)進(jìn)行構(gòu)建,其本質(zhì)上是一個(gè)有向圖,定義為G = (S,E),S表示狀態(tài)節(jié)點(diǎn)集合(S = {s1,s2,…,sn}), E表示觸發(fā)狀態(tài)轉(zhuǎn)換的事件集合(E = {e1,e2,…,en})。S中的一個(gè)狀態(tài)需要包含該狀態(tài)對(duì)應(yīng)的屏幕圖像、識(shí)別出的控件組合和合并的狀態(tài)信息。E中的ei = {
1.2? 探索測(cè)試框架
界面模型的抽取主要包括控件識(shí)別、路徑探索、狀態(tài)合并和模型更新四個(gè)階段。如圖2所示,首先獲得GUI設(shè)備指定事件頻率下的屏幕截圖,使用特征提取方法對(duì)屏幕截圖進(jìn)行控件識(shí)別,對(duì)當(dāng)前狀態(tài)的可執(zhí)行動(dòng)作進(jìn)行選擇,實(shí)現(xiàn)路徑探索,得到新的狀態(tài);然后對(duì)新?tīng)顟B(tài)進(jìn)行狀態(tài)識(shí)別,檢索相似GUI狀態(tài),選擇將其作為新?tīng)顟B(tài)還是合并到已有的狀態(tài)中,最后動(dòng)態(tài)更新到界面狀態(tài)模型中,得到該應(yīng)用程序的狀態(tài)遷移模型,該框架最終在基于模型的測(cè)試工具cvrip中進(jìn)行應(yīng)用。
2? 基于YOLOv5的控件識(shí)別
移動(dòng)應(yīng)用界面的控件組成通常較為復(fù)雜,而不同的控件對(duì)應(yīng)了不同的可執(zhí)行操作,如單選框組件僅支持單擊操作。傳統(tǒng)的計(jì)算機(jī)視覺(jué)無(wú)法識(shí)別界面中的基本控件及其類型,因此在測(cè)試過(guò)程中,同一個(gè)控件需要進(jìn)行多次路徑探索并對(duì)新?tīng)顟B(tài)進(jìn)行識(shí)別合并,這些冗余操作嚴(yán)重影響了測(cè)試的效率。
為了解決上述問(wèn)題,本文采用YOLOv5模型實(shí)現(xiàn)對(duì)界面圖像中的控件識(shí)別,在大型數(shù)據(jù)集Rico[6]中進(jìn)行訓(xùn)練,其包括了6萬(wàn)多個(gè)移動(dòng)應(yīng)用的GUI截圖,每個(gè)GUI對(duì)應(yīng)了詳細(xì)的視圖層次結(jié)構(gòu)(包括控件元組的屬性、位置等信息)。由于Rico數(shù)據(jù)集中控件元素的種類眾多,篩選后的控件識(shí)別范圍主要為圖像、圖像按鈕、單選框、多選框、編輯框、列表選擇框、狀態(tài)開(kāi)關(guān)按鈕、拖動(dòng)條這些UI基本組件。將篩選后的有效屏幕截圖和對(duì)應(yīng)層次結(jié)構(gòu)信息作為模型輸入并進(jìn)行訓(xùn)練驗(yàn)證后,得到的模型輸出包括每個(gè)候選框的坐標(biāo)(x,y,w,h)、置信度、條件類別的概率以及識(shí)別的控件類型。其中x和y表示候選框的中心坐標(biāo),w和h表示候選框的寬和高,識(shí)別效果如圖3所示。
3? 界面狀態(tài)合并
在當(dāng)前狀態(tài)中識(shí)別出的空間進(jìn)行動(dòng)作觸發(fā)得到新的狀態(tài)后,該狀態(tài)可能與狀態(tài)空間中的已有狀態(tài)相同,因此需要將其與已有狀態(tài)進(jìn)行比較,判斷其是否屬于已有狀態(tài)再進(jìn)行合并。在GUI測(cè)試過(guò)程中,狀態(tài)與狀態(tài)之間存在不同程度的相似與差異,導(dǎo)致了界面結(jié)構(gòu)相同,但是由于顏色、界面中ImageView等干擾使得界面狀態(tài)合并存在一定的困難。
為了解決以上問(wèn)題,本文提出了基于測(cè)試輸入的相似狀態(tài)合并方法。GUI測(cè)試輸入主要分為兩類,即點(diǎn)擊、長(zhǎng)按、滑動(dòng)等對(duì)控件本身的屬性進(jìn)行探索的事件輸入以及輸入賬號(hào)密碼、計(jì)算器這類非固定的文本輸入。事件輸入觸發(fā)的新?tīng)顟B(tài)通過(guò)檢索已有的相似狀態(tài)來(lái)進(jìn)行合并。文本輸入觸發(fā)的新?tīng)顟B(tài)存在兩種情況,一種是仍處于當(dāng)前狀態(tài)界面中,這時(shí)的新?tīng)顟B(tài)觸發(fā)鍵盤輸入,與之前狀態(tài)仍屬于相同狀態(tài),應(yīng)該合并到同一狀態(tài)中;另一種是觸發(fā)搜索界面,這時(shí)界面狀態(tài)與原始狀態(tài)界面結(jié)構(gòu)完全不一致。對(duì)于文本輸入,通過(guò)將屏幕圖像與鍵盤模板采用SIFT特征匹配來(lái)進(jìn)行識(shí)別,裁剪識(shí)別出的鍵盤區(qū)域后,對(duì)剩余界面進(jìn)行識(shí)別并與前一狀態(tài)比較,如設(shè)定相似度閾值為0.8,若相似度高于0.8則合并狀態(tài);若不相似則查詢已有的相似狀態(tài),已有狀態(tài)集合中也不存在相似狀態(tài)時(shí)則將其列為新?tīng)顟B(tài),流程圖如圖4所示。
采用YOLO方法對(duì)界面狀態(tài)進(jìn)行控件識(shí)別后,得到了形式如[(x,y,w,h),conf,pred,classi]的模型輸出,下文介紹本文采取的相似狀態(tài)識(shí)別步驟。
3.1? 計(jì)算交并比
IoU算法全稱為交并比算法,計(jì)算的是“預(yù)測(cè)的邊框”和“真實(shí)的邊框”的交集和并集的比值,本文表示兩個(gè)狀態(tài)的邊框的交并比。設(shè)屏幕圖像P識(shí)別到m個(gè)控件,屏幕圖像Q識(shí)別到n個(gè)控件,針對(duì)P中第i個(gè)控件和Q中第j個(gè)控件的邊界框計(jì)算交集面積,計(jì)算方式如下:
式中:S(i, j)為控件i與j的邊界框交集的面積,(x +w)min,(i, j)為控件i與j的邊界框交集的右上角橫坐標(biāo),xmax,(i, j)為控件i與j的邊界框交集的左下角橫坐標(biāo),( y+h)min,(i, j)為控件i與j的邊界框交集的右上角縱坐標(biāo),ymax,(i, j)為控件i與j的邊界框交集的左下角縱坐標(biāo)。
當(dāng)兩個(gè)狀態(tài)存在相似時(shí),其控件不僅位置相同,類型也一定相同,因此當(dāng)獲取到交并比后,需要對(duì)其類型進(jìn)行判斷。若類型不相同則交并比為0,若類型相同則交并比不變,越接近于1,則兩個(gè)特征之間越相似,計(jì)算方式如下:
式中:R(i, j)為控件i與控件j的類型結(jié)合交并比,S(i, j)為控件i與控件j的邊界框交集的面積,D(i, j)為控件i與控件j的類型判斷函數(shù),w和h分別為邊界框的寬和高,ci為控件i的控件類型,cj為控件j的控件類型。
3.2? 計(jì)算平均表面距離
以結(jié)合控件類型計(jì)算后的交并比作為距離度量,尋找對(duì)應(yīng)圖像P中的每個(gè)控件距離最近的圖像Q中的控件,并統(tǒng)計(jì)所有距離后取均值,得到圖像P和圖像Q的狀態(tài)相似度,計(jì)算方式為:
式中:LP為圖像P中每個(gè)控件對(duì)應(yīng)的最近距離集合,WP為圖像P中檢測(cè)到的控件集合,Rmin, (i, j)為控件i與控件j的類型結(jié)合交并比,EASD為圖像P與Q的狀態(tài)相似度。
4? 實(shí)驗(yàn)與分析
為檢驗(yàn)提出基于YOLO的移動(dòng)應(yīng)用自動(dòng)測(cè)試方法的狀態(tài)合并效果,本文通過(guò)設(shè)計(jì)實(shí)驗(yàn)回答如下問(wèn)題。
RQ:提出的基于視覺(jué)的狀態(tài)合并方法在GUI內(nèi)部結(jié)構(gòu)樹(shù)的不同層次上識(shí)別效果如何?
GUI內(nèi)部結(jié)構(gòu)樹(shù)的標(biāo)準(zhǔn)由Baek[3]等人提出,用于為模型的生成提供多個(gè)抽象級(jí)別的選擇來(lái)緩解基于模型的測(cè)試過(guò)程中狀態(tài)爆炸的問(wèn)題。因此在基于視覺(jué)的MBGT技術(shù)過(guò)程中,在不同層次結(jié)構(gòu)均能實(shí)現(xiàn)較高的狀態(tài)合并率,則說(shuō)明在實(shí)際應(yīng)用該探索策略造成的狀態(tài)空間爆炸的可能性越低。
實(shí)驗(yàn)選取了6個(gè)商業(yè)應(yīng)用,通過(guò)內(nèi)部結(jié)構(gòu)樹(shù)對(duì)應(yīng)的activity、layout、widget、content層次分別對(duì)其分類準(zhǔn)確率進(jìn)行實(shí)驗(yàn),并選擇均值哈希方法進(jìn)行對(duì)比驗(yàn)證。
由表1結(jié)果可知,基于YOLO的移動(dòng)應(yīng)用自動(dòng)測(cè)試方法在6個(gè)商業(yè)應(yīng)用中均能實(shí)現(xiàn)良好的狀態(tài)相似性判斷,且在不同層次結(jié)構(gòu)上的整體表現(xiàn)優(yōu)于均值哈希方法。
5? 結(jié)? 論
本文提出了一個(gè)基于YOLO的移動(dòng)應(yīng)用自動(dòng)測(cè)試方法,解決了基于模型的GUI測(cè)試在跨平臺(tái)方面的不足,幫助構(gòu)建更為高效的基于視覺(jué)特征的GUI自動(dòng)測(cè)試方法,避免狀態(tài)冗余探索。本文提出的方法實(shí)現(xiàn)了對(duì)相似狀態(tài)的識(shí)別與合并,但是并沒(méi)有避免不同控件觸發(fā)的新?tīng)顟B(tài)結(jié)構(gòu)相似的情況,這些控件在界面中也具備某些相似特征。因此在后續(xù)工作中,可以通過(guò)對(duì)界面中相似控件的識(shí)別與合并進(jìn)一步避免重復(fù)探索,提高模型構(gòu)建效率。
參考文獻(xiàn):
[1] LI Y,YANG Z,GUO Y,et al. DroidBot:a lightweight UI-Guided test input generator for android [C]//2017 IEEE/ACM 39th International Conference on Software Engineering Companion (ICSE-C).Buenos:IEEE,2017:23-26.
[2] CAI T Q. Fastbot-Android Open Source Handbook [M].Washington:Bytedance Inc.,2023.
[3] BAEK Y M,BAE D H. Automated model-based Android GUI testing using multi-level GUI comparison criteria [C]//2016 31st IEEE/ACM International Conference on Automated Software Engineering (ASE).Singapore:IEEE,2016:238-249.
[4] WHITE T D,F(xiàn)RASER G,BROWN G J. Improving random GUI testing with image-based widget detection [C]//ISSTA 2019:Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis.New York:ACM,2019:307-317.
[5] MORAN K,BERNAL-C?RDENAS C,CURCIO M,et al. Machine Learning-Based Prototyping of Graphical User Interfaces for Mobile Apps [J].IEEE Transactions on Software Engineering,2020,46(2):196-221.
[6] DEKA B,HUANG Z,F(xiàn)RANZEN C. Rico:A Mobile App Dataset for Building Data-Driven Design Applications [C]//UIST '17:Proceedings of the 30th Annual ACM Symposium on User Interface Software and Technology.New York,2017:845-854.
[7] REDMON J,DIVVALA S,GRISHICK R. You Only Look Once:Unified,Real-Time Object Detection [C]//2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR).Las Vegas:IEEE,2016:779-788.
[8] JIANG B,ZHANG Y,CHAN W K,et al. A Systematic Study on Factors Impacting GUI Traversal-Based Test Case Generation Techniques for Android Applications [J]. IEEE Transactions on Reliability,2019,68(3):913–926.
[9] GU T,SUN C,MA X,et al. Practical GUI Testing of Android Applications Via Model Abstraction and Refinement [C]//2019 IEEE/ACM 41st International Conference on Software Engineering (ICSE).Montreal:IEEE,2019:269–280.
[10] YAN J,WU T,YAN J. Widget-Sensitive and Back-Stack-Aware GUI Exploration for Testing Android Apps [C]//2017 IEEE International Conference on Software Quality,Reliability and Security (QRS).PRAGUE:IEEE,2017:42-53.
作者簡(jiǎn)介:王寅(1999—),女,漢族,江蘇鹽城人,碩士在讀,研究方向:軟件測(cè)試。