接口測試+postman+Jmeter用法

接口測試

什麼是接口測試

接口測試:接口測試就是功能測試,向服務端發的請求或者獲取數據,html

例如:新浪微博,新浪爲客戶端(client),新浪的服務器爲服務端(server)數據庫

a:刷微博,即從客戶端向服務端獲取數據json

b:發微博,即客戶端向服務端插入數據瀏覽器

c:修改微博,即客戶端向服務端發送數據,即修改後的內容安全

d:刪微博,即服務端向客戶端發送刪除數據的請求ruby

以上,都是經過接口來鏈接客戶端與服務端的。服務器

接口測試第一步須要作什麼?

首先要取得接口文檔,接口文檔通常都是由開發提供的,cookie

接口文檔中會提供至少三種信息:接口地址(url)、請求參數(get、post)、請求參數,通常還會提供返回參數,以下:session

 

接口返回的數據類型是什麼?

接口返回的數據類型都是json格式的,那麼什麼是json呢?併發

json:json是一種通用的數據類型,全部語言都認識它,即任何語言接口返回的都是json格式的,如:Java PHP .net Python ruby C

json格式以下:鍵值對的存在 key-value

接口經常使用請求方式有什麼?

get與post請求方式

get請求

直接用瀏覽器就能夠訪問,不須要藉助外部工具,在瀏覽器中輸入url便可

如何傳參數:在url後面加一個問號?+參數名+值,其中若是要傳多個參數的話,中間用&鏈接

例如:hfhfhh/stu_info?參數1=值1&參數2=值2,以下圖所示:

 post請求

post請求不能夠經過瀏覽器直接訪問,須要藉助工具來進行接口的訪問,如postman、jmeter

post經常使用的傳參方式:key-value、json格式、上傳文件。若是接口文檔裏不特別說明是什麼傳參的方式的話,那麼就是key-value形式傳參。

get與post區別

 一、get請求只有請求頭,沒有請求體,以下圖postman中所示:請求的cookie是在headers裏面的,而參數是在url裏面的,body是置灰的,即沒有請求體

       post請求既有請求頭,也有請求體

       get請求以下圖:

post請求以下圖:

二、get請求沒有post請求安全,由於get請求參數是在url裏面傳的,參數是可見的,而post請求參數是在body裏面傳的,不可見。可是post請求參數仍是能夠用抓包工具抓到,因此也沒有那麼安全

三、get請求有參數的大小限制,post請求沒有參數大小的限制(在之前瀏覽器版本低的時候,有參數大小的限制,如今瀏覽器版本很高了,就沒有這個限制了)

四、get請求通常用來獲取數據,而post通常則用來發送數據

設計接口測試用例

設計思路:

一、正常的:按照接口文檔上面來

二、異常的:不按照接口文檔上面來

三、根據業務邏輯設計不一樣的場景

測試用例裏面須要寫什麼?

項目  模塊  url  請求方式  請求參數  預期結果  實際結果  狀態

 cookie與session

什麼是cookie?

cookie是保存在用戶瀏覽器端的一個鍵值對。

例如:登錄一個網站,就會把cookie保存在瀏覽器端,即保存登陸名與密碼,等你關掉網站,再次進去的時候,不須要再次登錄,就能夠直接訪問了,這就是瀏覽器保存了cookie的結果

什麼是session?

session是保存在服務端的鍵值對。

例如:登錄網站以後,瀏覽器會保存cookie,而服務端會保存session,當再次訪問網站的時候,服務端會把session裏的鍵值對和瀏覽器端的cookie進行對比,若是一致就不須要從新登錄了,直接就能夠訪問,若是不一致則須要從新登錄

注意:cookie與session都有失效時間,至於時間的長短是在代碼裏面設置的。

postman

postman是用來發送http請求接口的測試工具,能夠用來發送get與post請求

在postman中發get請求

例:

請求以下圖:

在postman中發post請求

 一、入參是key-value型的

postman中以下:

二、入參是json型的。

      如何判斷入參是json型的:接口文檔中會標識出來,若是不特地標識,那麼默認就是key-value型的,以下圖,接口文檔中已特地標出是json型的

postman中請求以下:

json類型參數在postman中如何傳?

在body下面的選擇raw,就能夠傳json格式的了

三、在postman中上傳文件

四、傳cookie

傳cookie須要知道:請求方式、url、cookie值、請求參數

例如:獲取某個QQ羣裏的成員信息

step1:獲取url,url以下:https://qun.qq.com/member.html#gid=QQ羣號

step2:按f12,選擇network下的XHR,XHR下面的都是請求的接口,有利於接口測試,因此直接選擇XHR就好了,下面以search_group_members這個接口爲例

step3:獲取請求方式與url

step4:獲取cookie

step5:獲取請求參數

step6:在postman中能夠調接口了,cookie存在Headers裏面,以下

