薛峰, 武君勝, 張濤, 王威, 成靜
1.西北工業(yè)大學(xué) 計(jì)算機(jī)學(xué)院, 陜西 西安 710072; 2.西北工業(yè)大學(xué) 軟件學(xué)院, 陜西 西安 710072;3.西安工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院, 陜西 西安 710021
隨著移動(dòng)應(yīng)用的日益普及和快速發(fā)展,移動(dòng)應(yīng)用測(cè)試正面臨嚴(yán)峻的挑戰(zhàn)[1-4]。首先,移動(dòng)應(yīng)用存在基于Android、iOS、Windows Mobile以及Mobile Web等平臺(tái)的多樣化開發(fā)模式,但卻缺乏支持多平臺(tái)應(yīng)用的通用化測(cè)試方法與測(cè)試工具。其次,移動(dòng)設(shè)備品牌、型號(hào)眾多,操作系統(tǒng)版本繁雜,其面臨嚴(yán)重的碎片化問題,并很難達(dá)成有效且全面的測(cè)試。并且,移動(dòng)設(shè)備提供了更加豐富的人機(jī)交互方式,例如,手勢(shì)、語音,以及重力、加速度、光等多種傳感器,使得其輸入復(fù)雜,加劇移動(dòng)應(yīng)用測(cè)試難度。最后,移動(dòng)市場(chǎng)競(jìng)爭(zhēng)日益激烈,移動(dòng)應(yīng)用版本更新頻繁,開發(fā)廠商普遍缺乏足夠的時(shí)間、人員、設(shè)備、工具等測(cè)試資源。
為應(yīng)對(duì)上述測(cè)試難題,學(xué)術(shù)界與工業(yè)界持續(xù)投入對(duì)移動(dòng)應(yīng)用自動(dòng)化測(cè)試方法的研究。當(dāng)前的自動(dòng)化測(cè)試方法主要包括:基于腳本的測(cè)試方法通過構(gòu)建自動(dòng)化測(cè)試框架將人工編寫的測(cè)試腳本轉(zhuǎn)換為模擬的事件流實(shí)現(xiàn)對(duì)測(cè)試動(dòng)作在移動(dòng)應(yīng)用上的模擬執(zhí)行[5-6];基于錄制回放的測(cè)試方法將人工測(cè)試的過程進(jìn)行錄制進(jìn)而通過回放重用該執(zhí)行過程[7-8];基于模型的自動(dòng)化測(cè)試方法通過對(duì)被測(cè)應(yīng)用進(jìn)行定義和遍歷將應(yīng)用的功能行為構(gòu)建成為一種有限狀態(tài)機(jī)模型實(shí)現(xiàn)測(cè)試用例的自動(dòng)生成[9-10];另有通過挖掘已有測(cè)試用例并對(duì)比應(yīng)用功能的相似性實(shí)現(xiàn)測(cè)試用例的重用[11-12]。此外,隨著機(jī)器人技術(shù)的發(fā)展,一些采用機(jī)械臂執(zhí)行移動(dòng)應(yīng)用測(cè)試的方法被提出[13-14],即利用機(jī)械臂替代傳統(tǒng)模擬事件流的測(cè)試執(zhí)行,提供一種更真實(shí)的測(cè)試手段;同時(shí),解決移動(dòng)應(yīng)用與外部交互的測(cè)試問題,如利用機(jī)械臂對(duì)拍照應(yīng)用進(jìn)行防抖動(dòng)測(cè)試[15]。基于機(jī)器人的測(cè)試可作為一種完全的黑盒測(cè)試方法支持跨平臺(tái)、跨設(shè)備的應(yīng)用測(cè)試。
從上述各類測(cè)試方法研究中可以看出移動(dòng)應(yīng)用測(cè)試通常緊密圍繞于GUI狀態(tài)的判斷,進(jìn)而引導(dǎo)測(cè)試動(dòng)作交互完成測(cè)試。然而,當(dāng)前的自動(dòng)化測(cè)試卻始終面臨一個(gè)關(guān)鍵性的問題即移動(dòng)應(yīng)用狀態(tài)空間的爆炸[16]。在移動(dòng)應(yīng)用中通常存在大量的同構(gòu)GUI,即GUI的外觀(文本、圖像、顏色、大小)不同,但功能、結(jié)構(gòu)以及內(nèi)在邏輯關(guān)系相同的GUI。例如,購物類應(yīng)用每個(gè)商品的展示頁面,其GUI結(jié)構(gòu)相同但內(nèi)容不同。在開發(fā)層面,它們均通過同一代碼段加載實(shí)現(xiàn)。顯然,對(duì)移動(dòng)應(yīng)用中的每一同構(gòu)GUI進(jìn)行探索或測(cè)試是十分低效的。甚至,當(dāng)應(yīng)用存在大量的同構(gòu)GUI時(shí),將最終導(dǎo)致應(yīng)用狀態(tài)空間的爆炸,引發(fā)測(cè)試的失敗。
因此,在自動(dòng)化測(cè)試方法中,同構(gòu)GUI的識(shí)別與精簡對(duì)提升測(cè)試效率至關(guān)重要。而當(dāng)前測(cè)試方法在同構(gòu)GUI的判斷上,一方面通過分析GUI布局文件獲取由GUI組件構(gòu)成的GUI樹,從而比較相似度;另一方面直接通過對(duì)GUI或GUI元素圖像進(jìn)行像素比較完成相似判斷。但是采用上述方式仍然使得GUI的判斷與GUI屬性相關(guān)聯(lián),即使在GUI發(fā)生微小的變化時(shí)也會(huì)引發(fā)判斷的失效。例如,一個(gè)列表中內(nèi)容的重新排序,或者在版本更新后GUI元素的位置或樣式發(fā)生略微變動(dòng)均會(huì)影響判斷。然而,在人工測(cè)試中,因?yàn)榭梢赃M(jìn)行充分抽象化的GUI比較,所以并不受限于這些影響。
針對(duì)上述問題,本文提出一種基于GUI視覺信息的相似度抽象判斷方法,即從視覺角度出發(fā)通過提取GUI結(jié)構(gòu)框架,保留GUI元素類別、布局等關(guān)鍵信息,剝離GUI元素樣式、內(nèi)容等非必要屬性信息,以實(shí)現(xiàn)一種從布局結(jié)構(gòu)出發(fā)的高度抽象化的移動(dòng)應(yīng)用同構(gòu)GUI判斷。
移動(dòng)應(yīng)用同構(gòu)GUI視覺判斷方法的處理過程如圖1所示。當(dāng)從被測(cè)應(yīng)用獲取到當(dāng)前的GUI圖像時(shí),首先通過GUI視覺抽象處理識(shí)別GUI圖像中的組件元素并生成GUI結(jié)構(gòu)框架,完成對(duì)GUI結(jié)構(gòu)的提取;其次,利用一個(gè)自編碼器模型得到GUI框架的視覺特征;最后,通過與GUI特征庫中已知被測(cè)應(yīng)用的GUI特征進(jìn)行相似度計(jì)算判斷該GUI是否為同構(gòu)GUI。倘若其為非同構(gòu)GUI(即一個(gè)新的GUI)則將該特征加入特征庫中并繼續(xù)執(zhí)行對(duì)該GUI的測(cè)試。倘若該GUI為同構(gòu)GUI,則跳過該GUI的測(cè)試(說明之前已測(cè)試同類型GUI),優(yōu)化測(cè)試過程。本節(jié)將給出移動(dòng)應(yīng)用同構(gòu)GUI視覺判斷方法各處理部分的詳細(xì)實(shí)現(xiàn)。

