AI在閒魚測試實踐:如何應用AI技術通過圖片找bug 頂 原

摘要: 作者:閒魚技術-金喏 1.前言 閒魚質量團隊一直致力於交付高質量的app給用戶,當前隨着AI技術不斷髮展,TensorFlow大熱,也給測試手段帶來了更多種可能,本文接下來給大家介紹AI在閒魚測試的一點實踐:如何應用AI技術通過圖片找bug。

作者:閒魚技術-金喏

1.前言

閒魚質量團隊一直致力於交付高質量的app給用戶,當前隨着AI技術不斷髮展,TensorFlow大熱,也給測試手段帶來了更多種可能,本文接下來給大家介紹AI在閒魚測試的一點實踐:如何應用AI技術通過圖片找bug。

2.模型選型

不需要理解業務就能發現的bug主要有整體頁面空白、部分控件顯示異常和文本異常這幾類。對於整體空白圖片,發現它們的共同特徵是比較明顯:大面積空白或者中心區域報錯,所以選擇使用TensorFlow搭建的簡單CNN模型來識別正常圖片和異常圖片。對於文本異常這類包含亂碼的圖片,則是用OCR+LSTM建立了一個簡單的漢字識別模型來識別圖片中的文本內容後判斷是否存在亂碼。
訓練以上模型的樣本則來源於bug歷史截圖和mock的正向數據樣本。

3.模型重訓練——提高模型識別準確率

初始模型在訓練時樣本有限,但隨着app不停更新迭代,圖片檢測樣本數量的逐漸增多,會出現某些新頁面被錯誤分類,要解決這類誤報問題,亟需加入模型重訓練。
顯然靠人肉啓動模型重訓練並替換舊模型成本太高,所以在前端實現了個勾選圖片去重訓練的入口,通過Jenkins定時任務,讀取所有重訓練圖片並執行重訓練腳本,並把舊模型替換成新生成的即可。經過幾輪自動迭代後模型識別準確率有大幅提升。

4.圖片處理——提升結果的人工甄別效率

4.1特殊截圖

有些截圖可能是存在大面積空白,但從業務角度上來說這類圖片是正確的,比如搜索中間頁。此類若不處理,每次都會被識別爲異常圖片上報,浪費大家check的時間,若放入模型進行重訓練又有導致模型不收斂的風險。爲了解決這類圖片,維護了一個圖庫,對模型識別爲異常的圖片,會與圖庫中的圖片進行對比,如果與圖庫中任意一張相似度超過設定閾值,即認爲該圖片可被忽略不用上報。

4.2圖片去重

目前遍歷截圖任務爲了保證頁面上所有元素都取到,單次遍歷任務會至少訪問同一個頁面兩次;同時遍歷時,爲了方便頁面上下文分析,會對點擊元素用紅框標記。這帶來了一個問題:待識別圖片集中,同一個頁面會有多張重複截圖、且同一頁面上可能會在不同的地方有紅框標記。人工檢驗大量重複圖片識別結果難免視覺疲勞,所以展示去重後的結果可以大大提升人工甄別效率,減少成本。

4.2.1解決辦法

圖片數量大,且不確定這次遍歷截圖了多少不同頁面時,可以使用層次聚類算法解決這個問題。本文采用的是自底向上的聚類方法,即先將每一張截圖分別看成一個簇,然後找出距離最小的兩個簇進行合併,不斷重複到預期簇或者滿足其他終止條件。

4.2.2實現[2]

1)計算圖片之間的距離

先將圖片轉換成w*h*3維向量,把向量間的歐式距離作爲圖片之間的距離,圖片越相似,距離越小。

一次app遍歷得到的n張圖片要完成聚類,先單張圖片按照上述處理後,再整體拼接成 n*(w*h*3)的矩陣,做爲樣本集。

2)計算簇之間距離的方法

single:兩個簇中距離最近的兩個樣本的距離作爲這簇間的距離
complete:兩個簇中距離最遠的兩個樣本的距離作爲這簇間的距離
average:兩個簇間樣本兩兩距離的平均值決定,解決個別異常樣本對結果對影響,但計算量比較大
ward:離差平方和,計算公式較複雜,要想了解具體計算公式和其他計算方法見計算簇之間距離的方法
通過嘗試後發現ward效果比較好,所以最終選用ward作爲計算簇之間距離的方法。

Z = linkage(X, 'ward')

執行上述語句後,聚類完成。

3)臨界距離選擇

該值直接影響聚類的效果,臨界距離過小,會導致某些相似圖片不能聚集到一類,臨界距離過大,又會導致不是同一個頁面的圖片聚在一起,所以如何選一個合適的距離非常重要。
實驗發現,如果圖片被頁面異常模型識別爲異常圖片時,往往這類圖片之間的相似性越高,爲了不錯誤聚類不同的異常頁面,分別對識別爲異常和正常的圖片進行聚類,並且異常類的臨界距離會設置更小一點。

5.總結與展望

目前該工具對整體頁面異常的識別效果較好,文本異常的識別準確率也在豐富樣本的過程中不斷提升。



接下來我們會集成LabelImg工具,用TensorFlow搭建SSD模型來識別控件異常的圖片,此外元素/文字佈局錯亂等問題頁面識別、頁面操作預期結果識別也在不斷嘗試中。使用圖片處理和錯誤識別技術,作爲質量保證的一種方法,我們會持續探索下去。

參考文檔:

[1]圖片聚類計算:https://haojunsui.github.io/2016/07/16/scipy-hac/

裏雲雙十一1折拼團活動:已滿6人,都是最低折扣了

【滿6人】1核2G雲服務器99.5元一年298.5元三年 2核4G雲服務器545元一年 1227元三年

【滿6人】1核1G MySQL數據庫 119.5元一年

【滿6人】3000條國內短信包 60元每6月

參團地址:http://click.aliyun.com/m/1000020293/

原文鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章