運用JMeter登入系統,並進行效能測試

首先必須抓取網站登陸時所傳送的Post引數,以登陸知乎zhihu為例

用Chrome開啟 https://www.zhihu.com/,點選登入進入登入頁面,保持該頁面不動(下圖左邊)。隨後進入Chrome的開發者模式,選擇Network檢視(下圖右邊) 。最好勾上Preserve Log的選項 ,以免在提交登入請求的時候由於頁面重新整理太快漏掉了請求。

輸入使用者名稱和密碼以後,右邊的除錯視窗會出現大量的請求列表。找到名字為email的請求,看到它是一個POST請求

  1. Request URL:
    http://www.zhihu.com/login/email
  2. Request Method:
    POST
  3. Status Code:

    200 OK
  4. Remote Address:
    117.169.77.100:80

使用者名稱和密碼在最下面的Form Data中

  1. _xsrf:
    49ede7b8e3f8c08662d75bd9b259fc6e
  2. password:
    ***********
  3. captcha:
    {“img_size”:[200,44],”input_points”:[[115.297,36],[177.297,33]]}
  4. captcha_type:
    cn
  5. remember_me:
    true
  6. email:
    ************

這就是我們需要向伺服器POST的資訊。

開啟JMeter,新增以下的元素

分別是HTTP請求預設值、HTTP Cookie 管理器、登入請求頁面URL、登入後的首頁

注意由於知乎使用的是HTTPS協議,所以在HTTP請求預設值頁面,需要額外的做一些設定:埠號是443,協議是https

HTTP請求中的登入頁面需要把之前抓到的POST請求引數配置進去:密碼、字符集設定、是否記住使用者、郵箱。以及登入請求的URL(由於伺服器名稱在HTTP請求預設值中已經設定好了,所以這裡只需要填寫路徑部分 /login/email)

登入成功後的頁面https://www.zhihu.com/#signin,應該會有我的草稿、我的收藏、我關注的問題 這些標籤,如果在返回的響應種看到了這些文字,則測試是成功的

所以在登入後的首頁裡面新增一個斷言,檢查是否包含文字“我的草稿”來判斷登入是否成功

點選JMeter執行按鈕開始執行,可以看到返回結果裡面已經有了“我的草稿”的文字,說明登入成功

截止目前,我們已經能成功的登入知乎系統,並返回結果。但大部分效能測試需求只需要測試登入後使用者所能操作的頁面,並不需要測試使用者登入頁面。而我們目前的方案如果要測試這些頁面,必須連同登入頁面一起測試。JMeter提供了了一個很好的邏輯控制器來處理這樣的場景:僅一次控制器

將登入操作放到該邏輯控制下,那麼登入操作就只會執行一次

然後在你的執行緒組裡面設定所需要的迴圈次數,執行結果(這裡設定了10次),可以看到返回了10的成功結果

TIPS:在測試過程中發現,如果在短時間內重複登入多次的話,知乎Zhihu會出現人工輸入的驗證碼,JMeter無法處理這樣的情況,只能等一段時間驗證碼機制失效後再重新試。

文中所列的JMeter指令碼檔案可以在這裡下載(使用者名稱和密碼需要根據自己的情況修改一下)

http://download.csdn.net/detail/yangqingtao/9546161