Jmeter——實現Basic Auth方式登陸

背景

在實際測試平常中,產品有兩種登陸方式,一種是普通登陸方式,另外一種則是Basic Auth方式登陸。兩種登陸對應着產品中不一樣的操做,對權限進行了一個劃分。html

Postman登陸

使用Postman登陸,以下方式入參,便可正常登陸成功java

Jmeter登陸

一樣的一個登陸操做,換到jmeter中實現時,倒遇到了不小的麻煩,琢磨了些時間,終究是解決了,分享出來與你們共享。apache

1.遇到的問題

切換到jmeter進行登陸時,接口返回401,並報Unauthorized。401 是一個什麼概念呢:「未經受權」。有兩種可能,一是帳戶密碼不對,二是請求格式或者 JMeter 相關設置存在問題。帳號密碼確定是對的,那就是存在第二種問題了。服務器

遇到問題了,顯示本身琢磨了一番,仍是沒有解決,因此就來網絡上尋求幫助了。尋求一番下來,收穫還的確不小。網絡

2.解決辦法1

解決思路:進行基本受權,須要添加值爲 Basic base64(用戶名:密碼)的 Authorization 頭信息。測試

第一步: 添加 BeanShell PreProcessor

(前置處理器 > BeanShell PreProcessor),以下所示,說明:BeanShell PreProcessor 或者 JSR223 PreProcessor 任一都可優化

第二步:將如下腳本添加到 BeanShell PreProcessor

import org.apache.commons.codec.binary.Base64;
byte[] encodedUsernamePassword = Base64.encodeBase64("username:password".getBytes());
vars.put("base64HeaderValue",new String(encodedUsernamePassword));

 以下圖所示:編碼

第三步:添加 HTTP 信息頭管理器

路徑:線程組>配置文件>HTTP 信息頭管理器spa

第四步:填寫正確的 Authorization 信息

header name 填: Authorization
header value 填:Basic ${base64HeaderValue} (第二步建立的變量)線程

以下圖所示:

第五步:添加 HTTP 請求

輸入獲取token的接口,以下:

第六步:查看結果

當建立 http 請求時,Authorization 將以 base64 編碼的字符串傳遞給服務器,成功發送請求後,在 Request Headers 中就能夠看到 Authorization 的信息。

自 JMeter 3.2 之後,就不須要上述的方法了,有了更優化的解決方案,那就是解決辦法2。

3.解決辦法2

第一步: 添加 HTTP 受權管理器

(配置元件 > HTTP 受權管理器)
說明:它提供了自動將相關 Authorization 信息添加到 HTTP 請求 header 的功能。

第二步:添加受權信息

基本 URL:http://XXXXXXXX

用戶名:user

密碼:passwd

將 域 和 Realm 保留爲空

Mechanism:BASIC_DIGEST

以下所示:

第三步:添加 HTTP 請求

輸入獲取token的接口,以下:

 第四步:查看結果

Jmeter實現Basic Auth方式登陸,使用上述兩個辦法能夠完美解決,但願對有疑惑的人有所幫助。我的仍是喜歡第二種方式,第二種相對簡單一些。

 

本文僅表明做者觀點,系做者@溫一壺清酒發表。
歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。
文章出處:http://www.cnblogs.com/hong-fithing/

原文出處:https://www.cnblogs.com/hong-fithing/p/10792485.html

相關文章
相關標籤/搜索