1. 程式人生 > >介面測試——postman & jmeter

介面測試——postman & jmeter


新名詞:

自動化測試:
寫程式碼幫你測試

介面:是一個抽象的概念,一種互動關係。

抓包:攔截請求。

介面測試:就是功能測試,比後者還簡單。

需要有測試文件,包括專案、模組、URL、請求方式、引數、引數說明、預期結果、實際結果、成功與否
測試工具:常用的有postman&jmeter

server:伺服器
user:使用者端

抓包: 攔截請求。  點選右鍵的審查元素/檢查/F12可以 點選network(出不來重新整理一下)就可以出來一個介面 

前端(像我們的使用介面)和後端(像抓包頁面)

前端和後端是兩撥人開發的,像前端手機,使用語言Android,object-c,或swift.後端語言就多了,像Java,php,.net,python,ruby等。後端人開發好後,把介面給前端人。前端需要什麼,展示出來就行了。

後端的語言和前端的不同,前端肯定展示不了。所以用一種通用的語言——json.

json:所有語言都認識的一種資料型別。json出來前用的xml。json是key-value的形式。json串兒。

 

介面測試:

先要有一個介面文件:

請求方式:get / post

get 無需藉助工具,(第一個介面)在瀏覽器就可以,將地址直接沾到瀏覽器。怎樣傳引數呢,在後邊加上“?”然後引數名誰=誰(?key=value)就可以了。如http://api.nnzhp.cn/api/user/stu_info?stu_name=小黑。若是有多個引數,用&連線就可以了。如age=18&sex=男
注意:要輸入英文字元"?",儘量貼上
而且get沒有body

post 需要藉助工具

第一個介面:(get請求)開啟postman→ 選get→ 輸入URL(全)→ 點選hander,在下邊輸入key-value(stu_name 小黑)→ 點選send→ 看結果
備註:get可以直接在瀏覽器使用,見上邊。
第二個介面:(post請求)開啟postman→ 選post→ 輸入URL(全)→ 點選body→在form-date下邊輸入key-value→ 點選send→ 看結果
第三個介面:(post請求json入參)開啟postman→ 選post→ 輸入URL(全)→ 點選body→點選raw→後邊的語言改為JSON→下邊輸入json串兒(即{"key":"value",}注意格式)→ 點選send→ 看結果
備註:post請求,預設的話是key-value傳參,用預設的form-date就行;寫明入參json的話,要用raw。
第六個介面:(post請求上傳檔案)開啟postman→ 選post→ 輸入URL(全)→ 點選body→在form-date下邊輸入key→後邊的value先選擇為file→點選send→ 看結果

postman的body中,form-date和x-www-form-urlencode的區別,只是前者能傳檔案。

第三節:(cookie)介面測試、訪問qq介面

開啟qun.qq.com到成員管理(需要登入),開始抓包。選擇搜尋群成員,裡邊的Headers裡的cookie需要找出來,還有最下邊的form-date.
第四個介面:(post請求有cookie)開啟postman→ 選post→ 輸入URL(全)→ 點選header,輸入cookie和抓包的資料→點選 body→在form-date下邊輸入key-value→點選send→ 看結果

cookie 使用者端會key-value記錄你登入的狀態,會過期;

session 服務端同樣會key-value記錄你登入的狀態。

 cookie就是儲存在你自己本地的一個鍵值對。session就是儲存在服務端的一個鍵值對。

上邊倆者都會記錄,下次登入時候,伺服器一對比,一樣的,就表明又登入了
http://nnzhp.cn/api/user/user_reg牛牛的文件,供學習。
body用來傳參,hander用來補充,比方寫cookie


怎樣測試介面:

post、get請求區別:

定義變數:設定→管理環境→globals→加個變數,之後用的時候,直接{(變數名稱)}代替就行。
ip可以代替域名來訪問:

儲存collection:可以把幾個介面放在一起儲存起來。歷史中點選...→create collection→save,已經儲存。

功能測試主要還是測業務,要了解業務,然後測試功能。

介面測試用例:
1、正常的
2、異常
1)、不按介面文件上來
3、根據業務邏輯來設計不同的用例

專案 模組 url 請求方式 請求引數 預期結果 實際結果 狀態

get post 區別:

http請求

請求頭header


你發出去這個請求的額外資訊
你用什麼瀏覽器發的
你想讓服務端給你返回什麼樣的資料
cookie

請求體body

