1. 程式人生 > >服務端測試之接口測試初探

服務端測試之接口測試初探

公開課 sock 先來 設計 自動化腳本 提供服務 傳遞數據 格式 什麽是

  提起服務端測試,第一反應想到的可能就是http協議、socket連接、post/get發送請求等等。回想起小編當時初次接觸服務端測試,真可謂一臉懵逼,不知道要幹什麽也不知道從哪兒開始做。服務端測試往往呈現給大家的是一個很大很寬泛的任務,我們知道要做服務端測試但卻不知道怎麽做,流程是啥,用什麽工具去做,要達到什麽樣的效果。今天小編就結合最近自己做的一些服務端測試的任務,和大家聊聊服務端測試中的一個常見方法——接口測試。

一、什麽是接口測試

先來看看接口測試的定義:

接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。測試的重點是要檢查數據的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關系等。

如今的軟件系統通常采用前後端分離的模式進行設計與實現,即一個系統分為前端(客戶端)和後端(服務端)兩部分。通常服務端以接口的形式給客戶端提供服務,實際上接口和客戶端的功能之間是關聯的:每個接口都對應著客戶端一個或多個功能點;而客戶端同服務端的交互,一般也是以接口作為基礎,客戶端根據不同的需要請求不同的接口,服務端根據客戶端請求的接口及攜帶的參數進行邏輯處理。因此服務端測試可以先從接口測試入手,保證其對客戶端提供的服務沒有問題後再進行更加深入的業務邏輯測試,這也是目前我們做服務端測試的一個“套路”。

定義中說的接口包括兩種:系統與系統之間的接口,內部各個子系統之間的交互點。根據不同的劃分會有不同的結果:如果我們把一個系統的客戶端和服務器看成一個整體,那麽此時服務端的接口相當於是內部子系統之間的交互點;如果我們把客戶端和服務端各自看成是一個整體,那麽接口就相當於是不同系統之間的交互點了。

二、接口測試常用工具

說到接口測試,最常見的一種測試方式就是檢查服務端返回的數據正確性了。實際項目中,服務端在收到客戶端的請求之後,對請求進行處理並將處理的結果返回給客戶端,這種結果比較常見的是Json、XML等數據格式,所以測試的時候一個主要工作就是檢查這些數據的正確性。比如,服務端以Json的格式返回客戶端需要的數據,那麽在測試中我們就需要關註返回的Json中是否包含我們期望的字段、字段的內容是否正確等等。這個時候自動化腳本就顯得非常重要了。

小編在測試過程中發現好多接口都是以Json格式返回數據的,在實際執行中,我們用到了Python的一個開源框架Requests,該框架保留了所有urllib2的優點,比起urllib2更加簡潔明了,更像是純粹的“Python”,該框架在平時接口測試中幾乎所有的自動化腳本中都在使用,關於該框架,小編之前在一次公開課中做過一次分享,有興趣的話大家可以關註搜狗測試粉絲群(459645679)進行查看哦。

還有一些工具在實際的操作中用的比較多,比如Postman。Postman是谷歌Chrome的一個插件,使用起來非常簡單,可以支持我們以get/post等各種方式發送請求,當然也可以自己構造請求,服務器返回的數據會全部展示出來,便於檢查,這和Fiddler比較相似。此外Postman還支持用戶自行構造環境,設置檢查點等,不考慮時間的情況下基本能滿足接口數據驗證的需求。關於Postman的安裝和使用教程,網上資源比較多,此處就不再贅述了。

接口測試的工具和自動化框架可謂非常多,除了上面羅列的之外,還有許多實踐中比較常用的:urllib/urllib2,Jmeter等等,關於各種工具的使用和優缺點,小編會在後續的文章中結合自己項目的使用情況和大家進行分享。

三、接口測試的用例設計

不同於功能測試,接口測試的用例設計出了要驗證正常功能之外,還需要考慮其他的一些情況,總結起來,接口測試的用例設計可以從以下幾個方面入手:

1.功能用例設計

服務端的接口與客戶端的功能是對應的,那麽這個接口是否能提供給客戶端某個特定功能所需要的數據自然是我們需要驗證的地方,功能性用例的主要目的是幫助我們驗證該接口最初設計的功能是否被實現以及該功能是否按照規定的接口文檔進行實現等等。

2.業務邏輯用例設計

業務邏輯方面的測試用例主要是針對服務端接口的處理邏輯進行的用例設計,這種用例設計不是針對某個功能點是否實現,而是對接口的處理邏輯以及一些相互依賴的業務進行驗證,通常依照接口的邏輯流程圖來進行。舉一個例子,購物系統中的兩個動作:登錄和下單操作,這兩個業務是相互依賴的,下單操作必須在登錄完成後(登錄狀態下),否則無法完成下單,這個時候我們就可以設計這樣一條case:沒有登錄的狀態下進行下單操作,看服務端如何處理。

3.異常處理的情況

服務端接口和客戶端之間通常是通過HTTP請求來傳遞數據,在發送請求的時候,客戶端會攜帶各種不同的參數,此時服務端會根據不同的參數進行不同的處理,所以異常處理主要是針對請求中的參數情況:比如參數增加和缺省、參數的數據類型錯誤,參數攜帶錯誤的值、參數為空等等,這需要我們根據接口文檔中各種不同的參數去構造不同的參數異常,檢查服務端的響應情況。

4.性能和安全性方面

服務器的性能往往是個非常重要的關註點,在實際的測試中我們主要關註的是接口的QPS數值,以及CPU和內存占用等性能指標,通常借助於其他工具比如LoadRunner進行性能測試。安全性方面,主要考慮一些常見的安全策略比如請求加密、sql註入等等。

以上向大家簡單介紹了接口測試的一些基本概念,服務端測試是一個很龐大很復雜的過程,有自己的方法和特點,因此在後續的文章中,小編主要會就服務端測試的流程方法、工具使用以及踩到的坑和積累的經驗與大家做分享,歡迎大家持續關註。

服務端測試之接口測試初探