Jmeter有幾種Sampler涮雷,如果想用自定義Java代碼來進行壓測滤愕,就要使用Java Sampler茎刚。
那么如何編寫Java Sampler堤如,并引入到jmeter進行壓測呢?很簡單
step one
首先需要引入依賴
<dependency>
<groupId>org.apache.jmeter</groupId>
<artifactId>ApacheJMeter_java</artifactId>
<version>3.3</version>
<scope>provided</scope>
</dependency>
這里只是編譯時需要用到忽媒,實際運行時代碼會放在 ${JMETER_HOME}/lib/ext 下争拐,${JMETER_HOME}/lib 下已經(jīng)有對應依賴了,所以 這里 scope設置為provided即可晦雨。
step two
然后就可以編寫測試代碼了
public class SdkTest extends AbstractJavaSamplerClient implements Serializable {
private static Logger logger = LoggerFactory.getLogger(SdkTest.class);
private static final ConfigCenter configCenter = ConfigCenterFactory.getConfigCenter();
/**
* 自定義java方法入?yún)⒌? 設置可用參數(shù)及默認值
* @return
*/
@Override
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("name", "");
params.addArgument("tag", "");
return params;
}
/**
* 每個線程測試前執(zhí)行一次架曹,做一些初始化工作隘冲;
* @param context
*/
@Override
public void setupTest(JavaSamplerContext context) {
super.setupTest(context);
}
/**
* 開始測試,從args參數(shù)可以獲得參數(shù)值绑雄;
* @param args
* @return
*/
@Override
public SampleResult runTest(JavaSamplerContext args) {
String name = args.getParameter("name");
String tag = args.getParameter("tag");
SampleResult result = new SampleResult();
try {
result.sampleStart();
//這里就是自定義壓測的代碼
.........
..........
..........
//請求成功展辞,設置測試結(jié)果為成功
result.setSuccessful(true);
} catch (Exception e) {
result.setSuccessful(false);
e.printStackTrace();
} finally {
result.sampleEnd();
}
return result;
}
@Override
public void teardownTest(JavaSamplerContext context) {
super.teardownTest(context);
}
}
需要注意:Sampler類需要擴展JMeter的類org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient 或 實現(xiàn) org.apache.jmeter.protocol.java.sampler.JavaSamplerClient接口
step three
編寫完成后,通過 mvn package 打成一個jar包万牺,為了方便罗珍,我這里打成的是一個fat包,然后將其放進 $JMETER_HOME/lib/ext目錄下
step four
打開Jmeter脚粟,創(chuàng)建一個Java Request
然后就能看到剛才編寫的Sampler類了
紅色框處可以定義測試的輸入靡砌,剛才上面的代碼例子中的runTest方法中,就可用通過JavaSamplerContext來獲取這些輸入
然后就可以開心地進行壓測了
坑
1珊楼、如果Sampler代碼需要獲取外部配置的話,例如需要配置zk server度液、host等配置厕宗,而這些配置是在外部properties中的,需要在啟動jmeter的時候加上
sh jmeter.sh -Dcom.vipshop.mobile.serconfig=./configcenter.properties