【问题标题】:Test Web service performance using Jmeter in Java在 Java 中使用 Jmeter 测试 Web 服务性能
【发布时间】:2014-05-06 10:28:06
【问题描述】:

我需要在Java 中使用Jmeter 测试Web 服务方法的性能,我发现Jmeter API 提供StandardJMeterEngine 类来运行Jmeter 的测试方法,并使用类型为“ 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-Service + 检索测试结果提供自动化性能测试(这就是为什么我需要使用 Java 在 Jmeter 中实现 WS 测试)

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

提前致谢!

【问题讨论】:

  • 您查看用户手册了吗?
  • 哪个手册用户?你的意思是 JMeterEngine 实现吗?

标签: java web-services jmeter performance-testing


【解决方案1】:

从 Java 代码测试您的服务有什么特别的原因吗? JMeter 提供SOAP/XML-RPC Request Sampler 用于基于 XML 的 Web 服务测试,这是更真实的用例。

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

但是,如果必须从 Java 代码测试 Web 服务,您可以添加 jar,其中包含 IMyServiceClass 和对 JMeter 的 CLASSPATH 的依赖项。

【讨论】:

  • 我想创建一个 Maven 项目,为 Web-Service + 检索测试结果提供自动化性能测试,这就是为什么我需要使用 Java 实现 Jmeter 测试,感谢您的帮助:)跨度>
  • 你知道 JMeter Maven 插件吗? wiki.apache.org/jmeter/JMeterMavenPlugin
  • 非常感谢 Dmitri,从 java 项目运行 Web 服务测试是个好主意,您需要为测试项目添加依赖项(其中包含 Web 服务测试的实现),我可以申请吗测试项目上的 JMeterMavenPlugin 并从同一项目中获取测试的源类??
  • 可以通过user.classpath属性配置JMeter类路径
  • 当我使用 jmeter-maven-plugin 时,进程在以下行被阻塞:IMyServiceClass finder = service.getPort(IMyServiceClass.class);当我取消执行时(键入 Ctrl+C)程序继续测试并生成输出文件(测试报告)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多