摘要:將響應斷言放入請求下,會對該請求調用的響應結果進行斷言。異步調用,等待一定時間后獲取調用結果數據某支持客戶進行異步調用,先發送一個異步請求提交數據獲取一個,然后隔一斷時間后再使用獲取到的請求上一個請求的返回結果需要用到定時器組件。
miaomiao 高級測試工程師背景
7年測試工作經驗,參與產品的功能/自動化/性能測試;目前負責 Red.Q、Warden 產品的質量保障工作。
Red.Q 是豈安為客戶提供業務風險情報服務的產品。API 是該產品的一個模塊,客戶可以通過輸入不同的參數獲取不同的風險數據。
在測試該 API 的過程,就是對這個接口的測試,不同的 Token 對應不同的訂單,對應不同的標簽,對應不同的返回。本文主要介紹在測試該接口時總結的一些場景用法。
目前接口測試的工具,例如 Postman/SoupUI,等大多都提供了接口的發送、響應結果的獲取、以及針對響應結果的斷言,都可以用來做接口的自動化測試,我們目前選用的工具是 JMeter,各種工具大同小異。如對 JMeter 工具不了解的同學請戳 Bioneck 分享的 Jmeter+Jenkins 文章。
實現本次自動化測試用到的組件介紹 :
Threads--> 線程組
配置元件--> HTTP 請求默認值
配置元件--> JDBC Connection Configuration
配置元件--> HTTP 信息頭管理器
定時器--> 高斯定時器
Sampler--> HTTP 請求
Sampler--> JDBC Request
后置處理器--> 正則表達式提取器
斷言--> BeanShell 斷言
斷言--> 響應斷言
監聽器--> 查看結果樹
測試場景與測試實現 1使用Token調用API一個最簡單的 HTTP 請求,由 host+ 端口 + 路徑 + 參數構成,調用 API 的設置如下:
1) HTTP 請求默認值,設置好服務器 IP 和端口,所有作用范圍內的 HTTP 請求可以不再指定。
2) HTTP 請求,設置路徑和參數
Red.Q 的請求是 GET 方法,參數可以加入 Parameters ; 如果是 POST 方法的 JSON body,參數可以放入 Body Data 內。
POST 請求時,參數內有中文,需要設定 Content encoding 為 utf8
3) 調用完成后,通過查看結果樹查看調用結果。
2Mock-server 的機制需要每次請求時,把 request_id 放到 Header 內,隨請求一起調用(HTTP 信息頭管理器)。
1) HTTP 信息頭管理器
將 HTTP 信息頭管理器放入 HTTP 請求下,該 HTTP 信息頭管理器內的參數,只對該 HTTP 請求生效。
右邊的設置,每次 HTTP 請求 Mock-server 時,會將 REQUEST-ID 加入到請求 Header 內。
2)查看結果樹內,可以看到發送的 Header。
3斷言:響應結果的文本斷言每次執行測試后,需要了解本次執行的結果正確與否,以上的步驟只能知道我們返回了什么,不能確認到底返回的對不對。這個時候需要用到斷言,對響應結果進行驗證。
1)響應斷言,提供對所有請求的響應結果內的內容進行斷言,一般為文本斷言。
將響應斷言放入HTTP請求下,會對該HTTP請求調用的響應結果進行斷言。
要測試的文本放入測試的模式內,可添加多個驗證文本。
2) 查看結果樹內,如果與指定的內容不一致,請求會標記為失敗,并給出失敗原因。
4斷言:響應的結果與數據庫內的字段比較部分場景下,要求每次調用 API 后,需要驗證對應的 [風險等級] 符合預期。而 [風險等級] 保存在數據庫內,需要通過 JDBC Request 來實現對數據庫的操作。
1)JDBC Connection Configuration,提供對數據庫的連接配置。
2) JDBC Request,設置查詢 SQL
驗證結果一般是查詢類的 SQL,QueryType 選擇 Select Statement;
如果需要在某個請求開始前對數據庫內的數據做新增修改刪除,則需要選擇 QueryType為Update Statement;
3)在 JDBC Request 下,添加響應斷言,驗證響應結果與字符串一致。
5斷言:使用 BeanShell 編寫手工斷言每次調用 API 后,需要驗證 Token 的 [最近調用時間字段] 。該時間字段是存在數據庫內的時間戳,而我們需要驗證 token 的最近調用時間在 15s 以內,而響應斷言組件無法做到日期的比對,需要用正則表達式提取器將請求的響應結果提取出來,然后作為一個變量,在 Bean Shell 內進行比對。
1)調用完請求后
添加 JDBC Request,設置查詢條件如下
響應結果
2) 在 JDBC Request 下添加正則表達式提取器,提取數據庫返回的時間戳字段,保存到變量內。
3) 在 JDBC Request 下添加 BeanShell 斷言,對正則表達式提取器內提取的變量與當前時間進行比對。
6異步調用,等待一定時間后獲取調用結果數據某 API 支持客戶進行異步調用,先發送一個異步請求提交數據(獲取一個 token),然后隔一斷時間后再(使用獲取到的 token)請求上一個請求的返回結果;需要用到定時器組件。
1)異步調用請求接口設置。
2)異步調用請求成功后,返回一個 query_id,如果要拿到真正的處理結果,需要在調用獲取結果的請求時,把 query_id 作為一個參數。
3) 在異步請求下添加一個‘正則表達式提取器’,將異步調用返回的 query_id 保存到參數內。
4) 獲取異步調用結果的請求內,引用正則表達式提取出來的 query_id ,并作為參數提交。
5) 異步調用一般不會馬上出結果,需要在獲取異步調用的結果請求之前等待一段時間
BeanShell Timer 內可設置線程等待 5s;
添加高斯定時器、固定定時器等定時器也可達到等待的效果;
定時器放在 HTTP 請求下,會先執行定時器,如果與 HTTP 請求是同級目錄,則每個 HTTP 請求都會受定時器的時間影響。
現在幾乎所有從事 Web 測試的同學都會使用 JMeter 或某種 API 工具來調用幾把接口,而需要做到接口自動化,免不了要加入參數化、關聯、斷言等高級用法,本文僅列出工作中用到的常見場景中的用法,有不對之處或測試之間的交流歡迎指出,謝謝。
以上。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/8804.html
摘要:前言大家好,我是測試君最近有小伙伴后臺給我留言,說自己用寫了一個大文件上傳的接口,現在想本地檢驗一下接口并發的穩定性,問我有沒有好的方案本篇文章以文件上傳為例,聊聊并發執行腳本的完整流程實現文件上傳大文件上傳包含個步驟, ...
摘要:因為這個項目最后會在年月日于上海舉行的云大會上展示,所以當時完成集成工作后心想,還是得提前測試一下咱們的在響應并發請求時的性能做到心里有數。 這篇文章本來Jerry只在SAP社區上寫了英文版的,可以通過點擊文末的閱讀原文獲得。后來有兩位做Marketing Cloud開發的德國同事,寫郵件詢問關于文章的更多細節,聲稱這種方式對他們自己的API性能測試很有用,所以我覺得還是值得用中文再寫...
摘要:接口測試形式單個接口測試包含性能測試和通過接口調用進行場景測試。充分來說就是接口測試相對容易實現自動化持續集成。 本文你將了解到 1、接口測試基本概念,包含什么是接口,什么是接口測試,為什么要做接口測試2、接口測試用例設計3、怎樣不用寫代碼,也能快速的根據開發的API文檔完成接口自動化測試腳本 注:如果你對接口基本概念和接口測試用例已熟悉,可以直接跳過,其實看一遍也無防,就當作 溫故知...
摘要:創建測試環境并導入到用例集操作步驟如下動態圖創建測試環境并導入到用例集動態圖說明第一個頁面為測試項目列表頁面。第三個頁面為前置用例集列表頁面。 本文內容: 測試腳本管理:講述如何在 EOLINKER 上設計測試項目目錄結構。 編寫測試腳本:講述如何在 EOLINKER 上編寫接口測試腳本。 測試腳本執行及報告:講述如何在 EOLINKER 上執行接口測試腳本,及如何查看和下載測試報告...
閱讀 3115·2023-04-25 15:02
閱讀 2803·2021-11-23 09:51
閱讀 2029·2021-09-27 13:47
閱讀 1984·2021-09-13 10:33
閱讀 954·2019-08-30 15:54
閱讀 2640·2019-08-30 15:53
閱讀 2853·2019-08-29 13:58
閱讀 881·2019-08-29 13:54