圖1 移動(dòng)應(yīng)用同構(gòu)GUI視覺判斷處理過程
移動(dòng)應(yīng)用GUI通常由豐富的組件元素構(gòu)成,因此在移動(dòng)應(yīng)用GUI的視覺判斷研究中,首先解決對(duì)GUI組件元素的視覺定位與識(shí)別。GUI界面從布局結(jié)構(gòu)上通常為一個(gè)樹形結(jié)構(gòu),由容器類組件包含基本組件所構(gòu)成。然而,從視覺角度出發(fā),使用者更關(guān)注于界面上直觀的基本元素以及其所能執(zhí)行的操作。因此在GUI元素的視覺識(shí)別上將聚焦于對(duì)基本組件元素的識(shí)別。此外,在一個(gè)GUI圖像中,容器類組件一般自身并未有明顯的視覺特征,而是由基本組件所組合而成。因此,識(shí)別基本組件并未丟失掉容器類組件的視覺表示信息。
本文采用目標(biāo)檢測(cè)技術(shù)完成對(duì)GUI組件元素的視覺識(shí)別。首先,在移動(dòng)應(yīng)用GUI目標(biāo)檢測(cè)數(shù)據(jù)集的準(zhǔn)備方面,基于已有的大型GUI界面數(shù)據(jù)集RICO[17]開展,其具有涵蓋多個(gè)類別的6萬幅移動(dòng)應(yīng)用GUI截屏,且每個(gè)截屏配備一個(gè)GUI層次結(jié)構(gòu)文件(包含GUI中各組件所屬類及位置信息)。在充分考慮組件特性和視覺特征的前提下,將識(shí)別組件類別分為文本、圖像、圖形按鈕、文字按鈕、文本框、多選框、復(fù)選框、切換按鈕、拖動(dòng)條。進(jìn)而利用RICO提供的GUI層次結(jié)構(gòu)文件,編寫轉(zhuǎn)換程序,完成其向目標(biāo)檢測(cè)所需標(biāo)注文件的過濾與轉(zhuǎn)換,通過自動(dòng)化的標(biāo)注方式完成移動(dòng)應(yīng)用GUI目標(biāo)檢測(cè)數(shù)據(jù)集的建立。
其次,開展目標(biāo)檢測(cè)算法對(duì)GUI組件元素的識(shí)別訓(xùn)練。為進(jìn)一步降低單個(gè)模型檢測(cè)出現(xiàn)的漏檢等問題并優(yōu)化識(shí)別精度,本文基于移動(dòng)應(yīng)用GUI目標(biāo)檢測(cè)數(shù)據(jù)集分別訓(xùn)練3種目標(biāo)檢測(cè)模型(YOLO[18]、SSD[19]、RetinaNet[20]),并采用并行投票策略完成GUI組件元素識(shí)別。
最后,依據(jù)GUI組件元素識(shí)別結(jié)果生成GUI結(jié)構(gòu)框架圖,抽象表示出GUI結(jié)構(gòu)。GUI框架圖常用于GUI的設(shè)計(jì)與開發(fā)中[21-22],是一種對(duì)GUI結(jié)構(gòu)的表示方法。本文針對(duì)GUI組件元素類型,以不同的顏色標(biāo)識(shí)其類別,生成GUI框架圖。將GUI表示為GUI框架圖的目的在于:①剝離掉GUI元素樣式、大小、形狀的差異性,提取GUI 的結(jié)構(gòu)表示信息;②可以簡化圖像對(duì)比的計(jì)算復(fù)雜度。GUI結(jié)構(gòu)框架生成過程如圖2所示。

圖2 移動(dòng)應(yīng)用GUI結(jié)構(gòu)框架生成
在生成GUI結(jié)構(gòu)框架后,利用構(gòu)建自編碼器模型繼續(xù)提取GUI結(jié)構(gòu)視覺特征。自編碼器(AutoEncoder)是一種經(jīng)典的無監(jiān)督學(xué)習(xí)方法,其面向高維復(fù)雜數(shù)據(jù)處理,通過使用反向傳播算法讓目標(biāo)值等于輸入值。例如,自編碼器可以通過編碼器生成圖像的特征向量,再通過解碼器依據(jù)特征向量生成目標(biāo)圖像。通過比較原圖像與生成圖像的差異,無監(jiān)督地完成圖像特征向量的準(zhǔn)確生成。
傳統(tǒng)的自編碼器容易造成數(shù)據(jù)在固定空間內(nèi)的堆疊,導(dǎo)致關(guān)鍵信息的丟失,因此本文采用一種卷積自編碼器[23]盡可能保留圖像特征。即在自編器的結(jié)構(gòu)上利用卷積層替代全連接層從而更好地完成圖像特征的提取。
本文定義的卷積自編碼器結(jié)構(gòu)如圖3所示,包括編碼器和解碼器兩部分。編碼器由卷積層和池化層組成,負(fù)責(zé)完成對(duì)輸入GUI框架圖的壓縮。經(jīng)過4組卷積與池化層后的隱藏層即為可提取的GUI框架圖特征向量。解碼器與編碼過程相對(duì),通過4組卷積層和上采樣層,對(duì)壓縮數(shù)據(jù)進(jìn)行復(fù)原重建輸入圖像。自編碼器經(jīng)過反復(fù)編碼與解碼的迭代訓(xùn)練,逐步提高自編碼精度,直至解碼后的數(shù)據(jù)和輸入數(shù)據(jù)的差距逐漸減少并趨于平穩(wěn)。當(dāng)完成自編碼器的訓(xùn)練,編碼器則可以提取任意輸入GUI框架圖視覺特征。下面給出本文卷積自編器的詳細(xì)設(shè)計(jì)。

