1. 程式人生 > >【介面自動化測試】使用Fitness實現介面自動化測試

【介面自動化測試】使用Fitness實現介面自動化測試

最近,工作中涉及到需要對介面進行自動化測試,因而在網上找一些相關的資料進行學習一下。

接下來,通過他山之石,以解目前困惑,也方便大家都學習一下。

隨著雲端計算、SOA、敏捷開發的熱火朝天,對於測試工程師的要求也是漸漸增加。目前,很多公司特別是網際網路公司都已經開展介面測試這樣的工作,隨著WEB架構的日趨複雜,介面的種類也多種多樣,有http、webservice、hessian、dao、message以及簡單的API介面,那麼如何設計或者選擇一款測試框架來完成對這些介面的測試成為了一個很大的挑戰。

本文 將簡單介紹一款由java開發的開源測試框架Fitness,在介面測試方面的使用,並且列舉一些簡單的demo來進行演示和說明。

Fitness是一個輕量級的開源框架,能夠幫助開發和測試團隊方便的定義介面,驗收測試(Acceptance Tests)。Fitness支援多語言軟體產品的測試,包括(JAVA、C、C++、Python、php)等等,具體使用可參考:http://www.fitnesse.org/.FitNesse.UserGuide,因為關於Fitness工具的介紹不是本文的主要意圖。

在FITness框架中,總共包括三個部分:Wiki、Test system、Fixtures。

1、Wiki部分將展現具體的Test Case以及Test suite甚至是Test Requirement;

2、Test system包括兩個部分:Slim、Fit,也就是Fitness的執行引擎;

3、Fixtures也就是真正的測試程式碼。Fitness具體框架如下:


【框架解說】:

從上圖可以看到,在Wiki Page上描述的是關於業務邏輯的測試用例,Fitness將會根據你所選擇的Test System(slim或者fit)來解析Wiki Pages所傳送過來的Test cases。

----【slim方式】假如我們選擇了slim作為我們的test system,那麼slim runner將會把網路傳輸過來的wiki指令碼轉換為一系列的指令,然後slim executer將會解析並執行這些指令來呼叫我們所編寫的測試程式碼,也就是Fixtures code,Fixtures可以是Java語言測試程式碼、C語言測試程式碼或者其他語言編寫的測試程式碼,測試程式碼將會呼叫被測物件來執行測試用例。

----【fit方式】假如我們選擇了fit作為Test runner的話,過程也是一樣。只是fit在解析Wiki指令碼的時候,與slim不一樣,fit會將Wiki page作為html頁面,然後通過解析html頁面來呼叫後臺的測試程式碼,來執行測試用例,相對於slim效能上較差。另外,在使用fit的時候,設計測試程式碼也必須繼承fit的類來進行編寫,相對slim測試程式碼編寫相對受限。

綜上,建議大家使用slim,因為slim會更加的輕量和高效。

我們可以使用Fitness做單元測試、整合測試、介面測試等相關測試,本文重點介紹的是Fitness在介面整合測試方面的使用,好啦,上面囉嗦了這麼多,該切入正題了。

下面的例子,將利用Fitness slim做Test Runner,進行JAVA環境下的介面測試。

Http介面測試

可以利用第三方工具httpClient.jar編寫http介面客戶端傳送Request在此我們做一個簡單的http介面測試,如對infoq登入介面進行測試。

首先,編寫測試程式碼如下:

1、傳送Post請求:

(1)、設定請求引數


該方法有兩個引數,第一個引數為Map型別表示請求表單引數,第二個引數用來表示表單引數的個數,其中parameters為NameValusePair陣列,並設為全域性變數。

(2)、傳送請求


該方法引數為:請求URL,postResponse為服務端返回值。

(3)、檢驗返回值


當然,這裡的postResponse,可能要根據業務要求的檢查點來做一些具體的解析,在本用例中不做詳細的解析。

接下來,用Fitness來設計測試用例並執行測試:

(1)設定表格環境變數,指定使用slim作為Test system,並且定義classpath,便於fitness能夠驅動測試程式碼執行用例。

(2)定義測試資料,如提交的表單資料使用者名稱和密碼,我們是用來測試infoq的登入功能。

(3)定義預期輸出值,在登入infoq成功之後,伺服器返回引數中會返回“OK”字串,該測試用例就是用來描述是否登入成功的scenario。

原文連結:

http://blog.csdn.net/gzh0222/article/details/7870107