自動化測試工具簡介與使用情境

自動化測試工具簡介與使用情境

自動化測試一直是軟體工程努力的目標,這篇文章主要說明幾種自動化測試工具(Jmeter, python, selenium, sikuli, AutoIT)與適合使用的情境。

Selenium – 網頁 or 手機自動化測試

Selenium Logo

談到Web Automation testing 就一定會談到Selenium 。Selenium提供 E2E Automation

模擬人對於瀏覽器的操作行為,同時支援各大瀏覽器的操作,IE, Firefox, Chrome, Safari, Opera 等,

另外,Selenium提供的 lib可以用Python、C#、Java,這讓自動化測試的延伸性與彈性更加廣泛

為降低寫自動化測試程式門檻,Selenium也提供FireFox IDE可以自動產生相關的測試程式,

更可以將錄製的程式直接輸出為 Python, Java等測試程式。

官方網站: http://www.seleniumhq.org/

Python – 自動化測試常用的程式語言

Python 由於跨平台,直譯式語言、支援許多額外的模組套件,因此常被與 selenium 一併使用來作 Automation

除了使用 Selenium WebDriver library 之外,http://selenium-python.readthedocs.org/en/latest/installation.html

筆者也會推薦下列套件,讓整個測試程式更符合測試情境。

推薦套件 測試情境
“unittest” for Unit testing  當我們對於每個測是個案做驗證的時候,判斷成功或是失敗,並且回傳測試結果。我們可能需要寫許多的程式如下:testing Case 1: if a= a then “success” else “fail”

testing Case 2: if B = B then “success” else “fail”

使用相關的 unit test 套件,就可以很方便的定義並且判斷每一個測試的成功條件,

並且可以將每個測是個案結果結構化的輸出為測試報告。

testing Case 1:  Assert (A, A)

testing Case 2: Assert (B, B)

https://pypi.python.org/pypi/unittest2

Data Driven Testing 許多的情況下,我們會需要多組的測試資料,重複執行。例如,網站的登入。如何建立 100 組登入資料,並且透過程式自動化執行。這個情況,就需要 Data Driven Testing 的套件。 https://pypi.python.org/pypi/ddt

http://ddt.readthedocs.org/en/latest/example.html

Testing Report in HTML 如果我們希望測試結果報告可以輸出為 HTML格式,這樣一來,每次測試完畢的測試報告,就可以放在內部網站,讓團隊參考。我們可以使用 HTMLTestRunner來完成這件事情。 http://tungwaiyip.info/software/HTMLTestRunner.html
Testing Windows UI Selenium 可以讓我們對於網頁的元件進行自動化測試,但是如果是 Windows UI 或是 Windows app (小畫家、小算盤)等,要如何自動化測試呢?提供另一個 python 的套件, pywinAuto

https://code.google.com/p/pywinauto/

http://pywinauto.googlecode.com/hg-history/0.4.2/pywinauto/docs/contents.html

 

Sikuli – GUI自動化測試

官方網站: http://www.sikuli.org/

Sikuli 是另一個 UI Automation 的重大發明!  最大的優點是,只要透過螢幕畫面的擷取,就可以完成自動化設,甚至是用 PowerPoint 說明的操作畫面流程,可以變成 automation。當然,這樣測試的最大缺點是,只要畫面有些更動,相關的測試腳本(螢幕畫面)就要重新擷取修改。

Sikuli 也提供 Java 的套件,可以使用 Java programming 語言來對 sikuli 操作。

Sikuli 寫完的程式範例如下:

下列範例為,開啟Firefox,並且等待 google 頁面出現,輸入網址 mail.google.com

等待mail.google.com頁面中 Username:的出現,輸入 “paradise.lsj”,最後 Sign in

Jmeter  – 網頁自動化測試

官方網站 http://jmeter.apache.org/

Apache JMeter

