自動化軟體測試工具的專業範疇

自動化軟體測試工具的專業範疇

這篇文章主要說明自動化測試會用到的相關工具、為什麼要用這樣的工具、解決的問題與效益。

軟體自動化測試是一個很專業領域,由於所解決的特定問題不同,所以延伸許多的工具與技術。

隨著各式各樣的軟體平台與新興服務的誕生,軟體自動化測試也是一個不斷發展的領域。這邊針對一些業界常見的工具做介紹。

Selenium

Selenium Logo

提到網站自動化測試的領域一定會講到 Selenium。為什麼 Selenium這麼熱門,為什麼要使用 Selenium呢?

Selenium 主要用在網站的自動化測試 End to End.。Selenium可以實際啟動瀏覽器進行使用者所有在畫面會操作的行為。

免費! 這是理由之一。但是免費的還有很多,為什麼要用 Selenium呢?

另外一個主要原因是因為 Selenium可以支援的瀏覽器很廣,FireFox, Chrome, IE, Safari, Opera.等。

Selenium支援的 programming language 也很廣,Java, Python, Ruby, C#..等。

其他免費 open source的 Browser automation 測試工具還有https://github.com/geb/geb

但是筆者建議精通一種自動化測試架構 Selenium與程式語言 Python or Java 其實就足夠!

Robot Framework

http://robotframework.org/

Robot Framework 主要用在 Acceptance Testing 或是 BDD (Behavior Driven Development Testing)的測試領域。

Robot framework 也是基於Selenium 之上,提供額外的關鍵字指令,讓Web 自動化測試程式變得更容易。同時也提供HTML測試報告的功能。

如果沒有使用 Robot Framework 可以透過下列組合完成網站自動化測試。

  • Selenium
  • Java + TestNG (TestNG 提供測試報告的功能,可以將測試結果輸出為 HTML清楚的列出每個測試個案執行結果。)
  • Jbehave or Cucumber (主要用在 BDD or Acceptance testing)

佈署與執行

當自動化測試程式完成之後,我們希望執行在不同的平台 Win7, win2012, IE, Chrome, Foxfox, Mac  等,

因此我們會需要一個可以佈署測試程式的 framework

筆者建議可以使用 Selenium GRID or Selenium GRID extra

 https://github.com/groupon/Selenium-Grid-Extras/blob/master/README.md

相對於 SeleniumGRID,Selenium GRID extra 針對穩定性的提升與使用介面上有些改善。

另外,筆者也會建議 Software Testing Automation Framework (STAF)

 

Unit Testing

為什麼自動化測試需要Unit Testing framework ? 因為通常這樣的 unit Testing framework 會提供

  • 測試個案結果的驗證,紀錄測試成功或是失敗
  • 測試報告HTML。每個測試個案的結果
  • 測試的執行。測試個案執行上是否有先後順序、相依性等。
  • Data Driven Testing。透過參數檔案的設定,測試個案可以讀取參數檔案執行每個不同的資料值進行測試。

不使用 Unit Testing framework 也是可以做自動化測試。但是上述主要的情境會變成程式要自己處理。

筆者強烈建議使用 unit Testing 來協助管理測試個案與結果。

如果是使用Java : 可以用 JUnit 或是 TestNG。TestNG 最大的一個優點之一就是可以自動產生 HTML report.

如果是使用 Python: 可以使用 unittest

PhantomJS

http://phantomjs.org/

PhantomJS 主要是提供給 Web Developer 使用的網站自動化測試工具之一。

Web Developer 可以很容易透過 JavaScript 的執行就達到自動化測試。

同時,PhantomJS 可以與 Selenium一起使用,

對於使用 Java or Python 來做自動化測試而言,程式完全不用改,除了一行之外:

System.setProperty(phantom.binary.path, c:\\Path-drivers\\phantomjs.exe);

WebDriver driver = new PhantomJSDriver();

為什麼要使用 PhantomJS ? 如果我又不是 WebDeveloper

