控件获取图像可从几方面取得?_基于图像特征与布局刻画的移动测试脚本跨平台录制回放...
一、 引言
移動應用在全球范圍內有著越發舉足輕重的地位,因此移動應用的快速迭代和頻繁的需求變更的特點引發了對應用質量保障的要求不斷提高。在大型設備集群上遷移測試腳本是移動應用質量保障的關鍵技術之一,因為這一技術可以自動化地測試預設的場景并檢測各種缺陷。但是,碎片化問題已擴展到多個平臺,包括 Android,iOS,移動網頁,甚至是某些應用(例如微信)的內置小程序平臺,這意味著一個特定的應用往往具有統一的服務端,且完全不同的客戶端共享相同的服務端服務和類似的圖形界面外觀(GUI)。這一現象對開發人員和測試人員在測試其移動應用時提出了更高的要求。他們必須基于不同的平臺框架支持編寫不同的腳本,從而導致繁瑣且重復的工作。缺乏不依賴平臺的測試技術使得測試腳本無法被有效地跨平臺遷移。大多數移動應用在開發支持不同平臺的版本時都采用高度相似的用戶界面(UI),以提高用戶體驗,這意味著多個客戶端共享同一臺服務端。不同平臺之間整體布局與 UI 元素及其相對位置大致相同。相似的 UI 布局啟發我們從基于 UI 圖像分析而不是各自底層實現的角度進行研究。
一些研究人員已經基于圖像理解技術進行了一些基礎研究。Sikuli 是一個基于圖像的工具,專注于桌面應用測試。Sikuli 可以通過圖像的識別與匹配而操作 GUI 控件。但是,Sikuli 對移動平臺的支持較差,并且僅依賴于簡單的圖像特征匹配。Airtest 是一種由網易開發的基于圖像匹配技術的自動化移動測試工具,它是在 Sikuli 的基礎上開發的。但是,Airtest 專注于游戲類型的移動應用,對于區域類別的移動應用的支持較差,并且針對不同的移動平臺采用了不同的圖像匹配方案,這導致 Airtest 仍無法在不同平臺之間進行腳本的遷移??傊?#xff0c;諸如 Sikuli 和 Airtest 之類的工具將“圖像”簡單地看作一張“圖像”而非是一個“豐富控件信息的集合”。換句話說,這些工具忽略了圖像中的內容和相互關系,這意味著一些重要信息也隨之被忽略了。
在本項目中,我們創新地提出了一種圖像驅動的移動應用測試腳本遷移框架 IDMAT(Image Driven Mobile App Testing Framework),以結合圖像上下文理解和布局刻畫來解決測試腳本的跨平臺錄制回放問題。在腳本錄制階段,IDMAT 會自動從設備中提取屏幕和控件截圖、布局坐標、文本等信息,并將這些信息按照測試操作進行組織。然后,根據所介紹的不依賴于平臺特性的測試腳本模型 LITS(Layout & Image Test Script),生成獨立于平臺的測試腳本。在回放階段,IDMAT 同時采用計算機視覺技術和深度學習方法。IDMAT 由圖像特征提取比對定位和布局刻畫匹配識別兩個模塊組成。當移動應用頁面具有動態或多個類似的控件時,布局刻畫匹配識別可以彌補圖像特征提取比對定位的不足。IDMAT 綜合分析圖像特征提取比對定位和布局刻畫匹配識別分別生成的中間結果,從而提高識別準確性。
IDMAT 首次利用了圖像上下文理解和布局刻畫提取,實現了在不同平臺的不同設備上移動應用測試腳本的“一次錄制,多次回放”的高效測試腳本遷移,大大降低了測試腳本開發的復雜性。
二、方法
1. 獨立于平臺的測試腳本模型
在腳本錄制模塊中,我們提取了豐富的信息以進行回放。在腳本回放模塊中,我們需要從回放設備中提取相同的信息,并與腳本中的信息匹配。必要的信息包括移動應用活動的屏幕快照 SSa,控件的屏幕截圖 SSw,控件坐標 Cw,錄制設備的序列號 DSN,錄制設備的分辨率 DR,操作點坐標 Co,控件文本 T,和操作類型 O,其中 Cw 由被操作控件的左上角和右下角坐標組成。
當提取上述信息時,需要進一步的過程以使腳本中的信息更好地獨立于平臺。首先,我們將 DSN 作為腳本 ID。其次,我們計算控件和操作點的相對位置,這是按絕對坐標與設備分辨率的比例計算的,結果分別表示為 Cwr,Cor:Cwr = Cw / DR, Cor = Co / DR
為了更規范地表示與使用測試腳本,我們引入了一個測試腳本模型,稱為 LITS,即 Layout & Image Test Script。LITS 是 7 維元組的列表,這個 7 維元組可以表示為:
2. 腳本錄制
腳本錄制由用戶操作序列的單步操作的錄制的過程迭代實現。對于每一步操作,提取并錄制每個操作的控件的截圖和應用頁面的布局信息,以及控件的一些屬性信息,例如文本,控件類別等。
在接收用戶的操作時,操作命令通過 Android 平臺的 ADB(Android Debug Bridge)或 iOS 平臺的 WDA(Web Driver Agent)在不同平臺上轉換為可執行指令。在錄制過程中所提取的控件信息,包括坐標,文本等,將通過我們的測試腳本遷移框架 IDMAT 自動生成相應的 XML 文件。這樣的 XML 文件與屏幕截圖中截取出的控件截圖一起,以嵌套目錄的形式存儲。根目錄表示錄制的腳本,每個子目錄代表每一步操作的控件與對應操作的信息。記錄操作順序的文件存儲在根目錄中。
3. 腳本回放
首先,按照操作順序的順序,在回放設備上依次回放每個步驟。對于每個步驟,我們提取所錄制的屏幕截圖,同時截取回放設備上對應頁面的截圖。得到截圖后,對對應的數據信息進行兩種定位算法的計算,這兩種定位算法分別是圖像特征提取比對定位與布局刻畫匹配識別。圖像特征提取比對定位將會得到一組疑似坐標,代表著根據圖像特征提取比對定位算法所得的一組疑似控件;布局刻畫匹配識別將會得到一個候選坐標,代表著根據布局刻畫匹配識別所得的一個候選控件。計算圖像特征提取比對定位結果中每一個疑似坐標與布局刻畫匹配識別所得結果的距離,將距離最近的作為圖像特征提取比對定位的候選控件。對于兩個算法得到的候選坐標,我們進行一個加權計算操作。這個權重是由我們進行的一系列驗證實驗反饋的結果而動態調整獲得的。
圖像特征提取比對定位
這一部分中,我們采用圖像特征提取比對定位算法來匹配腳本中記錄的控件截圖與回放設備的屏幕截圖,以此來匹配回放設備上的相應控件。
圖像特征提取比對定位算法將目標控件截圖和回放設備頁面截圖作為輸入,并將一組疑似控件的坐標作為輸出。該算法包括五個主要過程:預處理,特征提取,特征匹配,錯配消除和畸變計算。每個過程描述如下:
預處理:首先對輸入圖像進行灰度化處理,因為圖像的顏色信息未被視為處理屬性,且有可能對最后的結果形成負面的影響。預處理提高了圖像的匹配質量,并在后續處理中獲得了更好的效果.
特征提取:在此步驟中,我們分別提取兩個輸入圖像的特征。首先進行圖像特征點的檢測,接著分別構建圖像特征描述符集和特征點集。兩組特征點集表示為 Ktarget 和 Ksource;描述符集表示為 Dtarget 和 Dsource。
特征匹配:執行特征點匹配,并快速估計最鄰近對象。在處理兩個特征點集時,在 Dtarget 和 Dsource 中找到最接近的點作為匹配點。這就完成了特征點的初步匹配。
錯配消除:在上一步所獲取的匹配點可能存在錯誤,因此必須消除這些錯誤以提高匹配的精準度。我們采用比率測試方法來解決此問題。如果計算值小于預設閾值,則認為匹配正確。否則,該匹配被視為出現錯誤,并從結果集合中刪除。
畸變計算:由于目標圖像可能會存在諸如旋轉或縮放之類的失真,因此,為了更準確地獲取匹配控件的坐標,需要計算目標圖像和要匹配的圖像之間的單應性矩陣,最后對目標圖像進行透視變換以獲得更精確的位置坐標信息。
布局刻畫匹配識別
在移動應用內容快速刷新的情況下,圖像特征提取比對定位的可用性大大降低。并且,在我們進行測試時,我們正在測試應用功能的可用性,應用的內容不是測試工作關注的重點。因此,圖像特征提取比對定位的缺陷需要有新的算法進行彌補?;诓煌脚_之間同一應用 UI 布局的高度相似性,我們考慮進一步采用布局刻畫匹配識別來提高精度。
在布局刻畫匹配識別中,我們首先根據腳本中存儲的錄制的頁面截圖提取控件邊框,然后根據控件邊框劃分頁面截圖,并獲取目標控件在屏幕截圖上的對應位置。根據以上獲取的信息,我們從頁面截圖中獲取所有控件的位置等相關信息,并根據相對位置繪制控件之間的相對關系。
我們的方法可能生成許多噪聲數據。我們還努力消除此類噪聲數據。根據我們對開源數據集的調查,我們發現大多數控件的大小都超過屏幕截圖尺寸大小的 1%。因此,我們決定忽略大小小于屏幕截圖尺寸大小 1%的結果數據。
為了提高準確性,我們還提取了控件上的文本信息以輔助控件的檢測與定位。在某些情況下,某些高度相似的控件彼此靠近,因此控件中相互不同的文本可以幫助進行匹配。
在回放期間,首先,在回放設備上執行相同的布局提取刻畫過程,然后我們加載錄制的信息與來自回放設備的信息匹配。布局位置是主要的匹配依據,文本信息起著輔助作用。
三、 實證驗證
在我們所提出的圖像驅動的測試腳本遷移框架 IDMAT 的理論基礎上,我們實現了對應的自動化測試腳本錄制回放工具并進行了一項實證實驗驗證,以驗證 IDMAT 框架的有效性。結果顯示我們的框架與取得了初步的成功。
1. 實驗準備
在本項實驗驗證中,我們設置了三個研究問題(Research Question):
RQ1:LIRAT~能夠多大程度上有效識別控件并回放測試腳本?
RQ2:LIRAT~中兩個模塊的結合與模塊單獨結果對比有多大的提升?
RQ3:為什么某些控件識別會失敗?哪些情況可能導致這樣的失敗?
我們選取了十款不同類別的移動應用和 8 臺不同品牌、型號的移動設備。
在實驗執行過程中,我們首先邀請軟件工程專業的學生為每一款待測應用自由選擇了 5 個測試場景。并且將這些場景使用編號為 D0 的 Android 設備進行腳本的錄制。我們要求每個場景包含 15 個步驟,每個步驟包含一個控件,此外,每個腳本需要涵蓋 5 個以上的應用頁面。
2. RQ1
為了解決 RQ1,我們招募了 3 名軟件工程專業的高年級學生來為每個移動應用組織 10 個測試場景,并根據測試場景在標記為 D0 的 Android 設備上進行腳本錄制。我們要求每個測試場景包括 15 個操作,并且每個操作都包含一個應用控件。然后,我們同時在 5 個 Android 設備和 2 個 iOS 設備上回放錄制的的測試腳本。Android 設備的成功回放率約為 63.39%,iOS 設備的成功回放率約為 21.83%(其中應用 Kiwix 和 Jamendo 在 iOS 上由于應用自身原因不可用),這證明 IDMAT 是有前途的。在所有測試場景中,成功完整回放了 4.4%的測試場景,并且超過一半的測試場景的完整回放只需少于 3 次人工糾偏(15 個測試步驟)。
3. RQ2
IDMAT 所獲得的準確率比最先進技術在 Android 上和 iOS 上分別有了 14%和 98%的提升。
最終的控件識別與腳本回放的結果來自于圖像特征提取匹配定位(簡稱圖像模塊)與布局刻畫匹配識別(簡稱布局模塊)的結果的結合。
在結果正確的部分中,Android 與 iOS 分別有 50.36%和 19.85%的成功回放是由兩個部分的共同成功識別導致的;分別有 21.08%和 12.98%的成功回放由圖像模塊的成功識別所引起;而分別有 23.90%和 66.79%的成功回放由布局模塊的成功識別所引起;然而,即使兩個模塊均失敗了,也有 4.67%和 0.38%的回放達到了最后的成功。從數據中可以看出,布局模塊比圖像模塊能夠引起更多的最后的成功(分別達到了 2.82%和 53.81%),這也證明,我們在 IDMAT 中引入布局刻畫匹配識別來彌補圖像特征提取匹配定位的缺陷達到了較為成功的效果,這樣的成功在跨平臺的回放中(從 Android 到 iOS)尤為明顯。
4. RQ3
根據 RQ1 和 RQ2 的結果,我們證明了所提出的測試框架 IDMAT 有效性。然而,在我們的實驗過程中,仍然存在著部分失敗案例。我們逐個分析了失敗的回放,按照圖像特征提取比對定位和布局刻畫匹配識別兩個部分,總結出了以下主要的失敗原因。
在圖像特征提取比對定位中,由于重復的高度相似的控件而導致的回放失敗幾乎占所有失敗案例的三分之一,這是最為主要的失敗原因;其次,在錄制階段,由于對頁面布局的解析失敗,導致獲取了錯誤的控件截圖,這樣的失敗大約占了所有失敗的 20%。另外,一些微小的原因導致了個別失敗的案例,例如回放設備上相應控件的缺失,算法所提取出特征點過少而使得算法輸出的結果集合為空。
在布局刻畫匹配識別 中,分別有 24.6%,20%和 18.4%的失敗回放是由算法中的分組,分行和分列操作的錯誤而引發的。而頁面內容的變化引發的布局改變導致了大約 16.3%的失敗案例。此外,也有大約 12.1%的失敗案例是由于設備狀態欄的變化。
四、 總結
隨著移動互聯網的迅猛發展,移動應用影響到了社會與生活的方方面面。這樣舉足輕重的地位使得移動應用的質量保障有著更高的要求。移動應用頻繁迭代與需求快速變更的特點使得傳統的軟件測試方法效率降低。因此,新的測試技術與框架是學術界與工業界的研究熱點。其中,測試腳本的自動化錄制與回放,即測試腳本遷移,是當前移動應用測試的主流技術之一。
然而,移動應用通常在多個平臺上運行,而測試腳本往往是根據平臺所提供的借口與特性編寫,現有的一些測試框架對于平臺的依賴也較為嚴重,這導致了測試腳本在不同平臺之間遷移的能力有限,因而也造成測試人員需要為同一款應用的不同平臺版本編寫完全不同的測試腳本,這對測試人員提出了較高的要求,也造成了更高的經濟與人力資源成本。
在本文中所提出的圖像驅動的移動應用測試腳本遷移框架 IDMAT,創新地提出了通過對應用界面截圖的分析與理解入手完成測試腳本跨平臺遷移的解決。IDMAT 通過對圖像布局的刻畫,控件內容與上下文的記錄與相互關系分析,實現了在不同設備和平臺上控件的精確定位,大大簡化了腳本編寫工作,并且使測試腳本在不同的設備和平臺上“一次錄制,多次回放”成為可能。
而根據我們基于 IDMAT 相關的實驗驗證結果表明,所提出的圖像驅動的移動應用測試腳本遷移框架以及所對應的測試工具在不同設備和平臺上回放移動應用測試腳本方面取得了成功。
致謝
本文由南京大學軟件學院智能軟件工程實驗室 2016 級本科生虞圣呈撰寫。
總結
以上是生活随笔為你收集整理的控件获取图像可从几方面取得?_基于图像特征与布局刻画的移动测试脚本跨平台录制回放...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 测试面试题——三角形
- 下一篇: 野指针产生原因