2.多接口性能測試
按照上面的方法進行測試,每個需要測試的接口和場景都需要寫一個這樣的測試類,對于有些具有相似初始化,清理等
工作,只有具體的那行事務(wù)代碼不一樣的情況,會有很多重復(fù)的工作。如下:
可以考慮采用反射的方式來解決這個問題,尤其是業(yè)務(wù)非常類似的接口和場景。當然,反射會帶來壓力機的性能消耗,
但是這個可以通過調(diào)整JMeter的JVM參數(shù)和增加JMeter實例來解決。
1)利用反射后的結(jié)構(gòu)如下:
2)AbstractServiceClient是一個抽象基類
package com . xxx . yyy . perf . base;
import java.lang.reflect.Method;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
/**
* Comment of AbstractServiceClient
* @author flynewton
*/
public abstract class AbstractServiceClient extends AbstractJavaSamplerClient {
public Object invokeTest( String testName , JavaSamplerContext context ,SampleResult sample) {
Method [] methods = this . getClass (). getMethods();
for ( Method m : methods) {
if ( m . getName (). equalsIgnoreCase( testName)) {
try {
return m . invoke( this , context , sample);
} catch ( Throwable t) {
this . getLogger (). error( "execute method:" + testName + " falied" , t);
}
}
}
return null;
}
}