我已經習使用 Selenium Java or Selenium Python來完成自動化測試,使用 PhantomJS 有什麼好處?

使用 PhantomJS 主要的好處在於,執行時 PhantomJS並不會實際啟動瀏覽器! (這算什麼好處?)

由於 PhantomJS主要使用的 Script Engine 與 Chorme / Safari 都是相同。

因此,不啟動瀏覽器下的自動化測試執行,可以讓整個測試執行的時間大幅縮短。

筆者很建議可以先用 PhantomJS做基本的測試,接著再使用 Selenium 啟動實際瀏覽器 FireFox / Chrome做測試。

因為使用 PhantomsJS 由於執行速度快,可以比較快的知道測試的結果。

 JMeter

http://jmeter.apache.org/

Logo ASF

Jmeter 主要用在網站的效能測試。要如何模擬3000個線上使用者?

Selenium無法做到這樣的模擬。因此如果需要大量的使用者或是流量,我們就需要 JMeter 的協助。

如果你的自動化測試程式是 Selenium/Java 完成,是可以將該測試程式包裝成 Junit Class 透過 Jmeter 虛擬出大量的使用者

程式語言的選用

針對網站的自動化測試程式。筆者建議 Python or Java 。程式語言的選擇,考量上主要有幾個原因

  • Library 支援的廣泛。Python 與Java 都有廣泛的 lib可以使用。開發上可以透過這些 lib 達到需要的功能。
  • Unit Testing Framework: Python 與 Java 都有相對應支援的 unit Testing framework。相對的讓測試個案的執行與報告變得容易。
  • 其他系統的整合:Python or Java  都提供良好的程式介面可以與其他系統整合。

兩個語言主要的差異在於

  • python 為 Script 程式語言。如果執行有錯誤的時候,Python程式碼可以立即用一般的文字編輯器修改
  • Java需要 Java Runtime。如果執行上有問題的時候,必須要找到原始的Java程式碼,程式修改後需要重新編譯執行。

另外,由於 Sikuli 與 JMeter 也是用Java  開發,因此 Java 對於這兩個工具的整合會更容易與直接。

筆者建議可以選用Java! 為什麼呢? 因為 Java 除了自動化測試程之外,用途十分廣泛,Android也是 Java 開發。許多大型的網站也是 Java 開發。

AutoIT

https://www.autoitscript.com/site/autoit/

我們大部分講的自動化測試程式都是針對網站的測試。

如果是針對 Windows Application (例如小算盤、小畫家),這就是 Selenium 的罩門。

Selenium無法處理這類的應用程式,因此通常我們會透過 AutoIT的幫忙。

AutoIT 可以自動化 Windows Application 的操作,編譯成 EXE 執行檔。

AutoIT 雖然網站是 .com,但是使用AutoIT 整個工具還是免費的!

Behavior-Driven Development (BDD)

如果是用Java 開發,BDD建議的工具  jbehave.org

如果是用Python開發,可以使用 behave https://pythonhosted.org/behave/tutorial.html

這類的工具很多,還包含 Lettuce,  Cucumber

這類的工具主要目的也是 Acceptance Testing 與 Robot framework 要達到的目的類似。

可另外參考筆者這篇文章 “把人類語言變成自動化測試腳本” http://www.qa-knowhow.com/?p=1943

話說回來,不需要 BDD 可不可以執行測試程式? 答案是肯定的。

筆者經驗,多半的情況下 BDD 都不需要而且沒有使用。

為什麼呢? 主要原因在於 “把人類語言變成自動化測試腳本”!

這也表示撰寫的人類語言是需要受到一定的規範,電腦才可以執行成自動化測試腳本。

如果每次寫的都不同。例如瀏覽google 網站來說,

有時候寫 Visit Google Page 有時候寫 Open Google Page,有時候寫 launch Google Page…

那麼電腦還是很難執行的! 而這樣的規範往往會造成 BDD 的美意雖好,但是執行困難的主要原因。

 

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *