接口測試框架接入性能測試實踐分享

1. 前言

現現在接口測試在軟件質量行業中的地位,已經愈來愈重要,相對於上層的UI自動化測試和下層的單元測試,接口測試的「低」投入、「高」回報,也成了絕大多數質量保障實踐的首選。web

在開展接口測試時,每每不少時候都只在關注接口的功能性質量,而對於非功能性的質量保障驗證,好比性能、安全,在實際工程應用或者設計用例時關注度明顯不足(甚至不少壓根沒有這方面的測試實踐)。json

今天就以Python系下requests庫(經常使用於接口測試)和Robot FrameWork框架爲例,和你們聊聊在接口測試過程當中,和功能需求同等重要的性能測試檢查項。小程序

2. 接口測試須要考慮的性能檢查項

在接口測試過程當中,除了要考慮產品需求的正常、異常、數據正確性等顯性功能需求質量外,還有不少隱性需求質量須要關注,以性能測試爲例,常見須要關注的檢查項包括,但不限於:安全

  • 一、單用戶登陸的響應時間是否小於 3 秒;
  • 二、單用戶登陸時,後臺請求數量是否過多;
  • 三、高併發場景下用戶登陸的響應時間是否小於 5 秒;
  • 四、高併發場景下服務端的監控指標是否符合預期;
  • 五、高集合點併發場景下,是否存在資源死鎖和不合理的資源等待;
  • 六、長時間大量用戶連續登陸和登出,服務器端是否存在內存泄漏。

本文重點以接口響應時間爲例,介紹如何在requests庫和Robot FrameWork框架歸入性能測試項,其它性能檢查項思路基本都是相通的。服務器

3. requests庫接口測試校驗響應時間

一般在結合requests庫開展接口測試時,發送請求後,接口的響應時間,也是咱們須要關注的一個重點,若是響應時間太長,從產品業務或者用戶角度也是不可接受的。那如何進行請求響應時間校驗,也成爲了接口測試人員須要掌握的一項小技能。微信

針對requests庫校驗請求響應時間,給你們提供兩種實現思路:併發

1、藉助請求響應超時機制app

具體實現:框架

#-*- coding:utf-8 -*-
import requests
from requests import exceptions

try:
    req = requests.post(url=url, data=data, headers=headers, verify=False, timeout=3)       
   print r.json()
except exceptions.Timeout as e:   
    print("拋出異常")

在上述實現中,經過增長timeout參數,設置請求響應超時機制,當timeout=3(可自由定義),當請求響應時間超過3秒,則會拋出超時異常。編輯器

其中,額外補充的知識點:超時(默認單位:s),有兩種設置超時方法:

  • timeout=5:設置5s的超時時間
  • timeout=(5,10):設置區間時間的等待

當請求出現超時時,則會拋出此異常:requests.exceptions.ConnectTimeout: HTTPConnectionPool

二、獲取響應時間方法:req.elapsed.total_seconds()

2、藉助requests接口響應返回值elapsed

具體實現:

#-*- coding:utf-8 -*-
import requests

r = requests.post(url, data=data, headers=headers)
print(r.status_code)
print(r.elapsed)
print(r.elapsed.total_seconds())
print(r.elapsed.microseconds)
print(r.elapsed.seconds)
elapsed_time = r.elapsed.total_seconds() #獲取實際的響應時間 
assert elapsed_time>3

上述代碼實現中,經過獲取請求返回的響應值來獲取接口響應時間,常見的幾個獲取響應時間參數爲:

  • elapsed.total_seconds:獲取響應時間,單位s   (推薦)

  • elapsed. microseconds:獲取響應時間,大於1s的時候,只截取了後面的小數部分

  • elapsed.seconds:單位s,響應時間小於1s時,爲0

4. Robot Framework框架校驗響應時間

在上述咱們介紹了requests庫在開展接口測試過程,校驗請求響應時間的實現思路。而經過Robot Framework框架開展接口測試,主要會依賴RequestsLibray庫,而所以實現思路也是同樣的。

具體實現,可參考下述示例:

img

上述校驗請求響應時間,核心就兩句代碼:

${elapsed_seconds}=    set variable    ${resp.elapsed.total_seconds()}
should be true    ${elapsed_seconds}<3

補充知識點:響應體${resp}是一個類對象,源碼可在requests/models/Response查看,能夠查看找出該類的全部屬性,第6行打印結果:

5. 小結

做爲測試工程師,你的目標是要保證系統在各類應用場景下的功能是符合設計要求的,因此你須要考慮的測試用例就須要更多、更全面。本文,經過接口測試如何融合接口性能檢查項,給你們提供一點思路,但願對你有所幫助或啓發。

若是以爲有用,幫忙點個好看朋友圈轉發分享一下就行。


做者新書

新書資訊 新書除了紙質圖書外,電子版也已在京東、噹噹網上線了。


(點擊直達小程序)


推薦閱讀


推薦一款萬能抓包神器:Fiddler Everywhere

推薦一款技術人必備的接口測試神器:Apifox

推薦一款Python開源庫,技術人必備的造數據神器!

DevOps研發模式下「產品質量度量」方案實踐

重磅消息 |《自動化測試實戰寶典:從小工到專家》隆重上市!


END

全部原創文章
第一時間發佈至此公衆號「測試開發技術」

長按二維碼/微信掃碼  關注


關注後,回覆「me」試試
點擊閱讀原文

本文分享自微信公衆號 - 測試開發技術(mikezhou_talk)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索