圖3 基于卷積自編碼器的GUI視覺特征提取
1) 數(shù)據(jù)預(yù)處理
GUI框架圖在輸入到卷積自編碼器之前,首先進(jìn)行歸一化處理以提高自編碼器模型訓(xùn)練性能,加速收斂。采用Min-Max標(biāo)準(zhǔn)的歸一化方法,把原始數(shù)據(jù)從[0,255]歸一化到標(biāo)準(zhǔn)的[0,1]范圍內(nèi),如(1)式所示。

(1)
式中:ni為規(guī)范化的第i個(gè)數(shù)據(jù),值為[0,1]之間;mi為未規(guī)劃前的數(shù)據(jù);mmin為原數(shù)據(jù)中的最小值;mmax為原數(shù)據(jù)中的最大值。
2) 編碼器設(shè)計(jì)
編碼器包括卷積層和池化層,對(duì)輸入數(shù)據(jù)進(jìn)行特征提取和壓縮。編碼器由4個(gè)卷積和4個(gè)池化構(gòu)成。卷積層的功能用于提取和融合輸入圖像特征,它不識(shí)別整個(gè)圖像而是通過局部感知來捕獲圖像中的每個(gè)特征,然后在更高層次上對(duì)本地信息進(jìn)行綜合運(yùn)算得到全局信息。利用生成的GUI框架圖作為輸入數(shù)據(jù),其維度為128×128×3。編碼器4個(gè)卷積,依次使用64,32,16,8個(gè)大小為3×3的卷積核,步長默認(rèn)為1,填充設(shè)置為相同。此外,選擇ReLU(校正線性單元層)作為激活函數(shù),進(jìn)行卷積層線性運(yùn)算到GUI結(jié)構(gòu)視覺特征輸出的非線性映射。
在卷積層提取到GUI框架特征后,輸出特征將被傳送到編碼器的池化層進(jìn)行特征選擇和信息過濾。池化層用于對(duì)特征圖進(jìn)行下采樣處理,在保留重要信息的前提下快速降低特征維度以減少計(jì)算量,并避免過擬合提高模型的容錯(cuò)性。經(jīng)過第一層卷積后,數(shù)據(jù)維度由原來的128×128×3變?yōu)?28×128×64。池化操作不改變數(shù)據(jù)的深度,所以池化后的數(shù)據(jù)維度為64×64×64。池化層對(duì)每層卷積結(jié)果進(jìn)行2×2最大池化操作,步長為2。經(jīng)過4層卷積和池化操作,得到隱藏層的壓縮表示。
3) 解碼器設(shè)計(jì)
編碼器對(duì)GUI結(jié)構(gòu)視覺特征進(jìn)行提取和壓縮后,進(jìn)一步使用解碼器對(duì)特征進(jìn)行反卷積操作以獲得與輸入數(shù)據(jù)相同的大小。解碼器由4個(gè)上采樣和4個(gè)卷積構(gòu)成。采用的反卷積操作由第一步上采樣和第二步正常的卷積操作組成,即通過上采樣將特征圖像擴(kuò)大,再進(jìn)行卷積操作而完成反卷積過程。上采樣采用最近鄰插值方法進(jìn)行,即尋找插入位置的最鄰近數(shù)據(jù)作為其數(shù)據(jù)插入。解碼器中上采樣每層使用大小為2×2,步長為2的操作,卷積層依次使用8,16,32,64個(gè)大小為3×3的卷積核,步長設(shè)置為1,填充設(shè)置為相同,與編碼器的卷積層相對(duì)應(yīng)。
4) 損失層
損失層用于確定在訓(xùn)練過程中如何減少網(wǎng)絡(luò)預(yù)測(cè)結(jié)果和實(shí)際結(jié)果之間的差異。損失函數(shù)值越小,模型擬合越好。在本文的卷積自編碼器中,采用均方根誤差作為損失函數(shù)計(jì)算輸入GUI框架原圖與重建框架圖之間的差異。損失函數(shù)如(2)式所示。

