最近,工作中涉及到需要對接口進行自動化測試,因而在網上找一些相關的資料進行學習一下。
接下來,通過他山之石,以解目前困惑,也方便大家都學習一下。
隨着雲計算、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