搜尋此網誌

2011年5月26日

Eclipse plugins - Code analysis

沒有試用過,是以 code review / code analysis 的角度去搜尋的
列出可能好用的東西
  • X-Ray - software visualization 1.0.4.1
  • Unnecessary Code Detector 1.7.0
  • STAN - Structure Analysis for Java 2.0.2
  • SSVChecker 0.1.2
  • Sourcecode Visualizer 3.6
  • DS-5
  • Klocwork
  • JNorm 0.0.7
  • eCobertura 0.9.8 => For Java only!
  • Eclipse Metrics plugin (Continued) 1.3.8
  • Data Hierarchy 1.0.0
  • Control Flow Graph Factory 3.6
  • Bytecode Visualizer 3.6
  • Code Rocket Eclipse 1.14
  • CheckThread: Static Analysis for Java Threading 1.0.9
  • Checkstyle Plug-in 5.3.0
  • CallGraph Viewer 0.9.0
  • Call Graph Plug-in 1.0.0
  • PMD
  • Checkstyle
  • Findbugs
  • MAT
  • ReviewClipse
  • AgileReview
  • TPTP
  • ObjectAid UML Explorer
  • ModelGoon
  • Android Graphic Analyzer

Android Browser Testing with Selenium / 瀏覽器自動化測試

Selenium IDE (Selenium-Core) -> Test runner
Selenium RC -> Driven
  1. http://www.artofsolving.com/node/48
  2. http://blog.csdn.net/jackyren007/archive/2009/05/15/4187376.aspx
  3. http://seleniumhq.org/docs/
  4. http://seleniumhq.org/
  5. http://www.jaceju.net/blog/archives/1293
  6. http://code.google.com/p/selenium/
  7. http://www.jroller.com/selenium/entry/selenium_overview_tutoriall
  8. http://www.ibm.com/developerworks/cn/java/wa-selenium-ajax/
  9. http://scw1109.wordpress.com/2006/07/26/selenium-ide-%E6%B8%AC%E8%A9%A6%EF%BC%8C%E5%8E%9F%E4%BE%86%E4%B9%9F%E5%8F%AF%E4%BB%A5%E9%80%99%E9%BA%BC%E8%BC%95%E9%AC%86/
  10. http://repeat.tw/blog/post/26423666

2011年5月20日

Ambient Light Sensor test 測試 / Light sensor 測試 / ALS-sensor 測試要點

Ambient Light Sensor 主要目的是偵測光源強度 (Lux),然後自動調整螢幕背光亮度 (Brightness / Backlight)

測試環境: (在暗處或者 light box)
Light source -> DUT's ALS-sensor -> ALS-sensor driver -> Brightness control

測試要點:

  1. 思考如何建置一個光均勻的 light source
  2. 如何產生一個乾淨的空間 (減少光散射與折射、減少外部雜光影響)
  3. 使用穩定的光度計來檢測光源,並定義合理的測試距離
  4. DUT's ALS-sensor 特性檢查
    • Driver output value 是什麼 (反映光 lux or sensor raw data)、interrupt 的間隔、combo module 狀況下的讀值問題
    • Driver 定義的 value mapping table (light source (lux) - ALS-sensor value - Brightness level)
    • Sensor ADC 讀值
    • Sensor 靈敏度
    • Sensor 解析度
    • Sensor range
    • Sensor 進光的角度
    • Sensor 感測的線性程度
    • Sensor 與 light source 之間的介質減損
    • Brightness 改變的 latency
實作建議:
  1. Module Calibration first
  2. 定義好 mapping table (light source (lux) - ALS-sensor value - Brightness level)
  3. 定義好讀值的間距 (ex. 100ms)
  4. 定義好 step,讓使用者感覺穩定且合理的 brightness 變化 (需要大量 test data 做基準)
  5. 取得 module 的單元測試程式,從單體 -> system 進行測試

nbench porting to Android

適用於 single processor 測試環境
修改 Makefile:

#CC = gcc
CC = /home/xxx/arm-none-linux-gnueabi-gcc
CFLAGS = -s -static -Wall -O3