(2)
式中:n為輸入的圖片數(shù)量;xi為輸入第i個(gè)圖片;f(xi)為重建的第i個(gè)圖片。在訓(xùn)練過程中,GUI框架原圖像和重建圖像之間的差異將不斷減小,直到模型收斂。完成訓(xùn)練后,原圖像的壓縮編碼數(shù)據(jù)即為GUI結(jié)構(gòu)的視覺特征。
提取到GUI框架的視覺特征后,進(jìn)一步通過計(jì)算GUI框架特征的距離度量判斷GUI相似情況。本文采用JS散度進(jìn)行GUI特征的距離度量。
JS(Jensen-Shannon)散度是機(jī)器學(xué)習(xí)中經(jīng)常用來衡量隨機(jī)分布之間相似度的方法。任意2個(gè)GUI隨機(jī)分布使用以2為底的對(duì)數(shù),JS散度范圍為[0,1],即GUI相似度范圍在[0,1]之間。JS散度越小GUI越相似,即JS散度值為0時(shí),2個(gè)GUI完全一樣,JS散度值為1時(shí),2個(gè)GUI沒有重疊的地方。JS散度定義為(3)式。
(3)
式中:J(G1,G2)為2個(gè)GUI相似度值;G1和G2為2個(gè)GUI特征集合;n為GUI分布數(shù)量即每個(gè)GUI特征向量個(gè)數(shù),本文取n=512;g1i為G1的GUI集合中第i個(gè)隨機(jī)值;g2i為G2的GUI集合中第i個(gè)隨機(jī)值。
GUI相似判斷算法如算法1所示。g1作為已知GUI結(jié)構(gòu)特征,g2為當(dāng)前探索到某一GUI特征。利用JS散度計(jì)算出各維度的相似情況,并通過閾值判斷是否相似。最后,返回與g2相似的GUI信息(相似GUI,相似度,是否同構(gòu))。
在計(jì)算JS散度時(shí),某一特征數(shù)據(jù)為0時(shí)為避免計(jì)算錯(cuò)誤,將其設(shè)置為一個(gè)極小值10-7。此外,因JS散度越小GUI越相似,為直觀體現(xiàn)相似性結(jié)果,用1減去散度作為相似判斷結(jié)果。
算法1GUI相似判斷
輸入:已知GUI特征向量集合G,當(dāng)下的GUI特征向量g2
輸出:相似GUI信息P
1Jsm=0
2 for eachg1inGdo
3j←getJSDivergence(g1,g2)
4 ifj>threshold then
5P←getJudgeInfo(g1,j,1)
6 returnP
7 else ifj>Jsmthen
8Jsm=j
9P←getJudgeInfo(g1,j,0)
10 end if
11 end for
12 returnP
至此,通過視覺技術(shù)生成GUI結(jié)構(gòu)框架,利用自編碼器提取GUI框架特征,再比較GUI框架特征相似度完成同構(gòu)GUI的視覺判斷。
為驗(yàn)證本文提出的移動(dòng)應(yīng)用同構(gòu)GUI視覺判斷方法的有效性,分別開展GUI視覺特征提取的準(zhǔn)確性驗(yàn)證,同構(gòu)GUI判斷的有效性驗(yàn)證以及同構(gòu)GUI判斷對(duì)比驗(yàn)證。
為驗(yàn)證GUI視覺特征提取的準(zhǔn)確性,從RICO數(shù)據(jù)集中選取1 000張GUI并生成其GUI框架圖作為特征提取數(shù)據(jù)集,其中,800張作為訓(xùn)練集,200張作為測(cè)試集。卷積自編碼器輸入128×128×3結(jié)構(gòu)的圖像數(shù)據(jù),首先進(jìn)行歸一化處理,其次經(jīng)過編碼器的卷積、最大池化和解碼器中的上采樣、卷積處理,最后再經(jīng)過一次卷積后恢復(fù)為輸入的圖片尺寸。使用Adam優(yōu)化算法作為網(wǎng)絡(luò)優(yōu)化參數(shù),優(yōu)化訓(xùn)練。批處理大小(batch-size)設(shè)置為32,迭代輪次(epochs)設(shè)置為2 000。訓(xùn)練環(huán)境采用NVIDA GeForce GTX 2080 GPU,基于pycharm訓(xùn)練平臺(tái)的keras深度學(xué)習(xí)框架。在模型訓(xùn)練結(jié)束后,輸入測(cè)試集進(jìn)行GUI框架視覺特征提取驗(yàn)證。最后提取的每張圖像壓縮后的數(shù)據(jù)大小為8×8×8=512個(gè)特征。卷積自編碼器模型結(jié)構(gòu)如表1所示。
模型的訓(xùn)練結(jié)果如圖4所示。模型的損失函數(shù),在訓(xùn)練集和測(cè)試集上分別收斂于0.02和0.03,模型精度分別為0.83和0.81。
GUI框架原圖和由卷積自編碼器重建框架圖像對(duì)比如圖5所示,重建圖像與原圖像越相似說明GUI特征提取的越準(zhǔn)確。從圖5中可以直觀地看到,重建圖像與原圖具有較高的相似度,因此本文的卷積自編碼器能夠準(zhǔn)確地提取GUI框架視覺特征。

