1. 程式人生 > >Android自動測試之Monkey工具

Android自動測試之Monkey工具

其實我原本還是打算先把monkey的運用或者引數等等都寫的詳細點的。但是我個人覺得測試員還是要養成自己去看SDK doc的習慣。所以我決定還是不寫。更何況這類文章google ,百度一大把。沒有意義。
  
  ok,我還是先來簡單介紹一下monkey這樣一個工具是什麼用途。其是一種android壓力測試,模擬使用者在切換應用的同時進行點選的一種操作。
  
  目前從我的經驗看下來,基本上大多數monkey出來的error都是null point,也就是空指標的錯誤。對於monkey來講,沒有一個所謂真正100%的repro的技術。只能通過多次的同樣的seed值進行bug的修復確認。

  既然是初步探索,monkey原本是有一個monkey.jar檔案。存放在android系統的/system/framework/下面,只不過我們使用adb monkey命令的時候系統呼叫了一樣一個封裝好的程式。當然提到使用,必定要知道其是怎麼生成的。其實很簡單,在android原始碼目錄下,linux下面cmd直接make monkey,即會在/out/.../framework(好像)我忘記了,這裡會出現一個monkey.jar檔案。然後只要push到android手機的system/framework/目錄下面即可呼叫。

  那麼接下來我們步入正題,我所做的初步探索,即讓monkey的隨機點選變得能夠case化的點選。其實還是很簡單的。。=。=
  我們開啟android原始碼裡面的monkey資料夾,有十個java檔案。其中在MonkeySourceRandom.java檔案中我們能夠找到monkey各個引數呼叫的函式。比如--motion 或者--trackball等等。然後我們只要將下圖的motion函式中的隨機code直接改成
MonkeyMotionEvent e = new MonkeyMotionEvent(MonkeyEvent.EVENT_TYPE_POINTER,
                downAt, MotionEvent.ACTION_DOWN, 100, 100, 0);即可
      
其儲存之後make monkey之後,按照我之前說的放入framework下面,再使用monkey命令,但是注意因為我們只是改動了一個事件的函式,所以如按照上述的例子,引數必須是--pct-motion 100 否則monkey就不能按照我們編寫的點選事件去完成case。 好吧。。基本是這樣的。。初步一點。。= =