BIU:基於圖像理解的自動化Bug檢測方法

慕測科技 發佈 2020-01-13T11:06:10+00:00

為了簡化對Bug場景的理解,我們提出了一種稱為BIU的新穎方法,該方法使用圖像理解技術來幫助眾測工人自動檢測Bug並利用Bug截屏生成相關描述。致謝本文由南京大學軟體學院2019 級碩士惲葉霄翻譯轉述。

南京大學智能軟體工程實驗室

iselab.cn

摘要

在移動眾包測試中,眾測工人的水平通常與測試專家相距甚遠,因此提交的測試報告質量低下。由於測試報告很難閱讀,這樣的報告對於審查和理解Bug毫無幫助。為了簡化對Bug場景的理解,我們提出了一種稱為BIU(Bug Image Understanding,Bug圖像理解)的新穎方法,該方法使用圖像理解技術來幫助眾測工人自動檢測Bug並利用Bug截屏生成相關描述。這樣,可以減輕群眾工作人員的負擔,大大提高工作效率和測試報告的質量。我們的貢獻如下。

(1)我們基於一種新穎的圖像理解技術,提出了一種稱為BIU的Bug檢測方法。它會根據給定的截屏生成適當的Bug報告。據我們所知,以前還沒有這樣的工作可以直接從截屏中檢測Bug。

(2)我們將此方法實現為了一個工具。在我們的實現中,我們採用的Bug描述神經網絡是完全可訓練的,並使用了圖像配字的最新方法。

(3)我們開展了一些初步的實驗來評估BIU的效果,並發現它在大多數情況下都表現良好。

一、介紹

多年來,眾包測試已在移動應用程式測試中得到普及。在移動應用眾測中,典型的測試報告包括報告編號、日期、個人信息、待測應用程式、運行環境的信息、Bug描述、Bug截屏等。在所有這些元素中,Bug描述是最重要但存在問題的一部分。

首先,存在無意義的Bug描述。儘管各類報告質量的檢測方法非常有效,但一些眾測工人仍然會提交無意義的Bug描述,以嘗試通過較少的工作獲得更多回報。其次,Bug描述中可能存在不相關的單詞和短語。在填寫描述時沒有硬性規定,這使得眾測工人可以不受限地填寫。第三,正如張濤等人指出,與台式機上的軟體的測試報告相比,移動應用程式的測試報告的描述往往不充足[11]。儘管測試任務是由多個眾測工人完成的,但每個眾測工人也有多個任務要做,因此每個任務的時間大大縮短。考慮到測試任務的時間有限,再加上在移動設備上單詞輸入的不便,他們不願意編寫詳細的Bug描述。但是,實際上,由於在移動設備上進行截屏很方便,因此移動應用程式的測試報告通常包含大量截屏,這對於揭示相應的Bug很有幫助。

鑒於上述移動應用程式眾包測試報告的問題和功能,從截屏中檢測Bug對於提高測試報告的質量十分必要。通過Bug檢測,可以生成正確且充足的Bug描述,而眾測工人將失去寫無意義的文本和無關單詞的動機。他們剩下的唯一工作就是在描述不夠準確時簡單地修改描述。

Bug截屏總是包含大量文本和組件形式的信息,其中一部分與Bug有關,甚至可以揭示Bug。例如許多情況下,在移動應用程式中發生某些錯誤時,會彈出出錯消息。此類出錯消息可能表明此應用程式存在潛在的Bug。此外,截屏還可以清楚地反映出組件渲染和布局問題。利用截屏中與Bug相關的信息,可以檢測出其中的Bug。

在本文中,我們提出了一種通過圖像理解技術從截屏中檢測Bug的新穎方法。它利用截屏中的文本和組件信息來檢測潛在的Bug。BIU可以將截屏翻譯成幾個句子來描述Bug,且在截屏中存在文本消息的情況下,它使用文本識別方法來提取文本信息。它匯總了圖像翻譯部分和文本識別部分的結果,從而進一步提高了生成的描述的準確性。

二、相關工作