表1 卷積自編碼器模型結(jié)構(gòu)

圖4 模型訓(xùn)練結(jié)果

圖5 GUI框架原圖與重建圖對(duì)比
為進(jìn)一步驗(yàn)證同構(gòu)GUI判斷的有效性,額外選取包含同構(gòu)GUI的100張GUI進(jìn)行實(shí)驗(yàn)。其中,前50張作為已知GUI,后50張為需要判斷的GUI。圖6a)所示為真實(shí)值,對(duì)角線表示對(duì)應(yīng)的圖像為同構(gòu)GUI,其他區(qū)域?yàn)榉峭瑯?gòu)GUI。對(duì)角線上網(wǎng)格的大小代表該同構(gòu)界面的數(shù)量,同構(gòu)界面數(shù)量越多網(wǎng)格越大。利用文本方法將后50張GUI分別與前50張GUI進(jìn)行共計(jì)2 500次判斷計(jì)算。

圖6 GUI相似度判斷驗(yàn)證結(jié)果
圖6b)所示為前后2組GUI之間的相似度計(jì)算結(jié)果,設(shè)置相似度閾值為0.9,大于為同構(gòu)GUI,小于為非同構(gòu)GUI。圖中顏色越深,表示相似度值越高。對(duì)比圖6a)中同構(gòu)GUI的真實(shí)值,在圖6b)中可以明顯看出大于0.9的同構(gòu)GUI和真實(shí)值GUI所在位置基本一致,而小于0.9的非同構(gòu)GUI所在位置總體為淺色和白色所覆蓋。對(duì)角線同構(gòu)界面的顏色明顯,且網(wǎng)格大小與真實(shí)值相近。因此,實(shí)驗(yàn)表明本文方法能夠依據(jù)視覺信息正確判斷同構(gòu)GUI。
然而,結(jié)果仍然存在一些誤差的原因主要在于:一方面,在方法層面,視覺判斷方法依賴于目標(biāo)檢測(cè)等視覺處理模型精度,例如GUI組件的類別錯(cuò)誤檢測(cè)或漏檢均會(huì)影響相似度計(jì)算結(jié)果;另一方面,在GUI的特性層面,GUI具備豐富的視覺特征和靈活的設(shè)計(jì)風(fēng)格,應(yīng)用界面內(nèi)容的多樣化會(huì)影響同構(gòu)判斷。
另外,分別與傳統(tǒng)的3種圖像哈希算法進(jìn)行對(duì)比實(shí)驗(yàn)。哈希算法為圖像分配唯一的哈希值,并通過對(duì)比圖像的哈希值判斷相似度,結(jié)果越接近則圖像越相似。選擇差值哈希算法、感知哈希算法、均值哈希算法3種基于哈希的圖像相似度比較算法進(jìn)行對(duì)比驗(yàn)證。通過構(gòu)建GUI灰度圖像并計(jì)算比較哈希值完成。
利用準(zhǔn)確率、精確率、召回率、F1值進(jìn)行結(jié)果的評(píng)估分析。各方法表現(xiàn)如圖7所示。

