在 Android 4.4 自動化測試時,錄製測試的操作過程

自動化測試時,經常會透過印 log 或截圖的方式,將操作的過程給紀錄下來,但難免有些 log 訊息會少打,不然就是 log 出來的訊息遺漏掉一些重要的資訊,讓我們無法從這些 log 解讀出到底是什麼原因而導致,在 debug 上確實會有一些難度。

最近想到一個方法可以讓我們在 debug 上會有一些幫助,就是透過錄影的方式 ! 畢竟有些 bug 不是每次操作都會發生,有些都是偶然發生的情況,要重製也不一定每次都能被重製出來,如果有影片可以佐證就能夠達到不錯的效果。

我找尋了不少錄製 Android 設備螢幕上的操作軟體,像是 MobizenRecordable 這些 App 或 adb (Android Debug Bridge) 裡的 screenrecord 

我先選擇使用 screenrecord 來做研究,該指令的使用可以參考這篇 screenrecord 使用教學

接著我們就來將錄影的動作整合到自動化測試裡,我使用的 Android 自動化測試是 uiautomator,以下是實作的程式碼:

Record record;

class Record extends Thread {
   private String videoName;

   Record(String name) {
      videoName = name;
   }

   public void run() {
      try {
         Runtime.getRuntime().exec("screenrecord /sdcard/" + videoName + ".mp4");
      } catch (IOException e) {         
         e.printStackTrace();
      }
   }
}

public void startRecording(String name) {
   record = new Record(name);
   record.start();
}

public void stopRecording() {
   record.interrupt();
}

你可能在執行 test case 時的 setUp() 動作時做錄影的動作,然後在 tearDown() 做結束錄影的動作,程式碼如下所示:

public void setUp() throws Exception {
   startRecording("2014-08-03"); // 開始錄影, 影片名稱 2014-08-03

   // ... 執行測試的前置步驟
}

public void tearDown() throws Exception {
   // ... 執行測試的結束步驟

   stopRecording(); // 結束錄影
}

在測試執行前與執行後錄下整個執行過程,就能記錄到整個執行的流程,當然也可以根據 test case 的重要性決定是否要錄影,或者是單獨只是錄下某些比較常出錯的操作,這樣就可以幫助我們 debug。

廣告

2 thoughts on “在 Android 4.4 自動化測試時,錄製測試的操作過程

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s