码迷,mamicode.com
首页 > 其他好文 > 详细

jmeter初级

时间:2016-06-17 19:36:14      阅读:426      评论:0      收藏:0      [点我收藏+]

标签:

插件:几组各种类型的线程组,可以配置线程的加入方式和离开方式。新增了几组监听器,用于查看测试结果
          http://www.jmeter-plugins.org/,将JMeterPlugins-Standard.jar放到{Jmeter_home}\lib\ext目录,

Jmeter每个任务都由测试计划组成,每个测试计划又包含了各种elements,通过不同的elements之间的组合来完成测试计划。一般常用的elements如下:

     thread group:包含一组线程,每个线程独立地执行测试计划。

     sampler:采样器,有多种不同的sample实现,用来发起各种请求,如http请求,java请求等等。

     listener:有多种不同的实现,主要用于统计测试接话运行中的数据并展示,如可以进行图形化方式展示响应时间。图形结果,查看结果树,聚合报告是比较基础的监听器。

     assertions:断言,有多种不同实现,可以测试sample请求后返回的内容是否符合期望值。例如可以判断html返回的内容是否符合期望。

HTTP请求

    1.建立线程组,按需配置线程组的属性

    2.在线程组上添加采样器 http请求,按需配置服务器,端口号,请求路径等各属性

    3.按需添加各个监听器用于查看测试的结果,如图形结果,查看结果树,聚合报告。

    4.可在http请求上添加断言来测试返回结果是否正确

一个简单的http请求的测试建立完成以后的样子

技术分享

技术分享

然后点击运行就可以在各个监听器上看到测试的结果了

JAVA请求

     和http请求类似,只是添加采样器的时候选择java请求。

      在类名称一栏里选择的测试用例需要自己手动写和添加

新建的用例类需要继承AbstractJavaSamplerClient,方法如下

Arguments

getDefaultParameters() 用于获取界面的参数

SampleResult

runTest(JavaSamplerContext context) 类似于LR的Action,result.sampleStart()一个事务开始,result.sampleEnd()一个事务 结束

void

setupTest(JavaSamplerContext context) 初始化方法,类似于LR的init和Junit中的setUp()

void

teardownTest(JavaSamplerContext context) 类似于LR的end和Junit中的tearDown()

执行的先后顺序为:
getDefaultParameters() --> setupTest(JavaSamplerContext context) --> runTest(JavaSamplerContext context) --> teardownTest(JavaSamplerContext context)
porm文件需要添加依赖 
        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_java</artifactId>
            <version>3.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.jmeter</groupId>
            <artifactId>ApacheJMeter_core</artifactId>
            <version>3.0</version>
        </dependency>
如下为一个简单的用例:
public class JmeterFacadeTest extends AbstractJavaSamplerClient {
    private static String label_name = "FacadeTest";// 定义label名称,显示在jmeter的结果窗口
 
    private static final ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:applicationContext-test.xml"); 
 
    private AuthRemoteServiceFacade authRemoteServiceFacade = null;
 
    @Override
    public void setupTest(JavaSamplerContext arg0) {
        System.out.println("测试用例执行开始...");
        authRemoteServiceFacade = (AuthRemoteServiceFacade) context.getBean("authRemoteServiceFacade");
    }
 
    @Override
    public Arguments getDefaultParameters() {
        // 参数定义,显示在前台,也可以不定义
        Arguments params = new Arguments();
        params.addArgument("accountNo", "02223");
        return params;
    }
 
    public SampleResult runTest(JavaSamplerContext arg0) {
        boolean success = true;
        SampleResult sr = new SampleResult();
        sr.setSampleLabel(label_name);
        sr.sampleStart();// 用来统计执行时间--start--
        try {
            String accountNo = arg0.getParameter("accountNo");
            AccountRO ro = authRemoteServiceFacade.getAccount(accountNo);
            sr.setResponseMessage(JSON.json(ro));
            sr.setResponseCode("1000");
        } catch (Exception e) {
            success = false;
        } finally {
            sr.sampleEnd();// 用来统计执行时间--end--
            sr.setSuccessful(success);
        }
        return sr;
    }
 
    @Override
    public void teardownTest(JavaSamplerContext arg0) {
        System.out.println("测试用例执行结束...");
    }
写完以后将工程打成jar包,放到{Jmeter_home}\lib\ext目录,并把所有依赖的jar包放到{Jmeter_home}\lib下,这样就能在类名称这看到自己所选的用例了。
技术分享
 技术分享

 

分布式测试

      1、Jmeter分布式测试时,选择其中一台作为调度机(master),其它机器做为执行机(slave)。

  2、执行时,master会把脚本发送到每台slave上,slave 拿到脚本后就开始执行,slave执行时不需要启动GUI,我理解它应该是通过命令行模式执行的。

  3、执行完成后,slave会把结果回传给master,master会收集所有slave的信息并汇总。

 

slave机上需要安装Jmeter,且如果是java请求的话也需要把测试用例的jar包放到{Jmeter_home}\lib\ext目录,并把所有依赖的jar包放到{Jmeter_home}\lib下

如果slave机系统是windows系统,则启动bin目录下的:jmeter-server.bat。

如果是linux系统,则通过jmeter-server命令启动./jmeter-server -Djava.rmi.server.hostname=xxx.xxx.xxx.xxx(就是slave机的ip)1.如果报Permission denied则通过chmod 777修改权限。

修改master机bin目录下的jmeter.properties文件,修改如下配置:remote_hosts=xxx.xxx.xxx.xxx:1099技术分享这里的ip就是所有slave机的ip,端口默认为1099。

这样就能在master机运行,远程启动下看到所有配置的slave机技术分享,可以分别启动,也可以通过
远程全部启动技术分享启动所有的slave机来执行测试,并把结果返回。
 
以上就是jmeter的基本操作内容。
个人感觉压力测试线程太多会受执行机的性能影响比较大,因此压测要在服务器上,而且最好分布式的压测。

jmeter初级

标签:

原文地址:http://www.cnblogs.com/moveSlowly/p/5594827.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!