本篇討論概念,另外會寫一篇關於 Android automatic test 的文章。本篇希望涵蓋各種執行方法,有彈性的運用在系統測試面。
本篇純粹是個人經驗,非業界專業用語或教科書用語。
也不用太狹隘的去解釋自動化這個字眼,例如 dir 是個指令,廣義來說也是個自動化的執行方法或環境。
在我的規畫,是希望自動化方式能提高工作量、穩定且降低人為失誤,最重要是將測試人員的能力與層次做提升,而非用來取代人力或減少人事成本的考量。其中特別要注意的是,自動化的前提是 DUT (系統、軟體、GUI...) 是處在可以被測試的狀態,而非僅處在可以用的狀態。軟體 Guys 最奇怪的想法之一就是東西可以動了,你們就可以測了。這是不對的,是要可以被測試,然後才可以進行測試。如果開發前,沒有將測試的需求放入,到時候就沒有"軟體測點",那請問要如何進行控制? 一個沒有鎖的門,卻要鎖將去開鎖,不是很奇怪嗎? 所以我提倡的是開發前一定要將測試需求放入,這也就是所謂的 TDD (Test-driven Development)。
在我的規畫,是希望自動化方式能提高工作量、穩定且降低人為失誤,最重要是將測試人員的能力與層次做提升,而非用來取代人力或減少人事成本的考量。其中特別要注意的是,自動化的前提是 DUT (系統、軟體、GUI...) 是處在可以被測試的狀態,而非僅處在可以用的狀態。軟體 Guys 最奇怪的想法之一就是東西可以動了,你們就可以測了。這是不對的,是要可以被測試,然後才可以進行測試。如果開發前,沒有將測試的需求放入,到時候就沒有"軟體測點",那請問要如何進行控制? 一個沒有鎖的門,卻要鎖將去開鎖,不是很奇怪嗎? 所以我提倡的是開發前一定要將測試需求放入,這也就是所謂的 TDD (Test-driven Development)。
思考起點:
- 任何事情都遵守一個 model => Pre-condition -> Input -> Process -> Output
- 將 Process 用非人工方式處理,就稱為自動化。當然也分 Full / Semi / 全手工三種模式。
定義: (本篇以測試自動化為思考原點)
- 測試自動化: 將事情,透過軟體來達成自動化的執行。範圍將在下面做定義。
- 自動化測試: 狹義解釋為針對 Code 本身的驗證自動化。廣義的定義跟測試自動化一樣。
測試自動化的定義 |
目的:
- Routine job (類似系統備份、自動安裝、Server 設定等項目)
- Long run / Stress test
- 產線測試程式
- System benchmark / Performance test
- 資料分析 / Data mining
- Unit test
- 儀測 (NI 的 Labview 就是個好例子)
- Network 產品測試 (能用 protocol 觸發進行測試)
- 自動手臂 (環測、機器手臂、治具控制等)
- GUI test / System test (這塊比較難)
- Regression test
- Parameter test (各種組態、執行路徑、變數、環境改變的測試自動化)
- Infomration check
- Diagnostic test (Memory leakage, CPU usage, ...)
- Data input
SEARCH 處理原則: (參考 1992 一篇論文)
- Setup
- Execution
- Analysis
- Reporting
- Cleanup
- Help
好處:
- 固定流程 (穩定性、長時間續航力、變異性低、可靠度高) => 特定領域的好處,非全部
- 自動化 (節省人力)
- 若能實現一對多控制,將更能節省時間
- 用時間和次數分攤成本 (可重複使用)
- Routine jobs
壞處:
- 並非所有事情都可以自動化,需要人眼判斷的部分,若由 Sensor 或影像處理判讀,其可靠度值得商議。
- 公信力 (沒有工業標準,容易被挑剔)
- 準確度 (誤判的機率比較高 - False positive / False negative)
- 開發的成本
- 一對多控制 implement 困難度高
- 純 GUI 部分難以自動化。就微軟的經驗,他們會忽略 GUI 的展現層,直接呼叫底層的物件模型,或者用類似的方法來進行控制。
- Method1: Keyboard / Mouse record and replay
- Method2: Inspection test (參考 NI 機器視覺與影像處理)
- Method3: 呼叫底層 DOM or function call => 與使用者實際執行路徑可能不同,有些 Bug 會找不到
Link Topology - 連結方式:
- Client - Server (Server: 控制者 / Client: 代測端)
- Loop mode (Test-Station-Output -> DUT1 -> DUT2 -> Test-Station-Input) => Smartbit 就是一個例子
Topology Examples |
使用對象:
- Network appliance
- CPE device
- Telecom device
- Software component / Software application
- Electronics analysis / Instrument control
- GUI automation
- Server maintenance
Test Scope & Layer mapping
Test Scope from Layer View |
實現方法:
- 程式撰寫進行控制 (High level language / Scripts)
- 套裝測試軟體
- Keyboard / Mouse 攔截
- Keyboard / Mouse 錄製 & replay
- 軟體單元測試
- 軟體動態測試 / 靜態測試
- DOM 控制
特定 OS provider 提供的自動化測試軟體:
- Google Chrome or Chromium: Auto test
- Ubuntu: Checkbox
- Android: CTS
- Android: Monkey / Monkeyrunner
- Meego: MCTS / QA tool / Compliance program / mnts / ui-automation / OTS (搞不清楚它到底在定義啥...ps. Meego Wiki 內容有些不錯,但是排版方式真是爆爛的,找資料真的會找到吐血)
- Microsoft: LTK
- Adobe DCTS (For Flash feature)
常用工具: (有的是軟體、有的是測試 framework)
- Labview
- QualiSystems
- Codenomicon / Nessus
- AutoIt
- AutoHotKey
- Sikuli
- Visual Studio
- Chickenfoot
- Macro (巨集)
- Scripts (Bash / Power shell / Batch / Android - ASE / Python / Perl / Ruby / ...)
- Android - Monkey / Android - Robotium / Android - JamoSolution / Android - Autoandroid
- JUnit
- JMeter
- SOAPUI
- OpenSTA
- Testkit / Testrunner
- QTP
- Rational
- Selenium
- Watir
- LoadRunner
- STAF
- QMetry
- Loadstorm
- TestComplete
- SmarteSoft
- OProfile
- strace
- ...
關鍵字:
- Auto test / Automatic test / Test automation / Automative
- Clicking monkey
- GUI test
- keystrokes / Keyboard / Mouse record and replay
- Distributed execution environment
參考網頁:
- http://www.wretch.cc/blog/kojenchieh
- http://www.softwaretestingstandard.org/
- http://www.opensourcetesting.org/
- http://www.onestoptesting.com/
- http://www.aptest.com/index.html
- http://www.softwaretestingclub.com/
- http://extremesoftwaretesting.com/
- http://www.io.com/~wazmo/qa/
- http://www.qaforums.com/
- http://www.softwaretestingstuff.com/
- http://www.buzzle.com/articles/software-testing/
- http://www.softwaretestinghelp.com/
- http://www.softwaretestingstandard.org/
- http://www.51testing.com/html/index.html
- http://www.chinaitlab.com/
- http://www.testingfaqs.org/t-gui.html#Eggplant_for_Mac_OS_X
- http://stevenhsu.myweb.hinet.net/
- http://big5.51job.com/gate/big5/arts.51job.com/arts/79/282900.html
- http://safsdev.sourceforge.net/FRAMESDataDrivenTestAutomationFrameworks.htm
- http://en.wikipedia.org/wiki/Test_automation
- http://code.google.com/p/vauto/
- http://www.ibm.com/developerworks/rational/library/591.html
- https://github.com/TMTS/Android-automation#readme
沒有留言:
張貼留言