1. 程式人生 > >Python自動化學習筆記(一)——介面測試基礎

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    cookiesession

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