1.1?接口基礎知識
?1.1.1??? Get&post請求
GET和POST請求:
? ? GET提交的數據會放在URL之后,以?分割URL和傳輸數據亥鸠,參數之間以&相連,如EditPosts.aspx?name=test1&id=123456.
? ? POST請求是把提交的數據放在HTTP包的Body中.
??? get請求可以用瀏覽器來發(fā)送识啦,直接輸入URL负蚊,post請求需借助工具來發(fā)送。
?GET請求和POST請求的區(qū)別:
GET使用URL或Cookie傳參颓哮。而POST將數據放在BODY中家妆。也就是說get請求沒有請求體,只有請求頭冕茅。
get請求沒有post安全伤极,因為get把參數都寫到url里面
get請求有參數的大小限制腰鬼,post請求沒有大小限制。
get請求一般用來獲取數據塑荒,像服務端發(fā)送數據的時候用post
? 個人理解來說,第二點和第三點區(qū)別比較勉強姜挺,get請求雖然將參數暴露在url中齿税,看起來很不安全,但post請求也并沒有好到哪里去炊豪,只要抓包凌箕,它的參數照樣無所遁形,而第三點呢词渤,在 HTTP 協議定義中牵舱,沒有對GET請求的數據大小限制,所謂的get請求有參數大小限制缺虐,不過是瀏覽器的限制而已芜壁。
1.1.2?關于請求體和請求頭
HTTP請求報文由3部分組成(請求行+請求頭+請求體):
請求頭
????? header
????? 你發(fā)出去這個請求的額外信息,例如你用什么瀏覽器發(fā)的高氮,你想讓服務端給你返回什么樣的數據等
????? cookie
請求體
????? body
????? 發(fā)送給服務端的參數
1.1.3?? http狀態(tài)碼
HTTP狀態(tài)碼是用以表示HTTP響應狀態(tài)的3位數字代碼慧妄。
每發(fā)出一個http請求之后,都會有一個響應剪芍,http本身會有一個狀態(tài)碼塞淹,來標示這個請求是否成功,常見的狀態(tài)碼有以下幾種:
1罪裹、200 2開頭的都表示這個請求發(fā)送成功饱普,200請求已成功,請求所希望的響應頭或數據體將隨此響應返回状共。
2套耕、300 3開頭的代表重定向,302請求的資源現在臨時從不同的 URI 響應請求口芍。301 - 資源(網頁等)被永久轉移到其它URL
3箍铲、400 400代表客戶端發(fā)送的請求有語法錯誤,401代表訪問的頁面沒有授權鬓椭,403表示沒有權限訪問這個頁面颠猴,404 - 請求的資源(網頁等)不存在
4、500 5開頭的代表服務器有異常小染,500代表服務器內部異常翘瓮,504代表服務器端超時,沒返回結果
-部分摘自網站:www.besttest.cn
1.1.4??? cookie裤翩、session
cookie和session被用來跟蹤用戶的會話 资盅。
cookie是在本地存的鍵值對调榄,session是在服務端存的鍵值對
在使用postman和jmeter時,cookie 可以在header發(fā)送出去呵扛,為鍵對{'Cookie':’xx=xx,xx=xx,xx=xx'}的格式
?
1.2接口用例設計
1.2.1?測試內容
通過性驗證每庆、接口安全、異常驗證(必傳非必傳今穿、參數類型缤灵、入參長度)、業(yè)務邏輯
? ??例如:接口安全蓝晒,關鍵字段如密碼有沒有加密 (F12開發(fā)者工具-network)
?
1.2.2?用例參考
?
?
1.3 postman請求接口
?1.3.1postman-get示例
?
1.3.2postman-post示例
?
?
?
1.3.3postmant添加cookie
?
?
1.3.4postman使用json格式發(fā)送數據
?
?
1.4jmeter請求接口
1.4.1簡單的get請求
?
?
?
?
?
1.4.2get請求的兩種參數方式
?
?
1.4.3post請求
?
?
1.4.4添加cookie
選中請求-右鍵-添加-配置元件-HTTP信息頭管理器
?
?
1.4.5 jmeter參數化
1.4.5.1 函數助手對話框
選項-函數助手對話框-選擇__Random腮出,隨機生成一個指定范圍的整數,將生成的字符串復制粘貼來使用
?
?
?
1.4.5.2CSV Data Set Config
選中請求-右鍵-添加-配置元件-CSV Data Set Config
?
?
1.4.6jmeter關聯
1.4.6.1json提取
從一個請求的響應結果中提取參數芝薇,用于下一個請求
選中請求-右鍵-添加-后置處理器-jp@gc - JSON Path Extractor(只要有json字樣就可以)
?
?
引用json提取的值:${sign}
1.4.6.2正則表達式提取
選中請求-右鍵-添加-后置處理器-jp@gc - 正則表達式提取器
響應報文: { "error_code": 0, "login_info": { "login_time": "20180520170814", "sign": "337ca4cc825302b3a8791ac7f9dc4bc6", "userId": 1 } } 正則表達式提扰叱啊: "sign": "(.*)"
?
?
引用正則表達式提取的值:${sign}
?
1.4.7響應斷言
響應結果:{ "error_code": 0, "login_info": { "login_time": "20181108131056", "sign": "e9cff923a69dbcc96e1b6cd0d26aed58", "userId": 9786 } }
添加斷言:選中請求-右鍵-添加-斷言-響應斷言
響應結果中若包含sign字符串,則請求通過洛二,不包含sign字符串馋劈,則請求失敗
?
1.5 Jmeter壓測
1.5.1線程組
?
線程組相當于有多個用戶,同時去執(zhí)行相同的一批次任務。每個線程之間都是隔離的灭红,互不影響的侣滩。一個線程的執(zhí)行過程中,操作的變量变擒,不會影響其他線程的變量值君珠。
?
1?默認情況下,測試開始的時候娇斑,所有線程就被創(chuàng)建完了策添。如果勾選了此選項,那么線程只會在合適的需要用到的時候創(chuàng)建毫缆。
Ramp-Up Period: 線程啟動的時間唯竹,如:5個線程,5秒啟動時間苦丁。那么每秒會啟動一個線程浸颓。
調度器 如果不想立即執(zhí)行,可以通過調度器控制測試執(zhí)行的開始時間和結束時間旺拉。
?啟動時間:控制測試在某個時間點啟動产上。這個配置會被“啟動延遲(秒)”配置覆蓋。
結束時間:控制測試執(zhí)行的結束時間蛾狗。這個配置會被“持續(xù)時間(秒)”配置覆蓋晋涣。
持續(xù)時間(秒):控制測試執(zhí)行的時間。比如如果你要讓用戶持續(xù)不斷登錄1個小時沉桌,你可以在文本框中填寫3600谢鹊。如果在1小時以內算吩,結束時間已經到達,它將會覆蓋結束時間佃扼,繼續(xù)執(zhí)行偎巢。
啟動延遲(秒):控制測試多久后啟動執(zhí)行。
?
1.5.2聚合報告
選中請求-右鍵-添加-監(jiān)聽器-聚合報告
?
?
1