介面測試框架接入效能測試實踐分享

2021-10-09 11:37:00 字數 2414 閱讀 8664

前言

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

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

今天就以python系下requests庫(常用於介面測試)和robot framework框架為例,和大家聊聊在介面測試過程中,和功能需求同等重要的效能測試檢查項。

介面測試需要考慮的效能檢查項

在介面測試過程中,除了要考慮產品需求的正常、異常、資料正確性等顯性功能需求質量外,還有很多隱性需求質量需要關注,以效能測試為例,常見需要關注的檢查項包括,但不限於:

1、單使用者登入的響應時間是否小於 3 秒;

2、單使用者登入時,後台請求數量是否過多;

3、高併發場景下使用者登入的響應時間是否小於 5 秒;

4、高併發場景下服務端的監控指標是否符合預期;

5、高集合點併發場景下,是否存在資源死鎖和不合理的資源等待;

6、長時間大量使用者連續登入和登出,伺服器端是否存在記憶體洩漏。

本文重點以介面響應時間為例,介紹如何在requests庫和robot framework框架納入效能測試項,其它效能檢查項思路基本都是相通的。

一、借助請求響應超時機制

具體實現:

#-- 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

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

二、借助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. microseconds:獲取響應時間,大於1s的時候,只擷取了後面的小數部分

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

robot framework框架校驗響應時間

在上述我們介紹了requests庫在開展介面測試過程,校驗請求響應時間的實現思路。而通過robot framework框架開展介面測試,主要會依賴requestslibray庫,而因此實現思路也是一樣的。

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

$= set variable $

should be true ela

psed

seco

nd

s<3補

充知識點

:響應體

<3 補充知識點:響應體

elapse

ds​e

cond

s<3補

充知識點

:響應體

是乙個類物件,原始碼可在requests/models/response檢視,可以檢視找出該類的所有屬性,第6行列印結果:

小結作為測試工程師,你的目標是要保證系統在各種應用場景下的功能是符合設計要求的,所以你需要考慮的測試用例就需要更多、更全面。本文,通過介面測試如何融合介面效能檢查項,給大家提供一點思路,希望對你有所幫助或啟發。

Node 框架接入 ELK 實踐總結

本文由雲 社群發表 我們都有過上機器查日誌的經歷,當集群數量增多的時候,這種原始的操作帶來的低效率不僅給我們定位現網問題帶來極大的挑戰,同時,我們也無法對我們服務框架的各項指標進行有效的量化診斷,更無從談有針對性的優化和改進。這個時候,構建具備資訊查詢,服務診斷,資料分析等功能的實時日誌監控系統尤為...

Node 框架接入 ELK 實踐總結

本文由 j2x發表於 雲 社群專欄 我們都有過上機器查日誌的經歷,當集群數量增多的時候,這種原始的操作帶來的低效率不僅給我們定位現網問題帶來極大的挑戰,同時,我們也無法對我們服務框架的各項指標進行有效的量化診斷,更無從談有針對性的優化和改進。這個時候,構建具備資訊查詢,服務診斷,資料分析等功能的實時...

介面測試 我的 python 介面測試框架

導購碼介面測試 dgm.x 80 指定需要執行哪些介面 第乙個層固定預留,只用於登陸介面 1001 登陸post login user id 登陸後返回的userid,token等 0 是否有巢狀 1002 廠家主頁 get getfactoryhome?homeid 2 1 0不需要登陸後的引數,...