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