參數放在body裏

step7:發請求

postman中 form-data、x-www-form-urlencoded、raw、的區別

form-data:能夠上傳鍵值對,也能夠上傳文件

x-www-form-urlencoded:能夠上傳鍵值對,不能夠上傳文件

raw:能夠上傳json格式的參數

postman中Globals用法

step1:點擊小齒輪下的Manage Environments

step2:選擇Globals

step三、添加一個ke與value,例如key=ip,value=ip地址,添加完後點擊 save,配置完成

step四、如何運用剛纔配置的Gloabals

在url中不用寫IP地址了,用{{ip}}代替便可,其中ip根據本身在globals中定義的key的名字而變化

jmeter

 定義:Java開發的開源的性能測試工具,即須要安裝jdk纔可使用jmeter

jmeter的http接口測試

step一、添加線程組,線程組能夠理解爲一個容器,以後的測試都在線程組裏面執行,

其中,線程數:即爲併發數,若是要測試100個用戶同時登錄,那麼現成數設置爲100便可

         Ramp-Up Period(in seconds):爲在XX秒以內執行這個線程

    循環次數:想要循環幾回就填幾

step二、添加http請求,選擇線程組,點擊右鍵

step三、配置http請求,以下圖

 

step四、添加監聽器,即查看結果樹,能夠看發送的請求與響應的數據

 當查看結果樹中存在亂碼時如何解決?

以下圖

 

解決辦法:在jmeter的bin目錄下,找到jmeter的配置文件,jmeter.properties最下面一行加上sampleresult.default.encoding=UTF-8後,保存,而後從新打開jmeter,再次執行接口文件,就能夠了

 

當body data裏面中文亂碼如何解決

以下圖

解決辦法:

在jemeter的bin目錄下,找到jmeter的配置文件,jmeter.properties最下面一行加上jsyntaxtextarea.font.family=Hack

後,保存,而後從新打開jmeter,再次執行接口文件,就能夠了

數據庫存在亂碼如何解決?

在http請求配置頁面中Content encoding=utf-8,便可

上傳文件

 

 參數化

1 、__random:函數助手裏面的__random取一個範圍內的隨機數

註冊接口

step1

 

step2

step3

 step4:

 

二、__time:函數助手裏面的__time取當前時間戳

  時間戳:從計算機誕生那一天到如今過了多少秒

三、__UUID生成的字符串很長

 --CSV Data Set Config

配置方式:右鍵--->添加--->配置原件--->csv Data Set Config

注意:若是不寫絕對路徑,能夠只寫文件名,那麼須要把文件放在jmeter的bin目錄下便可,那麼就能夠直接寫文件名就能夠了

 

而後去編輯登錄接口以下,此時username不能夠寫死,須要寫名字集,格式 ${名字集},以下圖:

關聯

從上一個接口裏面獲取到結果傳遞給下一個接口

例如:抽獎接口的請求參數就要從登陸接口的返回參數中取

 

step一、取登錄接口返回的userid與sign

配置以下:

 

從登錄接口返回的參數中取userID與sign

返回參數以下:

step二、JSON Extractor 配置以下,其中$.login_info.userId定義以下:

$表明登陸接口返回的參數中最外邊的大括號,.表明大括號裏面的內容,login_info表明從返回參數中找到login_info,.表明返回參數中的login_info裏的信息,userId表明在login_info取到userId的值

 

 

 step三、配置抽獎接口:

 

 用戶定義變量

配置:線程組--->添加--->配置原件--->用戶定義的變量

配置:,名稱與值,例如名稱爲 ip

應用:

在http請求中配置IP的地方改寫成上邊配置的變量便可,就不用每次都輸入IP地址了

格式:$(定義的變量)

壓測

例如:要測試10秒以內1個用戶登錄100次狀況

思路:線程組中線程數設置100(表明一百個用戶),10秒

聚合報告

壓測,須要關注返回的TPS、響應時間,經過聚合報告就能夠看

TPS:服務器每秒鐘處理的事物數,即請求數

響應時間:從發出去請求到服務端處理完返回給客戶端的時間

 以下圖:

響應斷言

jmeter在接口測試過程當中,有時須要響應斷言來判斷接口測試獲得的接口返回值是否正確。 
響應斷言 :對服務器的響應接口進行斷言校驗。

1. 首先,選中某個線程,而後右鍵,選擇添加—>斷言—>響應斷言 ,獲得如圖所示的響應斷言界面。

Apply to:默認選擇 Main sample only便可

要測試的響應字段:默認選擇  響應文本 便可

模式匹配規則:選擇「包括」便可,即返回的參數中包括添加的  要測試的模式裏的內容便可

要測試的模式:輸入 咱們要匹配的響應接口(即接口測試結果的指望值或者其餘指望值)

應用以下:

相關文章
相關標籤/搜索