AutoClick:基于 Robotium 的自動遍歷方案

前言

? 做這個的初衷是發現項目中的崩潰問題(即穩定性)。Monkey達不到全覆蓋,也試過思寒的 AppCrawler ,無奈速度上不太理想。我需要的是更快的反饋結果,于是乎著手自己寫一個方案,也當做是提高編碼能力,或者說對Android有更深入的理解。

解決了什么

? 初期目標是想替代Monkey,眾所周知Monkey的隨機點擊,以及不可控性,并不能做到完整的遍歷。所以當下最主要的功能是 發現崩潰問題 (如兼容性、混淆、代碼問題導致的崩潰),額外可以做的是發現無數據時的空白布局(配合接口工具,啟用快速模式驗證)、發現無網絡時是否顯示無網絡的布局(關閉網絡,啟用快速模式)等等。

使用效果

? 在我們的產品上,啟用爬蟲模式試跑了幾個小時發現了5個崩潰問題。當然發現第一個崩潰時自動遍歷就停止了,它依賴于被測應用,被測應用崩潰,它也會一同退出,這是接下來要解決的問題( 增加重啟機制 )。當崩潰問題不予修復時,繼續遍歷,還是會走到第一個崩潰( 可復現性 ),此時可以把崩潰的Activity加入忽略列表。

崩潰問題:

  • 發現的崩潰問題都是正常操作的,非異常操作(舉例:非人類手速的點擊等等)。換句話說就是用戶也會遇到該問題

  • 擅長發現異步請求導致的崩潰問題

    • 異步請求拿到數據后更新UI,由于UI被銷毀導致的崩潰
    • 為什么說是擅長?
    • 遍歷邏輯基于Activity,點擊View跳出本Activity后按返回鍵回到遍歷Activity
    • 當網絡不穩定時,數據返回延時加長,View銷毀了數據才回來,如果此時代碼沒處理好就會發生崩潰
    • 建議遍歷時切換到弱網環境

    ?

    </li> </ul>

    特性

    • 可跨應用

      • 補上Robotium不支持跨應用的短板
      • 自動遍歷時不會有具體的跨應用操作,唯一出現的地方在Android 6.0以上版本啟動應用時的授權操作(可能存在兼容性問題)
      • 跨應用應用在單獨寫用例時
      • 跨應用詳情
      </li>
    • 多種模式

      • 快速模式:只啟動Activity,快速檢測崩潰問題(如兼容性、混淆、代碼問題導致的崩潰),一般幾分鐘可完成。依賴于Params.json文件,該文件可由錄制模式產生。
      • 迭代模式:啟動Activity并點擊每個View。依賴于Params.json文件,該文件可由錄制模式產生。
      • 爬蟲模式:通過迭代主頁并記錄新開Activity,迭代完畢后讀取新開Activity,循環往復,直至無新的Activity。
      • 錄制模式:需人工操作應用,記錄每個新開的Activity,供快速模式、迭代模式使用。錄制模式可在功能測試階段使用,錄制模式默認休眠1個小時,期間操作應用打開的Activity都將被記錄下來。
      • </ul> </li>
      • 智能輸入

        • 根據輸入框支持的輸入類型和最大長度進行輸入
        • 支持手機號、郵箱、普通文本等類型
        • </ul> </li>
        • 紅點標記

          • 將要被點擊的View會以紅點標記保存為截圖
          • 如果發現截圖沒有紅點或者紅點位置明顯錯誤時,不用驚訝,那一定是隱藏的View被點擊了
          • 沒有紅點:隱藏的View坐標不在屏幕范圍
          • 紅點標記錯誤:點擊到被遮擋的View,通常發生在ViewPager布局
          • </ul> </li>
          • 無懼遮擋

 本文由用戶 JadeZZXE 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!