2、大型項目的接口自動化實踐記錄--接口測試簡介及RequestsLibrary關鍵字簡介


1、接口測試簡介

  1)先簡單介紹下接口測試,那么什么是接口測試呢?

    百科的回答:接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的交互點。

    看起來有點拗口,我們試着用通俗一點的方式說明下,把系統比作一家公司,那么使用系統的好比是個人或者其他公司。

    對外接口(我們常說的接口測試指的是對外接口):

    那么使用方想要找公司辦事情的時候,通過郵箱、電話、聊天工具之類的,通過公司對外提供的渠道,如應聘找HR,有問題找客服,商務合作找銷售,而不能直接找到公司內具體事情處理人。因為一家公司人那么多,誰負責什么讓使用方記住顯然不現實;使用方要求的事情是否合理,需要通過接口人先過濾;同時暴露給使用方誰負責什么,也容易把人挖走。

    那么這跟系統接口測試有什么關系呢?

    郵箱、電話、聊天工具之類,好比各種瀏覽器(客戶端),HR、客服、銷售等渠道就可以理解成是系統對外提供的接口,使用方要做什么事情,找對應的接口請求就可以,接口在找對應的代碼執行,再把結果告訴使用方。如此一來,使用方不需要知道具體的代碼實現,通過接口就能做到想做的事情,而系統提供方,也不用擔心代碼被人看到。而接口測試,就是測試這些接口。

    系統內接口(一般是單元測試做):

    上面解釋了對外的接口,那么對內的接口是什么呢?

    一家公司,當人多的時候,就會有很多的細分部門,部門之間的交互,就跟公司跟公司之間交互一樣,有什么事情就通過部門接口人來對接。

    所以系統內接口與對外接口類似,當然因為是一家公司的,故意搗亂的行為就比較少,這塊的測試就不需要像對外的接口那么嚴謹。

  2)接口測試測什么

    

  如圖,系統的前端,在我們操作控件時,如點擊登錄按鈕,點擊購買按鈕,會攜帶着數據,通過http之類的協議,向后端發起請求,后端處理后,返回結果對象,前端收到結果對象后,解析渲染后,在瀏覽器展示給我們看。

  而接口測試,則是跳過前端,模擬前端請求后端,獲取對應的結果對象,驗證結果對象是否符合預期。

    我們以游戲商城購買物品為例,場景:用戶登錄,提交購買物品+購買數量的信息給服務端,服務端處理信息后返回結果。

    用戶在前端填寫用戶名、密碼,點擊登錄按鈕->點擊按鈕時,會請求登錄接口,帶着用戶名、密碼、客戶端信息等數據,數據正確則登錄成功

    用戶選擇購買的物品,輸入數量,點擊購買按鈕->點擊按鈕時,會請求購買接口,帶着用戶信息、購買物品、購買數量數據,處理后返回結果

   那么購買物品的接口,要測試什么呢?

    ①常規功能測試,同前端功能測試。

    既然在前端都可以測試了,為什么要測試這塊呢?

    主要是為了測試左移,更快的介入測試,且相對於前端測試而言,更准確的定位問題(排除了前端的因素)。

    ②非常規功能測試(業務安全)。

    后端校驗:如上面的購買物品,前端一般都會限制購買數量不能<=0,如果后端沒有校驗,那么購買負數數量,則就變成獲得金錢。

         還有有的物品,會需要VIP達到N級才可購買,前端一般會置灰無法選擇,而后端如果沒有校驗,則可以跨VIP等級購買。

         沒有展示在前端的物品,如做活動時才打折出售的物品,他們的ID與普通商品不一樣,也需要校驗后端是否有校驗。

         必要參數不填。

    敏感信息是否暴露:在返回值中,是否攜帶了如用戶密碼之類的敏感信息

    測試以上各種情況下,后端處理后返回的結果是否預期的。

    性能測試、安全測試

    這兩塊屬於專項測試,不屬於接口測試,接口測試需要測試,但是前端、數據庫等也是需要測試的。

 

2、關鍵字簡單介紹

在suite中引用RequestsLibrary后,F5,點擊Source,看一下庫RequestsLibrary有哪些方法


 

下面以接口http://p.3.cn/prices/mgets?skuIds=J_商品ID&type=1,來對關鍵字做下說明

Create Session系列:與服務器建立連接,你想找人辦事,但是對方不認識你,所以你要先跟他打個招呼,他回應你了,你才能繼續跟他說具體事情。


 

參數如上圖,這里就對alias、url、headers{}做下說明,其他不一定用的上,先不介紹

alias:隨便寫,對於新建的這個session的別名,后續請求時用。

url:請求的域名,如例子中為http://p.3.cn,如果有端口號則包括端口號。

headers:請求頭,告訴服務端是以什么樣的方式來請求它的,如要告訴它請求方式、數據類型、客戶端信息等,數據格式是dict。一般主要傳x-requested-with、Content-Type,其他根據項目情況傳值

cookies:如果對方認識你了,則可以帶上你的身份(登錄后,在服務器上會存儲你的身份信息)。

Delete All Sessions:與建立連接對應的,你跟他說沒事了,我先走了

 

Get、Post、Put、Delete Request:請求系列,即具體要做的事情。

這里以Get Request做下說明


 

參數如上圖,這里就對alias、uri、headers、params做下說明,其他不一定用的上,先不介紹

alias:前面Create Session起的別名

uri:具體的路徑,如例子中是/prices/mgets,如果訪問的是根目錄,則為/

headers:請求頭,如果跟session一致,則不需要再賦值

params:請求的body,如例子中可以是skuIds=954086 type=1

 

To Json:服務器收到接口請求后會返回response,可通過該方法,將response.content轉為json

上一篇  1、大型項目的接口自動化實踐記錄--robotframework環境搭建

下一篇  3、大型項目的接口自動化實踐記錄----開放API練習


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM