2015-10-06 83 views
0

我想通過JMeter測試隨機變量邏輯的應用程序。它是投票申請。隨機變量邏輯

流程:登錄投票-ReVoting,註銷了250個用戶

問題:我有投票1人出3名成員,並再次我不得不重新投票給另一個人。我在用戶定義的變量中定義了投票成員id,所以首先我使用了bean shell代碼進行第一次投票。這裏是代碼。(Beanshell1)

import java.util.Random; 

String[] categories = (vars.get("categories")).split(","); 

int idx = new Random().nextInt(categories.length); 
String category = (categories[idx]); 

vars.put("rnd_cat",category); 

重新投票,我要排除先前投票的會員ID,所以我用下面的代碼爲(Beanshell2)

while(category==rnd_cat) 
{ 
    String[] categories = (vars.get("categories")).split(","); 

    int idx2 = new Random().nextInt(categories.length); 
    category = (categories[idx2]); 
} 

,但我我在迴應中得到了無效。

回答

0

Beanshell對rnd_cat是什麼都不知道。通過==運算符來比較字符串也不是一個好主意。修改你的「Beanshell2」如下:

while(category.equals(vars.get("rnd_cat")) 
{ 
    String[] categories = (vars.get("categories")).split(","); 

    int idx2 = new Random().nextInt(categories.length); 
    String category = (categories[idx2]); 
} 

而且考慮切換到JSR223 Test Elementsgroovy語言,強烈推薦,因爲它通過Beanshell vs JSR223 vs Java JMeter Scripting: The Performance-Off You've Been Waiting For!文章證明在JMeter的做腳本的方式。

這完全不要求腳本的另一個很好的選擇是通過__chooseRandom()JMeter Plugins

+0

我收到非法字符execpetion..can我們傳遞變量從beanshell1到beanshell2功能可用? –

+0

如果它們在同一個線程組中 - 'vars.put()'和'vars.get()'。如果在單獨的'props.put()'和'props.get()'中。如果沒有看到測試計劃和完整的Beanshell代碼的截圖,就不可能說明任何明顯的事情 –