前端php
後臺前端
接口把client端和server端聯繫起來,兩端之者使用的數據類型是json。
json是一種通用的數據類型,返回的格式爲key-value,鍵值對,{"name":"張三","age":23"}
java
也有使用xml的,格式爲:python
<name>zhangsan</name> <sex>male</sex>
測試接口以前,得有一個接口文檔,文檔中有請求方式,請求參數,響應信息等。
功能測試測的是業務邏輯。接口測試屬於業務測試中一種。mysql
若是是get請求,不須要藉助任何工具,只須要用流星器就能夠發送請求linux
http://api.xxxx.cn/api/user/stu_info?stu_name=小黑
返回結果以下:sql
{ "error_code": 0, "stu_info": [ { "id": 5671, "name": "小黑", "sex": "男", "age": 28, "addr": "河南省濟源市北海大道32號", "grade": "天蠍座", "phone": "18799932946", "gold": 120054446 } ] }
請求中格式爲http://ip:port/路徑/接口名?key1=value1&key2=values2
。若是有多個參數中間用&鏈接多個參數數據庫
postman的body中form-data和x-www-form-urlencoded區別:json
POST請求windows
入參爲json類型,body中選擇raw,JSON類型,如未標明,使用key-vaule格式
cookie,放在本地的一個鍵值對,請求時發送cookie中的sessionId與服務端sessionId進行匹配,匹配成功則經過驗證。
session,放在服務端的一個鍵值對,有一個過時時間。
查看Cookie信息,經過瀏覽器F12能夠看到存儲的cookie信息
添加Cookie信息,在Headers中添加Cookie信息
添加header信息
文件上傳
POSTMAN全局變量
使用方式
DNS, HTTP協議,三次握手,4次揮手
HTTP請求分爲兩個部分,請求頭和請求體,請求頭中是一個額外的信息,好比瀏覽器類型,cookie等。請求體中傳的是具體的數據。
請求頭(header):
請求體(body):
接口用例
項目 | 模塊 | 用例id | 用例描述 | 請求URL | 請求方式 | 請求數據 | 預期結果 | 請求報文 | 返回報文 | 測試結果 | 測試人員 |
---|
HTTP狀態碼
Jmeter亂碼處理
JMeter查看結果樹中返回信息亂碼
在Jemter的bin目錄下,jmeter.properties文件中添加sampleresult.default.encoding=utf-8,後重啓jmeter。
JMeter中body data中亂碼
Jmeter的bin目錄下,jmeter.properties文件中添加jsyntaxtextarea.font.family=Hack,後重啓jmeter。
GET請求
POST請求
POST入參爲JSON類型,若是避免插入到數據庫中的中文爲亂碼,須要在Content encoding中填寫utf-8。
添加cookie信息,cookie信息寫在HTTP信息頭管理器中,HTTP信息頭若是放在線程組下與HTTP請求同級,則線程組中的全部請求均可以使用該HTTP信息頭中的信息,若是放在某個HTTP請求下,則只對該請求單獨生效。
添加Referer信息
文件上傳,Jmeter 3.0以上版本須要填寫MIME TYPE信息,隨便填寫就行,好比填寫爲text。
函數助手中
線程組->配置單元->用戶自定義的變量,填寫變量名和變量值
使用方式爲${變量名}
使用函數助手中__Random函數成生隨機數,在此例中因爲壓測用戶註冊功能,用戶名是不可重重的,此處的隨機數用於生成用戶名後的數字
選項->函數助手對話框->__Random,輸入最小值和最大值後,生成。
使用方式以下:
在線程組中循環5次,在查看結果樹中能夠看到5次請求中的用戶名都不同
使用計數器__counter函數進行自增
使用__time函數取時間,須要傳入一個格式,yyyyMMddhhmmss,HH爲24小時制,hh爲12小時制
時間表示
從文件中讀取數據
有場景須要大批量數據,數據是從數據庫中導入到文件中。
線程組->配置元件->CSV Data Set Config
若是Filename中只寫了文件名,則須要把文件放到Jmeter的bin目錄下。
若是文件中有多列,用符號分隔,須要在Delimiter中添寫相關的符號。在Variable Names中也須要填寫多個變量名,中間用","分隔,會每次取一行數據
Ignore First Line,是否忽略第一行
Allow quoted data,是否容許帶引號
Recycle on EOF,遇到文件結束後是否循環
Stop thread on EOF,遇到文件結束符中止線程
Sharing Mode,是否全部線程組生效,仍是隻在當前線程組生效
關聯:調用第一個接口,從第一個接口中返回的數據中取到某個值,放到第二個接口中使用
HTTP請求->後置處理器->JSON PATH EXTRACTOR
登陸接口返回爲以下:
{ "error_code": 0, "login_info": { "login_time": "20190416115043", "sign": "96b4de24614f0796402c54f889e50147", "userId": 9786 } }
咱們須要取到login_info中的sign,將sign的值放到充值接口中用做cookie值。寫法爲$.login_info.sign,其中$表明最外層的{},一層一層往內取。
將取到的sign放到充值接口的cookie中
若是須要查看各種變量中取到的值,可使用線程組->Sampler->Debug Sampler查看各變量所對應的值。
Jmeter壓測
在線程組中設置線程數及壓測的持續時長,若是要進行長時間壓測,須要勾選"永遠",以及勾選調度器,並填寫持續時間
填寫了持續時間後,結束時間會失效
填寫了啓動延持後,啓動時間會失效
Ramp-Up Period,線程在多少秒內會啓動完,0爲全部線程所有同時啓動。通常爲1便可。
TPS,服務器每秒鐘能處理的請求數
響應時間,請求從發出後與接收到服務器返回給數據所花時間
聚合報告
Samples,發出的請求數
Average,平均響應時間,單位爲毫秒
Throughput,TPS
Error%,錯誤率,不一樣業務要求不同,像銀行業務要求100%的正確率。
斷言,用於校驗結果
測試計劃->Add directory or jar to classpath
線程組->配置單元->JDBC Connection Configuration
填寫Variable Name
填寫Databse URL,jdbc:mysql://192.168.1.116:3307/bugfree?characterEncoding=UTF-8&allowMultiQueries=true
添加JDBC Request,在Variable Name中須要填寫JDBC鏈接配置中填寫的變量名
JDBC請求中,Query Type爲Callable Statement時,能夠同時執行查詢和更新語句。
控制機修改本地Jmeter中jmeter.properties中remote_hosts項,添加負載機ip和端口,
在負載機上修改jmeter.properties文件,(若是負載機爲Windows,不須要修改rmi的兩項)
負載機上運行jmeter-server.bat
負載機壓測時,控制機的查看結果樹中響應結果內容會爲空,須要添加斷言,用以判斷返回結果是否正確。