Jmeter 除了可以作網站效能測試之外,其實也可以用來執行 Web UI  的自動化測試。 與 Selenium 有什麼不同呢?

  • Selenium 為真實的模擬 Browser 操作,會啟動 Brwoser ,進行自動化測試。 Jmeter 不會啟動 Browser,Jmeter 不會執行 CSS, 不會執行 JavaScript等。Jmeter 僅會根據 Http Response 的結果進行驗證
  • Jmeter 對於網頁的操作是直接傳送 http get or Http Post Request。Selenium 為模擬人的操作行為,點選網頁的元件。
  • 對於結果的驗證,Jmeter 直接針對 http Response 的內容驗證(不管最終 UI 顯示的結果為何)。selenium  是針對瀏覽器最後呈現的結果驗證。

AutoIT – Windows UI自動化

Home

如果要做的自動化測試是高度與 windows 環境有關,那麼就必須要使用 autoIT

AutoIT 可以完成的自動化測試相當於使用 pywinAuto + Python

例如:我們希望點選 “開始” > “程式集” > “xxx應用程式”

例如:我們要針對小算盤這種 native Windows 程式,做自動化測試

例如:有些網頁在執行時,會出現 Windows 視窗。檔案上傳選擇檔案的視窗

這些情況下,我們就需要透過 autoIT 的幫助,對於 windows UI  做測試。

這個工具提供錄製的功能,因此可以透過人的操作之後,自動產生相關程式。並且可以將該程式編譯為 EXE。

由於程式主要針對 windows UI,因此 mac or Linux 都不適用.

Distributed Testing

當我們有多的測試個案,希望這些測試個案可以在不同機器、不同環境下執行自動化測試,有哪些工具可以幫忙呢?

其實上述的測試工具都有提供類似這樣的套件,讓我們可以將自動化測試程式佈署在不同的機器上執行,並且回傳測試結果。

  • Selenium GRID
  • JMeter Master/Slave

 

Integration with Jenkins

要如何將測試的結果與 jenkins 結合? 最理想的方式為每天都有 daily build ,build 完之後執行自動化測試,並且將測試結果輸出到 Jenkins 中。

如此一來,每天上班就可以看 Jenkins Dashboard 得知測試結果。

無論用哪種測試工具,要讓測試結果可以呈現在 Jenkins 上,只要讓測試結果輸出為 XML format 即可。

如果是使用 Java 的話,可以直接利用Junit 來輸出。

如果使用的是 Python 的話,介紹一個套件 “XML runner “。https://pypi.python.org/pypi/xmlrunner/1.7.4

XML runner 會將 python unit testing 的測試結果輸出為 XML format。

如此一來,jenkins 就可以直接讀取該測試結果,並且呈現在 Jenkins Dashbard。

範例程式如下:透過 XMLrunner ,將 unit testing 的每個測試個案結果輸出為 XML

[pastacode lang=”python” message=”Python XMLrunner” highlight=”” provider=”manual”]

import unittest
import xmlrunner

class TheTest(unittest.TestCase):

    def testOne(self):
        self.assertEquals(1, 1)
    def testTwo(self):
        self.assertEquals(2, 2)
    def testThree(self):
        self.assertEquals(3, 4)

if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(TheTest)
    xmlrunner.XMLTestRunner().run(suite)

[/pastacode]

參考來源:http://stackoverflow.com/

自動化測試工具小結

自動化測試工具 使用情境
AutoIT 針對 Windows UI 操作的自動化測試
Selenium 針對網站模擬瀏覽器的自動化測試Selenium 也有手機版 (Appinum)可以完成 android or iOS 自動化測試
Sikuli 利用畫面辨認的方式,完成自動化
Jmeter 利用 http request / response 來執行自動化測試。
pywinAuto 對於Window UI 的自動化測試python + PyWinAuto
Java or Python 自動化測是最常被使用的語言為 Java or Python 。對於自動化測試,兩個工具程式的支援套件都很廣。特別提的是 Sikuli 與 Jmeter。這兩個工具都是 Java 完成。因此對於 Java 來說,要操作 Sikuli or Jmeter 會更容易一些。

 

Leave a Reply

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