許多研究人員做了紮實的工作,為我們理解圖像鋪平了道路。對於文本信息,光學字符識別(OCR)技術已成功應用於工業和我們的日常生活中,藉助該技術,我們可以輕鬆地從截屏中提取所有文本以進行進一步處理。對於截屏中的非文本信息,有必要從圖像中提取特徵。顏色梯度直方圖可以提取圖像的顏色特徵,而尺度不變特徵轉換(SIFT),加速穩健特徵(SURF)和定向的FAST和旋轉的BRIEF(ORB)可以從圖像中有效地提取有關「角」的特徵[6][2][8]。此外,空間金字塔匹配(SPM)是一種從圖像中提取空間金字塔作為特徵的高級方法[5]。與其他傳統特徵相比,空間金字塔包含的信息更多,並且可以提高圖像分類的準確性。但是,與上述傳統方法相比,基於深度學習的方法可以進一步提高準確性。卷積神經網絡(CNN)的自主學習機制能夠比傳統方法提取更為豐富的特徵[1]。

一些研究人員在眾包測試領域中使用了圖像理解技術。馮洋等人提出了一種報告檢測方法,該方法在截屏上應用SPM方法,並與文本處理方法結合,以便對測試報告進行優先級排序[10]。同樣,王俊傑等人提出了一種使用SPM測量的截屏相似度以及文本距離來檢測重複報告的方法[4]。郝蕊等人開發了一種報告整合工具,該工具使用同樣的圖文組合相似性來匯總和總結重複的報告[7]。但是,所有這些工作都只是衡量截屏之間的相似性,而沒有處理截屏中蘊含著的Bug信息。

三、方法

BIU旨在根據Bug截屏生成Bug報告。圖1簡單說明了BIU的工作。 它由3個主要部分組成:圖像翻譯、文本提取和描述匯總部分。 圖像翻譯部分提取截屏的特徵向量,並使用該向量生成若干Bug描述。文本提取部分提取截屏中的所有文本信息,並使用預定義的關鍵字列表過濾與Bug相關的文本。接著在描述聚合部分使用文本聚類方法聚合生成的描述,並根據聚類產生Bug報告。 以下各節說明了這些部分的詳細信息。

圖1:一個BIU工作示意圖

3.1 圖像翻譯

圖像翻譯部分旨在將Bug截屏翻譯成若干可能的描述。這是一個特定的圖像配字模型,經過訓練,該模型可以始終生成Bug描述,而不是圖像的常規描述。類似於機器翻譯中的編碼器-解碼器結構[3],圖像翻譯部分包括一個截屏編碼器和一個Bug描述解碼器,其中截屏編碼器從截屏中提取Bug特徵,Bug描述解碼器根據這些特徵從編碼器生成描述。

在圖像翻譯部分的實現中,我們採用im2txt模型,該模型是當前最先進的圖像字幕模型。截屏編碼器是一個深度卷積神經網絡(CNN)。考慮到效率,我們使用預訓練的Inception-v3模型作為截屏編碼器。最後一個全連接層中的輸出特徵向量用於初始化解碼器。

對於解碼器,若用I表示輸入圖像的特徵,用S表示正確的Bug描述,則解碼器的目的是找到參數θ以便最大化以下函數:

遞歸神經網絡(RNN)可以有效地最大化上述目標函數。因此,解碼器是一個長期短期記憶(LSTM),它被訓練為Bug描述語言模型。眾所周知,梯度消失和梯度爆炸是與RNN相關的最大挑戰,而LSTM可以有效應對這一挑戰。在訓練階段,描述中的每個單詞將被輸入到單詞嵌入層,以生成相應的單詞嵌入,作為後續LSTM的輸入。一個softmax層被添加在LSTM之後,以在Bug描述中生成下一個單詞預測。我們使用Beam大小為3的BeamSearch方法來生成Bug描述。

3.2 文本提取

文本提取部分的目的是識別截屏上與Bug直接相關的文本,並將其用作可能的Bug描述。此部分由字符識別器和關鍵字過濾器組成。字符識別器從截屏中提取文本,然後使用關鍵字過濾器過濾與Bug相關的文本,作為可能的Bug描述。

在字符識別器的實現中,我們應用了光學字符識別(OCR)技術,因為當前的OCR技術通常可以準確地識別圖像上的所有字符。當前,許多公司提供的OCR API通常比大多數開源OCR實現更準確。在對不同公司提供的各種OCR API進行初步測試後,我們發現百度OCR API的性能最佳,並且可以準確識別英文和中文文本的混合,這在中文應用程式中最為常見。因此,BIU的文本提取部分使用了百度OCR API。該API的輸出是若干提取出來的文本行,其中包含許多與Bug無關的文本,因此必須進一步處理以產生一些Bug描述並計算其機率。

3.3 描述整合

描述匯總部分的目的是將圖像翻譯和文本提取部分生成的描述匯總到Bug報告中。我們使用文本聚類方法來檢索指示不同類型Bug的聚類,並根據聚類大小形成報告。