正常咱們發過去的資料了

1、get請求沒有請求體,只有請求頭 (把引數放在url裡,或cookie裡)
2、get請求沒有post安全,因為get把引數都寫到url裡面 (其實抓包都能看見,並沒有哪個更安全一說)
3、get請求有引數的大小限制,post請求。(以前瀏覽器不好,現在沒了)
4、get請求一般用來獲取資料,像服務端傳送資料的時候用post (get請求如百度搜索,post請求如登入)
備註:其實區別只在第一點,其他的其實沒有太大區別。


Jmeter做介面指令碼

開啟Jmeter:無需安裝,直接點選解壓檔案中的jmeter.dat(要先安裝jdk)
檔案不顯示副檔名:組織→資料夾和搜尋選項→檢視→不要勾選隱藏副檔名

Jmeter:Java開發的(所以必須裝JDK再使用)開源的(即免費的)效能測試工具,也可以測介面

新增第一個:get請求

執行緒組:得先設定一個來幹活
執行緒數:並列的幾個執行緒組
加一個HTTP請求:新增→sampler→HTTP請求
名稱:隨便改
伺服器名稱或IP:寫域名或IP。埠:預設HTTP,HTTPS時要輸入
路徑:
方法:get或post
paremeters:key-value,或者寫在路徑後?key=value
點選執行:一個綠色的三角形標。提示儲存,那就儲存一下子。

新增執行緒組→新增HTTP請求→填寫伺服器名稱或IP→路徑→ 方法→ 引數→ 新增監聽器→ 察看結果數→ 點選執行→ 檢視介面的請求和響應資料


post請求:

jmeter返回中文亂碼:
1、在jmeter的bin目錄下,找到jmeter的配置檔案,jmeter.properties,然後把
sampleresult.default.encoding=UTF-8
加到最下面
2、重新開啟jmeter

jmeter bodydata裡面中文亂碼
1、在jmeter的bin目錄下,找到jmeter的配置檔案,jmeter.properties,然後把
jsyntaxtextarea.font.family=Hack
加到最下面
2、重新開啟jmeter

新增第三個:入參是json型別的post請求

入參型別是json的返回亂碼:
1、在content encoding中加入utf-8

新增第四個:帶cookie的post請求

新增 配置元件 HTTP資訊頭管理器

協議預設的HTTP,如果是HTTPS,就寫在協議裡。

新增第五個:上傳檔案介面

選擇file,上傳檔案,並在此file寫引數"file"

 

jmeter引數化

1、jmeter 引數化
1、選項→函式助手對話方塊裡面的
__Random 取一個範圍內的隨機數
__time取一個時間戳:從計算機誕生的那一天到現在過了多少秒
引數加上YYYY(4個),即只取格式化的年
引數加上YYYY MM dd HH mm ss,取到格式化的年月日時分秒
__UUID 取一串兒唯一的數字,但有些長
檔案中取值:
並列建立一個活兒:新增→配置元件→CSV Data Set Config
當中filename寫清楚路徑(也可以直接寫明兒,但檔案要放在bin目錄下),
variable name隨便取一個名兒AAA,BBB,CCC(可只有A,帶上B也行),Dlimiter中輸入分隔符","。
然後在HTTP需要取值的地方輸入${AAA},${BBB},${CCC},
備註:,也可以換成其他符號,如空格的

${}是取變數格式。

CSV Data Set Config:當中的recycle選擇TRUE和FALSE決定是否迴圈

備註:右上角的注意裡邊有資料時,就說明有錯誤。

先用註冊介面註冊一個賬號。
注意:賬戶名fang${__time(,)}這個串兒,部分貼上複製的時候容易粘不乾淨,像fang${__time(,)}容易錯變成${__time(,)}},外邊兒多留個大括號。

 

jmeter關聯:

首先建立一個有效的登入介面,然後建立一個抽獎介面。
在登入介面中,新增→ 後置處理器→ JSON Path PostProcessor
正則表示式提取器:跟JSON Path PostProcessor功能一樣。
"sign": "(.*?)"表示取左邊是"sign": " 右邊是"的值。
預設值:沒取到

變數取值:${name} 是大括號
結果中找東西:$.A.B....

錯誤:userid和sign結果值寫反了

 

jmeter壓測:

TPS:服務端每秒鐘處理的事務數,越大越好

響應時間:從發出動作到服務端處理完返回給客戶端的時間,越短越好