2015-09-29 72 views
1

我正在運行apache/nginx webservers的臨時集羣,其中該域具有基本身份驗證受限訪問權限。我的目標是用jmeter測試集羣的性能。如何使用jMeter針對基本身份驗證保護域進行測試?

爲了通過身份驗證,我添加了Jmeter的HTTP身份驗證控制器。這工作,但每個請求顯示在Apache的兩個logentries。一個200和一個401.這是用戶必須認證的第一個請求的正常行爲。不幸的是,Jmeter在每次請求時都會這樣做。

如何確保每個線程/用戶只請求訪問一次。或者甚至更好,我怎麼能授予jmeter訪問權限,而不需要每個用戶都需要進行身份驗證。我相信這會影響測試結果。

謝謝你對此的任何提示。

回答

0

這聽起來像一個JMeter錯誤,因爲提供了適當的「授權」頭,不應該有WWW-Authenticate挑戰。如果你可以通過JMeter Bugzilla或標誌它通過JMeter Users Mailing List文件,它那將是巨大

在此期間,你可以將它周圍使用下列方法之一:

  1. 直接注入憑證到URL - 的情況下, JMeter的進入 「路徑」 輸入字段,如:

    http://username:[email protected]/path 
    

    Basic Auth 1 - credentials in URL

  2. 使用Beanshell腳本即時構建適當的「授權」標題。爲了做到這一點:

    • 確保HTTP Header Manager存在。如果沒有 - 添加它在測試計劃層次或作爲HTTP請求的孩子需要被認證
    • 添加Beanshell PreProcessor作爲HTTP請求的孩子需要被認證
    • 提供的用戶名和密碼,通過用空格分開「參數」輸入
    • 將下面的代碼到預處理器的 「腳本」 區域

      import org.apache.jmeter.protocol.http.util.Base64Encoder; 
      import org.apache.jmeter.protocol.http.control.Header; 
      
      String encodedCredentials = Base64Encoder.encode(bsh.args[0] + ":" + bsh.args[1]); 
      sampler.getHeaderManager().add(new Header("Authorization", "Basic " + encodedCredentials)); 
      

    Beanshell PreProcessor - authentication

你不應該在任何地方收到任何401代碼了。

相關問題