搜尋此網誌

2011年12月28日

Android GUI test summarize / Android keyevent 測試

Android GUI測試上,只有 monkey 工具類似 MS LTK 裡面的 GUI load test 項目
GUI 測試一直是很耗費人力,且需要很多額外判斷方法的測試項目
如何做到自動化是件困難的事情

Android 目前有一些測試工具或方法,整理如下。

Software stack layer 大致分類來看:
Test Type
Methodology
GUI Directly
1.GUI record and play
2.Send key / touch event
Application
1.Instrumentation / Unit test
2.Activity element control
Framework
Hook key logger

從功能分析:
Test Type
Tool Name
Behavior Control
Limitation
GUI Directly
Sikuli
Sikuli
Any shell
Any scripting tool (AutoIt / AutoHotKey / …)
Any program language
Remote screen

Activity element
Control by activity element


Experitest
GUI record and play
Commercial
Cannot native AP (TBC)

Key event
Adb keyevent (Key)
Sendevent / getevent (Touch)
UI uniform problem

Monkey
Any shell
Any scripting tool (AutoIt / AutoHotKey / …)
Any program language


Monkey runner
TBC

Instrument
Instrument
Unit test
Instrument / Unit test
Robotium / Selenium
Eclipse plugin (Testdroid)
Test single AP only or owned AP only
Framework
Key logger



*Remote screen:
1.MyMobiler (Remote control)
2.DDMS (Display only)
3.VNC (TBT)
4.QTADB (Display only)
5.Android Screen Monitor (Display only)
6.androidscreencast.jnlp (Remote control)
7.Android Projector (Display only)
8.AndroidScreenCapureSetup (Unknown)
9. droidAtScreen-0.5.1.jar (Unknow)

Sikuli + Robot Framework idea

2011年12月23日

Android streaming test idea / Android 串流多媒體測試想法

測試網址:

  1. 可以從 Google 搜尋
  2. 從 free player (Internet radio / Internet radio) 裡面的 URL list 搜尋 (例如  Stream Media Player 裡面就有列出 URL)
  3. 自行架設 (Wiki 有列很多 streaming service 系統,最快就是用 VLC。但是 1.1.11 版的,都跟 Android client 配不起來,還在測試中)

測試對象 (Client):

  1. Android SDK API: MediaPlayer, AsyncPlayer, JetPlayer
  2. Market free player: Doga, MX Video Player, QissMusic, StreamMediaPlayer, Stream Media Player, VLC Direct, yxplayer, 達龍
測試方法 (Client):
    0. Behavior check:
       a. Downloading and playing at the same time.
       b. URL check speed with different patterns size.
       c. Network check speed with different network type.
       d. CPU / Mem load
       e. Touch panel response
    1. Normal condition:
       a. Could play by all protocols.
       b. Could play specific patterns (mp3).
       c. Count down & UI are sync and correct.
       d. Slow network
    2. Abnormal condition:
       a. URL:
          1. Wrong URL format.
          2. URL unreachable (Pattern not exist).
          3. Incorrect pattern type.
 4. URL invalid while playing (During one cycle then go to next cycle)
  b. Network:
     1. PDP 
 2. WiFi
 3. No network (Airplane mode)
 4. Network invalid while playing (During one cycle then go to next cycle)

待解決問題:
  1. 如何用程式判斷 streaming URL 是存活的
  2. VLC streaming 都讀不到

2011年12月19日

Android File IO Performance Test

並沒有參考過 Linux open community tool algorithm
這是下一步要改進的
目前針對以下幾個項目,然後用各種不同的 Java IO 方式來進行測試

l   Src / Dst path [option]
l   File size [option]
l   Test cases
n   Sequential R/W (Postpone)
n   Random R/W (Postpone)
n   Creating (Low IO / High IO / New IO with buffer size, file size and algorithm)
u  Create many small files
u  Create large file
n   Copying (Low IO / High IO / New IO with buffer size, file size and algorithm)
u  Copy many small files
u  Copy large file
n   Deleting
u  Delete many small files
n   File compression / decompression
n   File encryption / Decryption

Test scenario: (Algorithm, BufferedReader, BufferedWriter, read / write by buffer)
         //createNative1(dstFlash, size);
        createNative2(dstFlash, size);
        createBuffered(dstFlash, size);
        createNIO(dstFlash, size);
        createRandom(dstFlash, size);                             
        //nativeStream1(srcFlash, dstFlash, size);
        nativeStream2(srcFlash, dstFlash, size);
        //nativeReader(srcFlash, dstFlash, size);                             
        //bufferedStream1(srcFlash, dstFlash, size);
        bufferedStream2(srcFlash, dstFlash, size);
        //bufferedReader1(srcFlash, dstFlash, size);
        //bufferedReader2(srcFlash, dstFlash, size);
        customBufferStream1(srcFlash, dstFlash, size);
        customBufferStream2(srcFlash, dstFlash, size);
        //customBufferReader1(srcFlash, dstFlash, size);
        //customBufferReader2(srcFlash, dstFlash, size);                               
        newIOBuffer(srcFlash, dstFlash, size);                         
        bySystemCmd(srcFlash, dstFlash, size);                               
        // copySmallFiles(flashPath, flashPath);
        // customBufferBufferedStream(srcFlash, dstFlash);
        // customBufferBufferedReader(srcFlash, dstFlash);
        // appliedCompression(srcFlash, dstFlash, size);
        // appliedCaching(srcFlash, dstFlash, size);

2011年12月15日

[蒐集] Android 自動化測試初探

http://www.linuxidc.com/Linux/2011-06/37906.htm
http://my.oschina.net/zhangqingcai/blog/36272
http://softteco.blogspot.com/2011/03/android-low-level-shell-click-on-screen.html

[轉] Android 3.1出現 android.os.NetworkOnMainThreadException異常

Android 檢查網路連線的兩個方法

一個是用 NetworkInfo isConnected,一個是用 ConnectivityManager getNetworkInfo(?).getState()

private void conditionCheck() {
        
         try {
              ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
             
              NetworkInfo activeNetwork = cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
              if (activeNetwork.isConnected())
                  Log.w(name, "1 ok");
              else
                  Log.w(name, "1 fail");
             
              NetworkInfo activeNetwork1 = cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
              if (activeNetwork1.isConnected())
                  Log.w(name, "2 ok");
              else
                  Log.w(name, "2 fail");
                           
              if ((cm.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED))
                  Log.w(name, "Mobile network is ok");
              else
                  Log.w(name, "Mobile network is fail");
             
              if ((cm.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED))
                  Log.w(name, "WiFi network is ok");  
              else
                  Log.w(name, "WiFi network is fail");
         } catch(Exception e) {
              e.printStackTrace();
         }
     }

但是以下這段卻不 work…還不知道為什麼
if ((cm.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState() == NetworkInfo.State.DISCONNECTED)
                       && (cm.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState() == NetworkInfo.State.DISCONNECTED))
Log.w(name, "Cannot reach the pattern!");

2011年12月14日

[轉] Android 對 HTTP / URL 的請求方法

要做 streaming 時,想對 URL 對象做檢查
可以參考這兩個網頁:
  1. http://blog.csdn.net/zuolongsnail/article/details/6373051
  2. http://lrc-1986.iteye.com/blog/868799