Python自動化學習筆記(一)——介面測試基礎
1.1 介面基礎知識
1.1.1 Get&post請求
GET和POST請求:
GET提交的資料會放在URL之後,以?分割URL和傳輸資料,引數之間以&相連,如EditPosts.aspx?name=test1&id=123456.
POST請求是把提交的資料放在HTTP包的Body中.
get請求可以用瀏覽器來發送,直接輸入URL,post請求需藉助工具來發送。
GET請求和POST請求的區別:
GET使用URL或Cookie傳參。而POST將資料放在BODY中。也就是說get請求沒有請求體,只有請求頭。
get請求沒有post安全,因為get把引數都寫到url裡面
get請求有引數的大小限制,post請求沒有大小限制。
get請求一般用來獲取資料,像服務端傳送資料的時候用post
個人理解來說,第二點和第三點區別比較勉強,get請求雖然將引數暴露在url中,看起來很不安全,但post請求也並沒有好到哪裡去,只要抓包,它的引數照樣無所遁形,而第三點呢,在 HTTP 協議定義中,沒有對GET請求的資料大小限制,所謂的get請求有引數大小限制,不過是瀏覽器的限制而已。
1.1.2 關於請求體和請求頭
HTTP請求報文由3部分組成(請求行+請求頭+請求體):
請求頭
header
你發出去這個請求的額外資訊,例如你用什麼瀏覽器發的,你想讓服務端給你返回什麼樣的資料等
cookie
請求體
body
傳送給服務端的引數
1.1.3 http 狀態碼
HTTP狀態碼是用以表示HTTP響應狀態的3位數字程式碼。
每發出一個http請求之後,都會有一個響應,http本身會有一個狀態碼,來標示這個請求是否成功,常見的狀態碼有以下幾種:
1、200 2開頭的都表示這個請求傳送成功,200請求已成功,請求所希望的響應頭或資料體將隨此響應返回。
2、300 3開頭的代表重定向,302請求的資源現在臨時從不同的 URI 響應請求。301 - 資源(網頁等)被永久轉移到其它URL
3、400 400代表客戶端傳送的請求有語法錯誤,401代表訪問的頁面沒有授權,403表示沒有許可權訪問這個頁面,404 - 請求的資源(網頁等)不存在
4、500 5開頭的代表伺服器有異常,500代表伺服器內部異常,504代表伺服器端超時,沒返回結果
-部分摘自網站:www.besttest.cn
1.1.4 cookie、session
cookie和session被用來跟蹤使用者的會話 。
cookie是在本地存的鍵值對,session是在服務端存的鍵值對
在使用postman和jmeter時,cookie 可以在header傳送出去,為鍵對{'Cookie':’xx=xx,xx=xx,xx=xx'}的格式
1.2介面用例設計
1.2.1 測試內容
通過性驗證、介面安全、異常驗證(必傳非必傳、引數型別、入參長度)、業務邏輯
例如:介面安全,關鍵欄位如密碼有沒有加密 (F12開發者工具-network)
1.2.2 用例參考
1.3 postman請求介面
1.3.1postman-get示例
1.3.2postman-post示例
1.3.3postmant新增cookie
1.3.4postman使用json格式傳送資料
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提取
從一個請求的響應結果中提取引數,用於下一個請求
選中請求-右鍵-新增-後置處理器[email protected] - JSON Path Extractor(只要有json字樣就可以)
引用json提取的值:${sign}
1.4.6.2正則表示式提取
選中請求-右鍵-新增-後置處理器[email protected] - 正則表示式提取器
響應報文: { "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執行緒組
執行緒組相當於有多個使用者,同時去執行相同的一批次任務。每個執行緒之間都是隔離的,互不影響的。一個執行緒的執行過程中,操作的變數,不會影響其他執行緒的變數值。
1 預設情況下,測試開始的時候,所有執行緒就被建立完了。如果勾選了此選項,那麼執行緒只會在合適的需要用到的時候建立。
Ramp-Up Period: 執行緒啟動的時間,如:5個執行緒,5秒啟動時間。那麼每秒會啟動一個執行緒。
排程器 如果不想立即執行,可以通過排程器控制測試執行的開始時間和結束時間。
啟動時間:控制測試在某個時間點啟動。這個配置會被“啟動延遲(秒)”配置覆蓋。
結束時間:控制測試執行的結束時間。這個配置會被“持續時間(秒)”配置覆蓋。
持續時間(秒):控制測試執行的時間。比如如果你要讓使用者持續不斷登入1個小時,你可以在文字框中填寫3600。如果在1小時以內,結束時間已經到達,它將會覆蓋結束時間,繼續執行。
啟動延遲(秒):控制測試多久後啟動執行。
1.5.2聚合報告
選中請求-右鍵-新增-監聽器-聚合報告
1