圖7 對(duì)比驗(yàn)證結(jié)果
對(duì)比實(shí)驗(yàn)結(jié)果表明,盡管4種方法的準(zhǔn)確率均大于0.9,但本文方法達(dá)到最高的準(zhǔn)確率0.987 2。而在精確率、召回率、F1值評(píng)價(jià)指標(biāo)上,本文方法均達(dá)到0.8以上,其效果遠(yuǎn)優(yōu)于其他方法。本文因采用對(duì)GUI的高度抽象進(jìn)而再相似比較,相較于其他方法有效屏蔽了GUI樣式、內(nèi)容等屬性所帶來的干擾影響,能夠更為精準(zhǔn)地捕捉同構(gòu)GUI。
上述實(shí)驗(yàn)驗(yàn)證表明,本文提出的基于視覺的移動(dòng)應(yīng)用同構(gòu)識(shí)別方法已經(jīng)達(dá)到了較高的識(shí)別精度。利用視覺判斷同構(gòu)GUI與傳統(tǒng)非視覺的判斷方法(例如,GUI樹比較判斷)相比較存在如下優(yōu)劣:①視覺判斷方法通過應(yīng)用GUI外在視覺表示信息進(jìn)行判斷,而非視覺方法則依賴于應(yīng)用內(nèi)部組件組成信息。因此,視覺判斷方法可以作為一種支持跨平臺(tái)或黑盒測(cè)試的通用方法,而非視覺判斷方法則更針對(duì)單一平臺(tái)應(yīng)用或白盒測(cè)試;②視覺判斷方法是針對(duì)GUI抽象結(jié)構(gòu)的判斷,而非視覺判斷方法則是精確的GUI組件及屬性比較。盡管視覺判斷方法受到目標(biāo)檢測(cè)等視覺算法精度的影響,但卻可以屏蔽GUI組件屬性微小改動(dòng)而帶來的判斷失效影響;③視覺判斷方法擁有更高的使用成本。視覺判斷方法需要進(jìn)行多種視覺算法的計(jì)算與訓(xùn)練,需要更高的計(jì)算與時(shí)間投入。綜上分析,本文提出的視覺判斷方法是對(duì)現(xiàn)有同構(gòu)GUI判斷的補(bǔ)充與增強(qiáng),促進(jìn)其在跨系統(tǒng)平臺(tái),設(shè)備非侵入以及純黑盒機(jī)器人測(cè)試等場(chǎng)景下的使用。
本文提出了一種基于視覺的移動(dòng)應(yīng)用同構(gòu)GUI視覺判斷方法,通過利用目標(biāo)檢測(cè)技術(shù)以純視覺方式獲取GUI組件元素從而生成GUI結(jié)構(gòu)框架,并引入卷積自編碼器完成對(duì)GUI結(jié)構(gòu)視覺特征的提取,最后通過散度計(jì)算比較GUI結(jié)構(gòu)視覺特征來判斷GUI相似度,形成一種高度抽象化的GUI判斷分析。實(shí)驗(yàn)表明本文方法能夠準(zhǔn)確地識(shí)別同構(gòu)GUI,促進(jìn)解決移動(dòng)應(yīng)用自動(dòng)化測(cè)試所面臨的狀態(tài)空間爆炸問題。此外,該方法因?yàn)椴灰蕾囉谝苿?dòng)應(yīng)用內(nèi)部信息,可靈活應(yīng)用于現(xiàn)有的自動(dòng)化白盒與黑盒測(cè)試中。
本文方法仍然存在一些可改進(jìn)之處。首先,部分應(yīng)用存在靈活的界面表達(dá)方式,進(jìn)一步復(fù)雜化同構(gòu)界面的自動(dòng)化判斷。除了GUI結(jié)構(gòu)上的比較,加入語義信息將會(huì)增強(qiáng)對(duì)此類多樣化界面的判斷。其次,采用視覺方法識(shí)別GUI存在一定的精度誤差,將視覺判斷方法與非視覺判斷方法相融合將促進(jìn)同構(gòu)界面判斷效果的增強(qiáng)。后續(xù),仍可持續(xù)深入移動(dòng)應(yīng)用GUI在同表示含義,同行為模式上的視覺特征判斷方法研究,進(jìn)一步強(qiáng)化移動(dòng)應(yīng)用測(cè)試中的GUI自動(dòng)化分析與理解。