由圖像翻譯部分和文本提取部分生成的描述通常彼此相似。這些相似的描述顯示出存在特定Bug的可能性更大。因此,我們將這些描述分為幾個聚類。

圖2:描述整合的工作流程

圖2顯示了描述聚合部分的工作流程。在這一部分中,我們在單詞標記化之後從描述中刪除幾個停用詞。然後,使用詞頻-逆向文件頻率(TF-IDF)方法對其餘標記進行向量化。TF-IDF向量化為那些描述中的高頻標記分配了更大的權重,這可以提高之後的聚類步驟的準確性。

向量化之後,所有描述都由向量表示,由此可以通過k-means聚類方法將其簡單地聚類。儘管k-means方法在處理高維向量方面存在一些弱點,但由於描述數量較少,因此描述向量的維數較低。在大多數情況下,Bug截屏中只有一個或兩個Bug,因此由圖像翻譯部分和文本提取部分生成的描述數量始終很少。k-means聚類方法可以高精度和高效地處理它們。

在我們的實現中,將聚類的數量k設置為2。在對描述進行聚類之後,我們選擇其向量與每個聚類中的聚類中心距離最小的描述。由於聚類大小可以反映那些描述聚類的機率,因此我們將按聚類大小的降序將這些選定的描述與其他報告元素一起收集在列表中。最終產生的Bug報告即為BIU的輸出。

四、評估

4.1 工具設置

我們的數據集由26387對Bug截屏及其相應的描述組成,這些信息來自百度移動測試中心(MTC)和Mooctest平台。 我們將數據集轉換為268個TFRecord文件,並按64:1:2的比例分別將它們分為訓練集、驗證集和測試集。 訓練步驟數設置為10,000。 對於BIU的文本提取部分,我們使用百度公司提供的經過預先訓練的OCR接口,考慮到它可以識別圖像中的中英文單詞的混合文本。

4.2 實驗

在訓練im2txt模型之後,我們進行了一些初步實驗來評估BIU的整體準確性。 我們使用測試集中的100個Bug截屏。 我們採用的評估指標是專家評估。 我們聘請的專家擁有平均約4年的測試經驗。專家將BIU生成的Bug描述與每個截屏的正確答案進行比較,以確定所生成的描述是否準確。如果其中任何一個描述都是正確的,則認為它們是正確的。

4.3 實驗結果

根據我們的初步實驗,BIU的準確性約為90%。通常,我們發現BIU可以在具有某些特徵(例如黑屏,閃回等)的截屏上準確地識別Bug。BIU也可發現一些UI渲染的Bug,例如按鈕上缺少文本或沒有自適應的UI。但是,在Bug與業務邏輯相關的情況下,其效果往往會下降。

BIU可以在包含一定特徵的截屏上表現相當出色不足為奇,因為這些截屏很容易解釋。困難在於對與UI渲染或業務邏輯有關的Bug的理解。在某些情況下,生成的描述可能包含一些與Bug直接相關的關鍵字,但它們可能不夠通順或描述得並非十分準確。對於連人類都很難僅根據截屏來識別Bug的情況(例如出現功能性故障的按鈕或媒體播放器),其生成的描述也與Bug幾乎無關。

五、用戶手冊

圖3展示了BIU的用戶介面。 它由4個區域組成,分別在圖中用A,B,C和D標記。 區域A顯示當前Bug報告的基本信息。 區域B是用戶上傳Bug截屏的地方。上傳後,幾秒鐘內在C區中會自動生成一些Bug描述。為了展示效果,圖像翻譯部分和文本提取部分的中間結果也分別顯示在了區域C1和C2中。 匯總的輸出顯示在區域C3中。在生成這些描述之後,用戶可以在區域C3中選擇一個最準確的描述,然後在區域C4中對其進行進一步編輯。編輯後,Bug報告已完成,用戶可以通過單擊區域D中的按鈕來提交它。

圖3:BIU的用戶介面圖

六、結論

在本文中,我們提出了一種名為BIU的新穎工具,該工具採用截屏理解技術來檢測移動應用程式中的Bug,以提高測試報告的質量。 BIU可以通過了解截屏中的文本信息和與組件相關的信息,自動為眾測工人生成準確的Bug報告。

致謝

本文由南京大學軟體學院 2019 級碩士惲葉霄翻譯轉述。

感謝國家自然科學基金(61932012,61802171,61772014)支持!

關鍵字: