自动化测试|录制回放效果差异检测
2019獨角獸企業重金招聘Python工程師標準>>>
概述
??回歸測試是指修改了舊代碼后,重新進行測試以確認修改沒有引入新的錯誤或導致其他的代碼出現錯誤。傳統的自動化回歸測試需要手動編寫腳本獲得頁面元素的視圖樹,與原有的元素視圖樹進行比對。當功能進行頻繁迭代時,測試同學維護這些視圖元素驗證點比較繁雜。因此在自動化回歸測試過程中,直接比較代碼修改前錄制的頁面和代碼修改后回放的頁面差異,可以快速定位代碼產生的缺陷,從而提高測試同學的工作效率。
??以閑魚應用舉例,錄制和回放頁面差異檢測存在的一些難點包括:圖像上,閑魚頁面由頂部固定區域、中間可滾動區域、底部固定區域組成,需要對頁面進行版面切割,之后分別對每一個區域進行處理。另外錄制和回放頁面中一些圖標或者圖片紋理復雜的區域往往像素值分布不同,但是語義層面又是同一個物體,因此需要從語義層面進行檢測識別。業務上,兩張頁面中間區域因為滾動帶來的差異不需要檢測出來,并且一些特殊的標記差異(比如一張頁面某個位置有光標,另一張頁面同一位置沒有光標)不需要檢測出來。
??如上圖四組錄制和回放頁面所示,其中每組圖左邊為錄制頁面,右邊是回放頁面。a)中因為中間區域的滾動帶來了文字和圖標的差異,b)中價格組件“¥69”右邊的光標帶來了差異,c)中輸入框里的文字不一樣,d)中“庫存”那一欄的圖標具有語義差別。其中a)和b)中的差異不需要檢測出來,c)和d)中的差異需要檢測出來。
方法
算法流程
??整個算法流程如下圖所示:
版面切割
??閑魚大部分的頁面是由頂部固定區域、中間可滾動區域、底部固定區域組成,版面切割的目的是找到中間可滾動區域的上下邊界,即將頁面切割為三塊區域,之后對每塊區域分別進行處理。
??版面切割只針對中間區域有滾動的情況,對于中間區域無滾動的情況即可用整張圖進行后續處理。考慮到錄制和回放頁面在滾動區域上下邊界處會產生明顯的差異,因此分別從圖像的第一行和最后一行開始進行比較,比較對應行的結構相似度指數(SSIM),當對應行的結構相似度指數小于給定的閾值,則終止。
??結構相似度指數是一種衡量兩幅圖像相似度的指標,其從圖像組成的角度將結構信息定義為獨立于亮度、對比度的反映物體結構的屬性,用均值作為亮度的估計,標準差作為對比度的估計,協方差作為結構相似程度的度量。具體公式如下:
其中(x,y)分別為錄制和回放圖像,ux,uy,σx2,σy2,σxy分別表示圖像的均值、方差和協方差,c1,c2,c3為小的正常數,避免分母為零而出現不穩定,利用參數α,β,γ調整三個成分所占的比重。在實際工程中,一般設定α=β=γ=1,以及c3=c2/2,可以將SSIM簡化為:
??SSIM為介于0到1之間的一個值,值越大表明兩幅圖越相似。下圖a)b)為高2001像素、寬1125像素的錄制和回放頁面圖像,選取SSIM閾值為0.95,計算得到的滾動區域的上邊界為192,下邊界為1832,如c)所示。
滾動區域對齊
??對齊錄制和回放圖像的滾動區域后便可對比同一位置的差異,本文采用基于特征點的圖像對齊方法, 即檢測錄制圖像的一組稀疏特征點來匹配回放圖像的一組稀疏特征點,通過兩組特征點的匹配來計算一個轉換矩陣,這個轉換矩陣能變換對齊兩幅圖像的滾動區域。由于滾動區域只在垂直方向有位移,因此采用一般的剛性配準方法,如下式:
??錄制圖像坐標(x,y)通過一個3x3的位移矩陣轉換到回放圖像坐標(x',y')。位移轉換矩陣可以通過對齊兩幅圖像的特征點來求取。在計算機視覺中,常見的特征點描述方法有SIFT、SURF、ORB等等,本文采用ORB方法,因為相比于SIFT和SURF方法,ORB在滿足足夠高的準確性前提下,速度更快并且使用不受專利約束。
??ORB全稱是Oriented FAST and Rotated BRIEF,即是由FAST特征點檢測和BRIEF特征點描述組成,并且在兩者基礎上加入了圖像金字塔和圖像重心方向等改進措施使得ORB對尺度和旋轉不敏感。
??滾動區域對齊的具體步驟為:
??下圖為匹配的兩組特征點,計算出來的轉換矩陣中tx=0,ty=-96
相似度計算及后處理
??對錄制和回放頁面的頂部區域、底部區域和對齊的滾動區域分別計算結構相似度SSIM(如果圖像不存在滾動區域,則對整圖計算SSIM),差異的地方用矩形框標識,后續通過一定的后處理排除掉無效的差異。具體步驟如下:
??差異檢測。對頂部區域、底部區域和對齊的滾動區域每個像素在一定的領域范圍內計算SSIM,得到同等尺寸的SSIM結果圖;再對SSIM結果圖用大津法得到二值化的SSIM結果圖,其中有差異的地方為1,沒有差異的地方為0;接著提取二值化SSIM差異部分的外接輪廓;之后再計算輪廓的最小外接矩形框。得到的結果如下紅框所示:
??后處理。上圖紅框顯示的是對齊滾動區域帶來的差異,通過判斷每個框是否落到特定區域范圍內來進行排除,這個特定區域在垂直方向上以滾動區域上邊界起始,向下移動ty行結束或者以滾動區域下邊界起始,向上移動ty行結束。另外對于一些噪聲點帶來的差異,可以通過限制差異框包含的面積進行排除。對上圖使用以上兩步后處理后,紅框全部被排除。其他一些錄制和回放圖像中的特殊標記(比如光標)差異在業務層面需要排除,或者一些紋理豐富的圖標/圖像雖然像素層面存在差異,但語義層面屬于同一類,即使SSIM計算不相似,也需要排除。
??上圖a)顯示光標差異模式,b)顯示紋理豐富的圖標/圖像差異模式,c)顯示其他差異模式。這些差異模式是對應位置差異框絕對差得到的結果,其中a)和b)需要排除,c)需要保留。分析這幾種不同模式類型,設計了一種如下圖所示CNN二分類網絡。圖像縮放到64x64大小,然后輸入到三層conv+pooling+relu的卷積結構中,后接128個節點和2個節點的全連接層,以softmax作為類別判定輸出。通過分類網絡便可將業務層面或像素層面的差異進行排除。
結果
??一些差異檢測的結果如下,其中紅框標示的是在錄制和回放頁面中存在差異的部分。a)只有中間區域滾動帶來的差異,業務上不需要檢測出來; b)和c)能將頁面中存在語義差異的部分檢測出來并且沒有誤檢和漏檢; d)兩張頁面不存在語義差異,但底部有個文字區域出現了誤檢,分析原因是頁面在沒有滾動的情況下,誤檢區域沒有上下嚴格對齊,導致計算的SSIM值偏小,認為此處存在差異。
總結
??本文以閑魚自動化回歸測試應用舉例,實現了一種版面切割、滾動區域對齊、相似度計算及后處理的錄制和回放頁面差異檢測方法。這種方法在使用過程中達到了檢出語義差異的預期,并且方法具有普適性,對其他app的自動化回歸測試具有一定的參考意義。當然本方法也存在著一些不足,對于像素分布不同但語義相同的差異模式會有一部分誤檢,這是由于SSIM在計算相似度時對于局部像素值的變化比較敏感,未來可對頁面中的文字和圖片獨立提取出來進行進一步的語義分析優化。
原文鏈接
轉載于:https://my.oschina.net/u/1464083/blog/3025004
總結
以上是生活随笔為你收集整理的自动化测试|录制回放效果差异检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信内测附近的餐厅,小程序要跨界外卖了?
- 下一篇: node 原生实现服务端 websock