『動善時』JMeter基礎 — 49、使用JMeter自身代理錄製APP測試指令碼

繁華似錦Fighting發表於2021-06-26

錄製指令碼只不過是我們日常工作中的一個小應用而已,只是為了能快速看到應用程式跑的邏輯及實現順序。並夠幫助測試人員,快速查出問題出現的節點。

而對於做有針對性的測試時,比如做某個介面的測試,建議大家還是自己去建立及組織指令碼,不過錄制的指令碼可以拿來做參考,貼上複製也是可以節省不少的工作量。

在JMeter中可以使用自身就帶的HTTP代理伺服器元件錄製指令碼,可以錄製在WEB上的操作,也可以錄製在手機App上的操作。

  • 錄製在WEB上的操作時,需要設定瀏覽器的代理伺服器。
  • 錄製在手機App上的操作時,需要設定手機上的代理伺服器。

下面就詳細的介紹,使用HTTP代理伺服器元件錄製App指令碼。

需求:錄製在安卓模擬器中,使用購物軟體,記錄購物的操作。

同理,我們可以錄製各種App上的操作。

1、測試計劃內包含的元件

新增元件操作步驟

  1. 建立測試計劃。
  2. 建立執行緒組:選中“測試計劃”右鍵 —> 新增 —> 執行緒(使用者) —> 執行緒組
  3. 線上程組中,新增配置原件“HTTP Cookie管理器”元件:選中“執行緒組”右鍵 —> 新增 —> 配置元件 —> HTTP Cookie管理器
    說明:如果錄製的操作包括使用者登入操作,則需要新增“HTTP Cookie管理器”,新增之後不需要任何配置,錄製後,指令碼中便儲存使用者登入的相關資訊。(本示例中沒有登陸操作,可以不新增)
  4. 在測試計劃下,新增非測試元件“HTTP代理伺服器”元件:選中“測試計劃”右鍵 —> 新增 —> 非測試元件 —> HTTP代理伺服器
  5. HTTP代理伺服器元件下,新增監聽器“察看結果樹”元件:選中“HTTP代理伺服器”右鍵 —> 新增 —> 監聽器 —> 察看結果樹

最終測試計劃中的元件如下:

image

點選執行按鈕,會提示你先儲存該指令碼,指令碼儲存完成後會直接自動執行該指令碼。

2、HTTP代理伺服器的設定內容

HTTP代理伺服器元件中,我們需要編輯:

  1. 埠:預設8888,一般使用預設即可。主要不能與本地其他服務的埠號衝突,否則啟動不了。比如說 Fiddler已用的埠衝突。
  2. HTTPS Domains:我的理解就是,設定代理伺服器的主機IP地址或者域名。因為在我們本地使用,一般就是localhost或者127.0.0.1即可,當然不填寫也是可以的。(此填寫的地址一定要能夠連線外網)
  3. 設定目標控制器:也就是錄製的元件儲存到什麼位置。這個一定要選,下圖中選擇了儲存到目標執行緒組中。

配置完的介面內容,如下圖所示:

image

3、設定手機的代理伺服器

在手機上設定代理伺服器的步驟:

(1)進入手機代理伺服器配置介面

設定 —> 無線和網路 —> WLAN,點選進入。

在無線網名稱上進行長按操作,會出現如下列表,選擇修改網路。

image

然後選擇高階選項 —> 點選代理後邊的下拉三角,選擇手動。

image

(2)配置手機代理伺服器

代理伺服器主機名:填寫自己本地電腦的IP地址。

代理伺服器埠:填寫JMeter的HTTP代理伺服器中設定的埠號,也就是8888。

如下圖所示:

image

提示一下,本地主機IP地址檢視方式:

在電腦開啟CMD命令,輸入ipconfig命令。

因為我們是用無線網進行連線的,所以選擇無線區域網這塊網路卡。

image

4、錄製指令碼

以上內容設定完畢後,在JMeter中的HTTP代理伺服器介面,點選啟動按鈕,開始錄製。

提示:在HTTP代理伺服器介面點選“啟動”時,Meter將生成自己的證照。證照生成可能需要一些時間,在此期間,GUI將無響應。證照生成完成後,GUI將顯示一個彈出對話方塊,其中包含根CA證照的詳細資訊,證照有效期為7天。該證照需要在手機中安裝,以便接受JMeter生成的主機證照。
如下圖所示:

image

關於配置證照,這裡就不展開說明了。直接點選OK即可。

然後開啟手機中的應用,進行購物操作,JMeter中就已經開始錄製指令碼了。

image

操作完成之後,到JMeter的HTTP代理伺服器中點選“停止”,然後將手機的代理設定恢復原樣即可。

不恢復的話,會導致你無法使用手機訪問外網。

如下圖所示:

image

5、檢視錄製的指令碼

在JMeter中我們可以看到已經記錄了許多請求對應的資訊,包括PHPjs.jpg.png等請求。

如下圖所示:

image

我們可以看到,我們只進行了簡單的幾步操作,卻錄製這麼的請求。是因為JMeter錄製很多非關鍵性的請求,如一些圖片的請求,這就需要我們進行一些優化。

錄製指令碼的優化有兩個步驟:

  1. 在錄製的時候,做一些過濾和排除操作。
  2. 在錄製後的指令碼中手動優化,刪除不需要的元件,增加自己需要的元件。
    1)伺服器名稱或IP與目標網站不同的、無關的,可以刪除。
    2)js/css/png/jpeg等這類請求刪掉。
    3)沒有傳遞任何資料的請求可以遮蔽掉,等流程能回放成功了,這些再刪除。如果回放不成功,再一個一個開啟,進行檢查。

6、HTTP代理伺服器的排除模式

在測試指令碼中有一些錄製的資訊是沒有任何作用的,所以我們在錄製指令碼的時候,就可以通過HTTP代理伺服器的排除模式,排除一些不需要的請求資訊,如cssgifpng等請求。

例如:

  • 在包含模式新增填上 .*\.jsp,只在請求JSP檔案時錄製指令碼。
    這裡通常都是設定JSP或者HTML,可以根據具體情況進行填寫。
  • 在排除模式處填上.*\.js ,在請求js檔案時不錄製指令碼。
    這裡通常都是設定jsjpgpnggifcss等,這些型別檔案請求都是不需要錄製的。
  • 當然我們也可以點選新增建議排除按鈕,會自動生成一個過濾的正規表示式。

如下圖所示:

image

新增上這些時候,錄製出來的指令碼,多餘的累贅會減少很多。

7、儲存指令碼

指令碼錄製完成後,需要進行指令碼的儲存。

把指令碼儲存到本地,可以分享給其他成員,進行檢視、編輯、回放等操作。

以上就是使用JMeter代理伺服器錄製指令碼的操作過程,記錄一下,以備自己可以翻閱,也可以幫助其他人瞭解一下JMeter的這個功能。

8、注意坑點

  1. 我們的手機與JMeter所在的電腦必須在同一個WiFi下!!否則會失敗!
  2. JMeter啟動有兩種方式,一種是用ApacheJMeter.jar檔案啟動,一種是用jmeter.bat檔案啟動。那麼請一定採用Jmeter.bat這種方式來啟動 JMeter ,否則無法進行指令碼的錄製。
  3. IOS手機需要安裝證照。

相關文章