Coremark porting to Android

  1. Coremark 定位在 single core (CPU) 的測試
  2. Readme.txt 提到,需要修改 "adjust <core_portme.mak>, <core_portme.h> (and possibly <core_portme.c>) according to the specific platform used."
  3. 先 copy 一份 config 到 ./linux/
  4. 首先 "make PORT_DIR=linux clean"
  5. 修改 "linux/core_portme.mak" / "linux/core_portme.c" / "linux/core_portme.h" / "Makefile"
    • core_poartme.mak


      • #CC = gcc
        CC = /home/xxx/arm-none-linux-gnueabi-gcc
        PORT_CFLAGS = -O2
        FLAGS_STR = "$(PORT_CFLAGS) $(XCFLAGS) $(XLFLAGS) $(LFLAGS_END)"
        CFLAGS = $(PORT_CFLAGS) -I$(PORT_DIR) -I. -DFLAGS_STR=\"$(FLAGS_STR)\" -static
        LFLAGS_END += -lrt

  6. 可編譯成幾種不同 mode:
    • General mode for default setting
      • make PORT_DIR=linux
    • General mode with iteration 
      • make PORT_DIR=linux -DPERFORMANCE_RUN=1 -DITERATIONS=1000
    • Validation mode 
      • make PORT_DIR=linux -DVALIDATION_RUN=1
    • Debug mode for incorrect CRC
      • make PORT_DIR=linux XCFLAGS="-DCORE_DEBUG=1"
    • Parallel mode_FORK
      • make PORT_DIR=linux XCFLAGS="-g -DMULTITHREAD=4 -DUSE_FORK=1"
    • Parallel mode_PTHREAD
      • Modify core_portme.mak (LFLAGS_END += -lrt –lpthread)
      • make PORT_DIR=linux XCFLAGS="-DMULTITHREAD=4 -DUSE_PTHREAD"
    • Profile mode (TBT)
    • Mem allocation_malloc
      • 修改 core_portme.h
        • define MEM_METHOD MEM_MALLOC
      • 配合上面的 make
    • Mem allocation_static
      • 修改 core_portme.h
        • define MEM_METHOD MEM_STATIC
      • 配合上面的 make
    • Mem allocation_stack
      • 修改 core_portme.h
        • define MEM_METHOD MEM_STACK
      • 配合上面的 make
  7. 執行 ./coremark or ./coremark 0x0 0x0 0x66 0 7 1 2000
  8. 結果就看 Total ticks / Total time (secs) / Iterations/Sec / Iterations / Compiler flags

iozone porting to Android

直接修改 Makefile
xxx 請用自己的 path 取代

#CC = cc
CC = /home/xxx/arm-none-linux-gnueabi-gcc -static
C89 = c89
#GCC = gcc
GCC = /home/xxx/arm-none-linux-gnueabi-gcc -static
#CCS = /usr/ccs/bin/cc
CCS = /home/xxx/arm-none-linux-gnueabi-gcc -static
#NACC = /opt/ansic/bin/cc
NACC = /home/xxx/arm-none-linux-gnueabi-gcc -static
CFLAGS =
S10GCCFLAGS = -m64
S10CCFLAGS = -m64
FLAG64BIT = -m64

2011年5月11日

Android 自動化測試蒐集

尚未與 Linux open source or community tool 做連結,只純粹 survey Android 目前可用於自動化測試的一些技巧

  • By plain JUnit
  • By Instrumentation (Android's JUnit extension)
    1. 建立 Android Test Project,要有 package name / application name 等 (依據不同的測試目的,Superclass 會不同)。官網提供的資料,可以測試
      • Activity
      • Service
      • Content Provider
    2. 需要指定 Test Target (待測軟體的 Name)。Step1 & 2 需要在 AndroidManifest.xml 裡面增加宣告。然後 Test project 的 JAVA source code 裡面要 import 待測程式的 package name
    3. 程式結構
      • Activity test:
        1. 建立 Constructor。進行 instantiate。 (Android testing framework 的要求)
        2. Override setUp() or tearDown()。用於 initialize 變數和環境,也可以記錄 DUT 的初始狀態。若要進行 keystroke 操作,要宣告 setActivityInitialTouchMode(false);
        3. 實作 testPreconditions()。Initialize DUT 是否正確。
        4. 實作測試主體。(Component 解析與測試、Keystroke & touch event 操作、UI test、State management)
    4. 執行測試
      • By Eclipse (JUnit tab)
      • By am
        • 可指定測試範圍 (All / Package / Class / Method / Size tag)
        • 可測試對象 (Function / Unit / Performance)
        • 可觀察指標 (Log / Performance value / emma / Debug)
      • By Dev. tool
  • By 3rd party test framework
    • Monkeyrunner / Monkey
    • By Sikuli
      • Install JRE on PC (Win / Linux)
        • Method1: Android device => Install VNC server, then could be controlled by PC
        • bMethod2: PC install "androidscreencast" tool. (http://androidscreencast.googlecode.com/svn/trunk/AndroidScreencast/dist/androidscreencast.jnlp)
        • Method3: Android device install "droid explorer" (teamviwer / webkey / free and awesome / Remote Control Phone / SL4A)
    • By Robotium
    • By Robolectric
    • By Selenium
    • By ASE
    • By ADB + Shell script
    • By JamoSolution
    • By CTS
    • By IDE plug-ins (TestDroid, DS-5, ...)
    • By commercial framework (Coverity / Codenomicon / QSquare / ...)

Automatic test framework (Open source)

參考 URL: