Jmeter实现Dubbo接口测试

目录

前言:

一、准备

 二、编写我们的测试工程

三、Jmeter来测试这个工程


前言:

JMeter可以用来测试Dubbo接口的性能和负载。Dubbo是阿里巴巴的高性能RPC框架,常用于分布式服务的调用。为了测试Dubbo接口,需要使用JMeter提供的Java请求Sampler,并编写Java测试代码来模拟Dubbo服务调用。

一、准备

(1)自行下载安装zookeeper-3.4.6(这里的版本是我用的,可以自行下载自己喜好的版本)

(2)自行下载apache-jmeter-3.1,这是免安装的,解压后\Jmeter\apache-jmeter-3.1\bin目录下执行jmeter.bat即可启动。

(3)开发环境STS(即Spring Tool Suite)

(4)dubbo-admin-2.4.1(这个是非必须的,主要是为了查看Dubbo的服务提供者和消费者)

 二、编写我们的测试工程

先明确下我们编写工程的过程,dubbo主要是通过实现一个接口,将服务暴露出去。所以我们创建工程的时候,最好分开创建。可以分为:

Jmeter实现Dubbo接口测试_第1张图片

下面我们分别来看:

1.接口工程

通过STS创建一个Spring Project。命名为Interface-service。在这个工程里面只新建一个接口,命名为DubboService.java。其代码如下:

package com.dubbo.provider.Interface_service;

public interface DubboService {
    public abstract void print();
}

其工程目录结构为:

Jmeter实现Dubbo接口测试_第2张图片

此工程的其他内容都默认即可,不用做任何处理。

2.服务提供者dubbo-provider01的创建

通过STS创建一个Spring Project。命名为dubbo-provider01。其目录结构如下:

Jmeter实现Dubbo接口测试_第3张图片

(1)通过pom.xml文件引入Interface-service的jar、dubbo服务的jar、zkclient的jar。这三个jar是必须要在pom文件中进行引用的,如果不引用后面会报错。引用代码为:


com.dubbo.provider
Interface-service
0.0.1-SNAPSHOT


com.alibaba
dubbo
2.5.3


com.github.sgroschupf
zkclient
0.1

 其中我们看Interface-service的引用,它的版本号哪里来的,我们在引用前,必须先对Interface-service这个工程进行maven install,生成其jar,其jar包在target目录下,如下图所示:

Jmeter实现Dubbo接口测试_第4张图片

此时我们获取到Interface-service-0.01-SNAPSHOT.jar,在dubbo-provider01中可以引用了。

(2)编写dubbo-provider.xml文件。其文件内容为:

 



 
 
 

 
 

 
 

 
 

 其中在编写xml文件前,必须先在windows->>preferences->>XML Catalog中add,详见我的博客。

(3)配置log4j.properties文件,文件内容为:

log4j.rootLogger=info, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n

(4)在src/main/java下新建包com.dubbo.provider.demo,再在包com.dubbo.provider.dem下新建接口DubboService.java的实现类DubboServiceImpl.java。其源码为:

package com.dubbo.provider.demo;
import org.springframework.stereotype.Service;
import com.dubbo.provider.Interface_service.DubboService;
@Service("dubboservice")
public class DubboServiceImpl implements DubboService{
public void print() {
System.out.println("欢迎您的操作");
}
}

 (5)在src/test/java下新建包com.dubbo.provider.test,再在包com.dubbo.provider.test下新建启动服务的测试类TestProvider.java。其源码为:

package com.dubbo.provider.test;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.annotation.CommonAnnotationBeanPostProcessor;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.alibaba.dubbo.common.URL;

public class TestProvider {
    private static final Log log = LogFactory.getLog(TestProvider.class);  
    public static void main(String[] args) {
         try {  
             ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:dubbo-provider.xml");  
             context.start();  
         } catch (Exception e) {  
             log.error("== DubboProvider context start error:",e);  
         }  
         synchronized (TestProvider.class) {  
             while (true) {  
                 try {  
                     TestProvider.class.wait();  
                 } catch (InterruptedException e) {  
                     log.error("== synchronized error:",e);  
                 } 

             }  
         }  
    }
}

(6)首先启动ZK、再次启动estProvider.java,在启动Tomcat。最后查看其服务注册情况:

Jmeter实现Dubbo接口测试_第5张图片

可以看到我们的服务提供者已经创建成功了。(怎样使用dubbo-admin查看dubbo服务可以参考我的博文:)

 3.消费者dubbo-consumer的创建

通过STS创建一个Spring Project,其目录结构如下图所示:

Jmeter实现Dubbo接口测试_第6张图片

(1)pom.xml文件的引用,此时我们需要注意一个问题,作为消费者要调用服务提供者,所以必须要引入服务提供者的jar包,请注意我们引用的还应该是Interface-service的jar而并非是dubbo-provider01的jar。代码如下:


  4.0.0
  org.springframework.samples
  dubbo-consumer
  0.0.1-SNAPSHOT
  
  

        
        1.6
        UTF-8
        UTF-8

        
        3.2.3.RELEASE

        
        4.2.1.Final

        
        1.0.13
        1.7.5

        
        4.11

    
    
    
        
        
            org.springframework
            spring-context
            ${spring-framework.version}
        
        
        com.dubbo.provider
        Interface-service
        0.0.1-SNAPSHOT
        
        
        com.alibaba
        dubbo
        2.5.3
        
        
        com.github.sgroschupf
        zkclient
        0.1
        
        
            org.springframework
            spring-tx
            ${spring-framework.version}
        

        
        
            org.slf4j
            slf4j-api
            ${slf4j.version}
            compile
        
        
            ch.qos.logback
            logback-classic
            ${logback.version}
            runtime
        

        
        
            org.hibernate
            hibernate-entitymanager
            ${hibernate.version}
        

        
        
        
            org.springframework
            spring-test
            ${spring-framework.version}
            test
        
        
            junit
            junit
            ${junit.version}
            test
        
        

(2)编写dubbo-consumer.xml文件,其代码如下:

  
  
  
      
      
       
      
      
      
      
      
  
    

(3)编写log4j.properties文件,内容与服务提供者的一致即可,不在赘述。

(4)在src/test/java下新建包com.dubbo.consumer.demo,再在包com.dubbo.consumer.demo下新建测试类TestConsumer.java,启动消费者,其源码如下:

package com.dubbo.consumer.demo;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.dubbo.provider.Interface_service.DubboService;

public class TestConsumer {
    private static final Log log = LogFactory.getLog(TestConsumer.class);  
    
    public static void main(String[] args) throws InterruptedException {  
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:dubbo-consumer.xml");  
        context.start();  
        DubboService demoService = (DubboService)context.getBean("dubboservice");   
        demoService.print();
       // log.info("打印"+demoService.print());            
        Thread.sleep(100000);    
    }  
}

(5)确保服务提供者正常启用的情况下,运行TestConsumer.java,运行结果如下:

Jmeter实现Dubbo接口测试_第7张图片

(6)此时在查看dubbo服务:

Jmeter实现Dubbo接口测试_第8张图片

我们可以看到dubbo-consumer这个dubbo服务业注册成功了,从此这个工程就搭建完毕了。

三、Jmeter来测试这个工程

(1)导出dubbo-consumer工程依赖的所有jar包:导出方法cmd到工程所在路径下执行mvn dependency:copy-dependencies命令即可:此时会在工程的target目录下新增一个

dependency目录

Jmeter实现Dubbo接口测试_第9张图片

(2)将dependency目录中的jar全部复制粘贴到:Jmeter的lib目录下,如果有重复的jar包,则保留Jmeter的jar包。

(3)Run as工程dubbo-consumer,选择maven install。生成dubbo-consumer-0.0.1-SNAPSHOT.jar。

Jmeter实现Dubbo接口测试_第10张图片

将dubbo-consumer-0.0.1-SNAPSHOT.jar放到Jmeter的\Jmeter\apache-jmeter-3.1\lib\ext路径下。

(4)以管理员身份打开Jmeter。新建一个线程组,新建一个java请求,增加查看结果树;此时运行java请求:

Jmeter实现Dubbo接口测试_第11张图片

剩下的事情就是如何写测试脚本了。

 作为一位过来人也是希望大家少走一些弯路,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

留【自动化测试】即可【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N4P3http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=Yg3Y37fdTkAHAEyqD-gLuGbCI8UEiRA1&authKey=wJQ7hIhE9p%2FQDdwXXPjwolJnDMyBoIU%2FtVbTLbNFIvzIWoA7LZfVmSNccWx15jwG&noverify=0&group_code=574737577

Jmeter实现Dubbo接口测试_第12张图片

 

 

你可能感兴趣的:(自动化测试,性能测试,自动化测试工具,dubbo,java,前端,数据库,测试用例)