在測試過程中遇到一個需求,一個抽獎接口,可能傳回四種抽獎結果,一二三四等獎,沒有不中獎的,對獎項設定中獎率。
要測試中獎率就要知道每個請求傳回的中獎結果,并進行累加。
工具使用的jmeter,首先想到的是Beanshell,開始由于不知道怎麼設定全局變量,自己定義的變量每次都被重新初始化了,後來發現jmeter有屬性變量
a) props.get("key");
b) props.put("key","value");
比如我把一等獎中獎個數初始值設為0,props.put("topone","0");
然後用正規表達式擷取服務端的傳回值,将正規表達式提取器擷取的結果做判斷,如果是一等獎那麼topone+1,然後再次儲存到props.put("topone",topone+1)
最後擷取到的props即為要擷取的值。
//運作前執行初始化,初始化後要注釋掉
props.put("code",0);
props.put("xj",0);
props.put("zj",0);
props.put("dj",0);
props.put("jsj",0);
//使用正規表達式提取傳回值
String value = vars.get("levelName");
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
//System.out.println("zhang:"+value);
//調試變量值擷取是否正常
int x = props.get("code");
int xxj = props.get("xj");
int xdj = props.get("dj");
int xjsj = props.get("jsj");
System.out.println("x="+x);
System.out.println("xxj="+xxj);
System.out.println("xdj="+xdj);
System.out.println("xjsj="+xjsj);
//對正規表達式提取的傳回值進行判斷
if(value.equals("中吉")){
props.put("code",x+1);
System.out.println("======");
}
System.out.println(props.get("code"));
if(value.equals("小吉")){
props.put("xj",xxj+1);
System.out.println("======");
}
System.out.println(props.get("xj"));
if(value.equals("大吉")){
props.put("dj",xdj+1);
System.out.println("======");
}
System.out.println(props.get("dj"));
if(value.equals("吉上吉")){
props.put("jsj",xjsj+1);
System.out.println("======");
}
System.out.println(props.get("jsj"));