12/08/2018, 15:32

[Android] UI/Application Exerciser Monkey

I.Giới thiệu Là 1 dev android bạn đã bao giờ ngồi test free app của mình để tìm bug crash chưa. Với mình việc click lung tung vào app để tìm bug crash là một việc hết sức nhàm chán và mệt mỏi. Để không phải tự mình làm việc này các bạn có thể đánh vài câu lệnh đơn giản để cho device tự ...

I.Giới thiệu

  • Là 1 dev android bạn đã bao giờ ngồi test free app của mình để tìm bug crash chưa.
  • Với mình việc click lung tung vào app để tìm bug crash là một việc hết sức nhàm chán và mệt mỏi.
  • Để không phải tự mình làm việc này các bạn có thể đánh vài câu lệnh đơn giản để cho device tự động làm điều đó cho mình.
  • Với những bug crash được báo mơ hồ, như đang dùng tự nhiên chết, không tái hiện lại được, thì việc dùng Monkey test giúp bạn được điều đó khá tốt.
  • Monkey test thực hiện việc giả lập các tương tác vào màn hình điện thoại, tại các vị trí bất kỳ, theo 1 tốc độ cao, và không theo 1 tuần tự nào.
  • Mình thấy Monkey test ít được các dev android dùng đến và mình cũng trong số đó, vì khi test Monkey sẽ tạo ra các bug vô cùng khó khăn để fix ^^.
  • Qua bài viết này mình hi vọng các bạn sẽ biết đến Exerciser Monkey và cách sử dụng nó phục vụ cho dự án.

II.Cách thực hiện

  1. Sử dụng Monkey
    • install android-tools-adb
        $sudo apt-get install android-tools-adb
    
    • Run adb
        $sudo adb
        $sudo adb devices
    
    • Gõ theo cấu trúc sau:
        $ adb shell monkey [options] <event-count>
    
    vd:
       $ adb shell monkey -p your.package.name -v 500
    
    -> Mở app và đợi kết quả sẽ thực hiện 500 event bất kì trên màn hình
  2. Điều khiển Monkey ( opitions )
    • p <allowed-package-name>

      • Nhập vào tên package name cần test
    • v

      • Nhập số lần click trên màn hình (giá trị này để ở 1 con số hợp lý và tăng dần theo từng lần test từ 1000 > 5000)
    • s <seed>

      • Thời gian sau mỗi lần click
    • c <main-category>

      • Các loại hoạt động cần test, nếu không thêm thì mặc định là tất cả các hoạt động của Intent CATEGORY_LAUNCHER và CATEGORY_MONKEY
    • throttle <milliseconds>

      • Time sau mỗi lần click event
    • pct-touch <percent>

      • Điều khiển số % thực thi việc click down-up trên màn hình
    • pct-motion <percent>

      • Điều khiển số % thực thi việc vuốt, di chuyển trên màn hình
    • pct-trackball <percent>

      • Điều khiển số % thực thi việc kết hợp vuốt và click trên màn hình
    • pct-nav <percent>

      • Điều khiển số % thực thi việc điều hướng lên/xuống/trái/phải (với app tương tác đơn giản thì không nên dùng option này hãy set nó = 0)
    • pct-majornav <percent>

      • Điều khiển số % thực thi việc click các phím cứng trên màn hình (back, home, setting ...)
      • Nếu test từng màn hình thì không nên dùng option này nó sẽ làm loạn hết các màn hình cần test sẽ không theo mong muốn của mình

    • pct-syskeys <percent>

      • Điểu khiển số % thực thi việc click các chức năng của hệ thông (gọi, nhắn tin, click icon, âm lượng, wifi,...)
      • Tương tự như option pct-majornav không nên dùng cái này

    • pct-appswitch <percent>

      • Điểu khiển số % thực thi việc gọi 1 activity mới

      -> Ngoài ra còn 1 số setting và option khác mình thấy nó không cần thiết dùng cho quá trình test , các bạn tự tìm hiểu thêm

III.Kết Thúc

  • Kết quả sử dụng
    • Tự động testing hiệu quả
    • Dễ dàng sử dụng, linh hoạt thay đổi
    • Test không theo 1 quy chuẩn nào, không theo 1 case nào thích hợp tìm các bug khó gặp trong quá trình test thông thường
    • Đặc biệt test được các bug về hiệu xuất hoạt động, các luồng bất đồng bộ, các thread rất hiệu quả
    • Nó là công cụ để nâng cao chất lượng sản phẩm, tạo việc làm cho dev khi không tìm ra bug nào nữa để fix.
0