閱讀347 返回首頁    go 阿裏雲 go 技術社區[雲棲]


由Monkey引發的測試工具方麵的想法

什麼是Monkey

  
對於Monkey,大家並不陌生,相信很多後續出現的基於控件遍曆的測試工具也或多或少地受了它的啟發。簡單來說,Monkey測試是Android平台自動化測試的一種手段,通過Monkey程序模擬用戶觸摸屏幕、滑動Trackball、按鍵等操作來對設備上的程序進行壓力測試。

為什麼會有Monkey

  
Monkey 主要用Android的壓力測試,對測試軟件的穩定性、健壯性快速而有效, 主要目的就是為了測試app是否會Crash.
  
當我們需要對一個軟件進行壓力測試,檢查其性能時,如果人工進行測試的話,效率會很低,而且比較枯燥。而Monkey可以為我們減輕這部分重複而繁瑣的工作,隻需要觀察被檢測程序多久的時間會發生異常,並在結束的時候收集這些異常信息即可。

Monkey的弊端

  • 無法準確地得知bug的複現步驟
  • 發送的用戶事件流的有效性成問題,很多是無效操作

針對Monkey的弊端可以進行哪些方麵的改進

1. 如何解決無法得知bug複現步驟的問題

  
Monkey對於應用程序穩健性的幫助不言而喻,但其弊端也是不可忽視的。
  
當Monkey跑出一堆問題時,若能及時準確知道複現步驟,將能極大縮短定位問題的時間,幫助開發及時調試程序優化性能。 並且結合Monkey的測試思路,我們還可以同步進行性能方麵的數據采集,分析出可能存在問題的場景,提前預警。
  
以FPS測試為例,提供些思路。下圖是3年前構思的以Monkey為驅動去測整個應用程序的FPS性能的工作流程圖。(注:圖中所寫的Monkey並非android原生的monkey,而是根據其原理寫一個簡單的偽Monkey工具,特點在於測試過程中能記錄操作類型和操作軌跡,用於後續能在出錯截圖中直接標記出操作路徑。)

image
  
通過上圖這樣的改造後,無法得知bug複現步驟的問題便在一定程度上得到了解決。於是,應用開發前期我們就可以對整個程序進行全麵測試,在繁多的操作流程中找到可能存在問題的場景,這部分場景在測試中會以類似下圖的方式展示,明確標記操作路徑,並將當時操作產生的FPS等具體信息記錄在案。進而測試可以根據這些信息有針對性地對這部分問題場景進行複測,同時開發也能同步進行調試定位,優化性能。

image

2.如何減少無效操作,提高測試覆蓋麵

  
為了解決Moneky無效操作過多的問題,研發基於控件的自動化遍曆工具幾乎是業界的共識,也由此湧現出了不少優秀的團隊優秀的工具,而MQC旗下的Ripper亦是其中的佼佼者。目前MQC中的Android兼容性測試便是以Ripper驅動的。
  
相比Monkey,以及大多數遍曆工具,Ripper有如下優勢

  • 更多的動作:多點觸控、縮放、連擊、中文輸入……
  • 精準控製,高並發,測試效率高
  • 根據規則遍曆控件,減少重複操作次數,提高測試覆蓋麵
  • 記錄測試場景,方便問題追蹤
  • 識別輸入框語義,根據語義輸入內容
  • 識別並處理各類彈框 …… 更多的優點,試用過後,方能體會Ripper的美妙之處!   
    下圖為Ripper測試後產生的部分操作場景拓撲圖。

image  
  
MQC測試平台是為廣大企業客戶和移動開發者提供真機測試服務的雲平台,擁有大量熱門機型,提供7x24全天候服務。
    
我們致力於提供專業、穩定、全麵、高價值的自動化測試能力,以及簡單易用的使用流程、貼心的技術服務,並且幫助客戶以最低的成本、最高的效率發現APP中的各類隱患(APP崩潰、各類兼容性問題、功能性問題、性能問題等),減少用戶流失,提高APP質量和市場競爭力。

聯係我們:
 網站地址:https://mqc.aliyun.com
 開發者交流旺旺群:335334143
 開發者交流QQ群:492028798
 客服郵箱:mqc_group@service.alibaba.com
更多精彩技術分享 歡迎關注 MQC公眾號
17

最後更新:2017-08-13 22:48:11

  上一篇:go  工信部總工張峰對雲計算發展提三點建議
  下一篇:go  全球物聯網並購投資趨熱 電信運營商如何看清風向?