Case in ibranch

This part will show you how we test our ibranch system.

承上一節的 Recording Test ,我們將繼續延伸這一章節,所以務必先 step by step 做完上一章,我們將準備正式模擬使用者使用 ibranch 之情形,為求方便測試,我們以最簡單的交易 22101 為唯一測試交易,亦即假設每一個使用者都在做 22101 這隻交易。

需求

我們需要隨機產生使用者登入帳號,進行登入去測試 22101 這隻交易。但實際上櫃員只有 001201 以及 001205 才有權限做這隻交易


由於我們要隨機產生使用者登入帳號,因此我們先加入 Random Varible ,因次在跑每一圈時都會產生一個隨機亂數。

Thread Group -> Add -> Config Element -> Random Variable

指定 Variable Name , Minimum Value (最小值) :1, Maximum Value (最大值) :8

接著我們要找到設定 userId 的那個 request ,將其 Body Data 內的 post 資料改成 00120${random}

Jmeter 取得變數的方式是 ${variable name} ,那又加上我們的帳號是 00120 + 隨機數字 1~8 ,因此我們才要寫成 00120${random}

我們先將 Number of Threads (users) 設為 20 ,Ramp-Up-Period (in seconds)設為 40,意即每兩秒會有 1 個使用者,總共 20 人。

在此我們再新增一個 Summary Report 彙整報告,用來更方便檢視所有 Thread group 的運行狀況。

Thread Group -> Add -> Listener -> Summary Report

接著我們要運行,並查看其結果。

Summary Report 內容看來沒什麼大礙,如期跑了 20 個樣本。


問題產生

OK,接著我們回到 View Results Tree 這裡看一下結果,仔細看你將會發現壹些問題如下:

  • 無權限開啟本交易
  • 發現此狀況,我們可以往回推查看上面 request 裡 userId 的設定是 001203 ,由於除了 001201,001205 之外皆無權限開啟 22101 的交易,純屬正常情況,但若要避免這種情況發生,我們可以在外圈進先進行判斷。

  • 使用者未開帳
  • 發生這種情況,原因是既使 userId 是 001201 或是 001205 了,但櫃員在進行帳務交易前,必須要先進行開帳的動作,因此要解決此問題必須再錄製一個開帳的動作,當 userId 是 001201 或是 001205 時要先進行開帳。

▼無權限開啟本交易

▼使用者未開帳


解決如下

▼無權限開啟本交易

1.新增 If Controller 控制只允許 userId 為 001201 或是 001205 時才執行

Thread Group -> Add -> Logic Controller -> If Controller

2.將 Recording Controller 放入 If Controller 裡面

3.Condition (default Javascript) ?填入 "${radom}" == "1" || "${radom}" == "5"

這裡要填入的就 if 的條件式 ,然後記得把 Interpret Condition as Variable Expression? 那個選取方塊取消掉

4.接著我們再跑一次,你會發現樣本數只剩下低於 20 個,因為前面 If Controller已經過濾掉了

▼使用者未開帳

1.首先,我們要先重新錄製一個新的 22101 交易(要包含開帳的動作),以下是已經錄製好包含開帳 22101 的交易

建議在錄製時把簽退也錄進去,會比較乾淨,因為簽退時,cookie將會重設,這樣才不會跟上一個使用者撞到

2.將重新錄好的那隻交易 (包含開帳) 替換原本舊的 (不包含開帳) 到 If Controller 裡

3.記得要把新錄的這隻交易裡 request Body Data 的 userId 改成 00120${radom}

4.最後我們來運行看看結果如何。

5.其實我們這的要確定執行有沒有成功最快的方式是進入EJ,像上面 sample 顯示有 4 筆,在 EJ 裡就會有 4 筆。


參考 Reference Data

  1. https://stackoverflow.com/questions/16694258/jmeter-random-variable-in-several-threads
  2. http://jmeter.apache.org/usermanual/component_reference.html#Random_Variable
  3. https://blog.codecentric.de/en/2014/01/automating-jmeter-tests-maven-jenkins/
  4. https://stackoverflow.com/questions/5702621/jmeter-if-controller-with-parameters
  5. http://blog.xuite.net/chingwei/blog/21162258-%E3%80%90%E8%BB%9F%E9%AB%94%E3%80%91JMeter+-+%E5%A3%93%E5%8A%9B%E6%B8%AC%E8%A9%A6+-+%E7%B0%A1%E5%96%AE%E7%89%88

results matching ""

    No results matching ""