使用Java中的Jmeter测试Web服务性能

时间:2014-05-06 10:28:06

标签: java web-services jmeter performance-testing

我需要使用Jmeter中的Java来测试网络服务方法的效果,我发现Jmeter API提供StandardJMeterEngine类来运行Jmeter的测试方法1}},并使用" String":

类型的参数
public class JMeterTestFromCode {
    public static void main(String[] args) {
        // Engine
        StandardJMeterEngine jm = new StandardJMeterEngine();
        // jmeter.properties
        JMeterUtils.loadJMeterProperties("c:/tmp/jmeter.properties");
        HashTree hashTree = new HashTree();
        // HTTP Sampler
        HTTPSampler httpSampler = new HTTPSampler();
        httpSampler.setDomain("www.google.com");
        httpSampler.setPort(80);
        httpSampler.setPath("/");
        httpSampler.setMethod("GET");
        // Loop Controller
        TestElement loopCtrl = new LoopController();
        ((LoopController) loopCtrl).setLoops(1);
        ((LoopController) loopCtrl).addTestElement(httpSampler);
        ((LoopController) loopCtrl).setFirst(true);
        // Thread Group
        SetupThreadGroup threadGroup = new SetupThreadGroup();
        threadGroup.setNumThreads(1);
        threadGroup.setRampUp(1);
        threadGroup.setSamplerController((LoopController) loopCtrl);
        // Test plan
        TestPlan testPlan = new TestPlan("MY TEST PLAN");
        hashTree.add("testPlan", testPlan);
        hashTree.add("loopCtrl", loopCtrl);
        hashTree.add("threadGroup", threadGroup);
        hashTree.add("httpSampler", httpSampler);
        jm.configure(hashTree);
        jm.run();
    }
}

我的问题是我使用EJB的Web服务,这个Web服务使用自定义参数(bean对象),在我如何运行Soap之后:

String ENDPOINT_ADDRESS = "http://server:8080/server-ejb/MyServiceClass?wsdl";
QName SERVICE_DATA_FINDER = new QName(
    "http://test.service.com/", "MyServiceClass");
javax.xml.ws.Service service;

    service = javax.xml.ws.Service.create(
            new URL(ENDPOINT_ADDRESS), SERVICE_DATA_FINDER);
    IMyServiceClass finder = service.getPort(IMyServiceClass.class);
    MyBean bean = new MyBean();
    // bean.set...
    // bean.set...
    finder.myMethod("foo", bean);

目标是创建一个Maven项目,为Web服务+检索测试结果提供自动化性能测试(这就是我需要使用Java在Jmeter中实现WS测试的原因)

如何使用StandardJMeterEngine或其他API测试我的Web服务?

提前致谢!

1 个答案:

答案 0 :(得分:0)

是否有任何特定原因可以从Java代码测试您的服务? JMeter为基于XML的Web服务测试提供了SOAP/XML-RPC Request采样器,这是​​一个更真实的用例。

有关详细信息,请参阅Testing SOAP/REST Web Services Using JMeter指南。

但是,如果必须从Java代码测试Web服务,则只需将包含IMyServiceClass和依赖项的jar添加到JMeter的CLASSPATH。