• Jmeter使用文档(windows)


    1. 安装jdk并配置环境变量

    以1.8为例:

    (1)安装jdk1.8;

    (2)在系统变量里点击新建,变量名填写JAVA_HOME,变量值填写JDK的安装路径“C:Program FilesJavajdk1.8.0_40”,环境变量位置如图1

    图1 

    (3)在系统变量里点击新建变量名填写CLASSPATH,变量值填写“.;%JAVA_HOME%lib;%JAVA_HOME%lib ools.jar”。注意不要忘记前面的点和中间的分号。

    (4)在系统变量里找到Path变量,这是系统自带的,不用新建。双击Path,由于原来的变量值已经存在,故应在已有的变量后追加上“;%JAVA_HOME%in;%JAVA_HOME%jrein”。注意前面的分号。

    (5) 在系统的CMD命令提示符下输入"java -version",能看到相应帮助信息,说明jdk安装成功。

    2. 安装jmeter并配置环境变量

    (1) 安装Jmeter,解压“apache-jmeter-2.11.rar”到c盘根目录下:“C:apache-jmeter-2.11”。

    (2)在用户变量中,新建变量名“JMETER_HOME”,变量值为:“C:apache-jmeter-2.11;”。

    (3)修改“CLASSPATH”,添加: “;%JMETER_HOME%/lib/ext/ApacheJMeter_core.jar;%JMETER_HOME%/lib/logkit-2.0.jar;”若”CLASSPATH”之前为空,则添加“.;%JMETER_HOME%/lib/ext/ApacheJMeter_core.jar;%JMETER_HOME%/lib/logkit-2.0.jar;”

    3. 运行jmeter

    直接打开 C:apache-jmeter-2.11/bin/jmeter.bat 即可

    4. 测试步骤

     (1)添加线程组,如图2

    图2

    添加完页面如图3:

    图3

    图中数据含义:每1秒钟跑10个线程,循环10次;即每隔1/10秒钟发送一个请求,共请求100次。

    (2)添加HTTP请求

    图4

    将测试内容正确填写后:

    (3)添加头信息管理器,如图6、图7

    图6

    图7

    (4)添加监听器

    图8

    5.结果分析

    (1)聚合报告:

    注:这里的Error是指超过30秒的请求数。

    图9

    图10

    聚合报告可通过Save Table Data按钮导出为Excel表格:

    图11

    (2)查看结果树:

    注:运行过程中,“查看结果树”显示对号的返回结果也可能是错误的,统计结果时需要注意;为确保运行结果的正确性,同时需要关注“请求”数据和“响应数据”是否符合预期值。

    (3)用表格查看结果:

    图14

        参数含义:

        Sample:每个请求的序号
        Start Time:每个请求开始时间
        Thread Name:每个线程的名称
        Label:Http请求名称
        Sample Time:每个请求所花时间,单位毫秒
        Status:请求状态,如果为勾则表示成功,如果为叉表示失败。
        Bytes:请求的字节数

    注:

    开测按钮为绿色的右向箭头

    在每组开测前,需点击清除按钮将上一组的测试数据清空。

    图15

    6、随机参数

    为避免使用固定参数造成的测试误差,需要将用到的参数随机读取,步骤如下:

    右键添加--配置元件--CVS data set config:

    图16

    然后点击添加的cvs data,做如下配置:

    图17

    filename 为params.csv文件存放的位置,params.csv可先建一个文本文件,然后更改后缀名即可,里面的数据为一行一个“empId,socialId,sn”,中间用英文逗号隔开,各值不需要加引号,如图18:

    图18

    http请求的参数设置处改为如下设置:

    图19

    此时清空上次测试数据,点击“启动”按钮后参数即为params.csv文件里的随机读取值,可从“查看结果树”的“请求”里查看每次发送数据是否是随机的。

    7.录制脚本

        7.1  通过JMeter自身设置录制脚本

    1、创建一个http代理服务器(右键点击“工作台”--->“添加”--->“非测试元件”--->“http代理服务器”)

     

    图20

    作如下设置:

     

    图21

    2、设置IE浏览器

    “internet选项”--->“连接”--->“局域网设置”

     

    图22

      

    图23

    3、点击jmeter上的“启动”按钮,打开浏览器输入需要录制web项目地址,jmeter会自动记录IE所访问的一系列页面,访问结束后点击“停止”结束录制,脚本自动出现在jmeter项目下。

     

    图24

       7.2过badboy录制脚本

          1、安装并打开人badboy工具,点击工栏目上的红色圆形按钮,在地址栏目中输入被测试项目的地址。

    开始访问地址,badboy会记录访问过程,形成脚本。

    2、录制完成后,点击工具栏旁边黑色按钮,结束录制;选择“文件”-”Export to Jmeter” 保存文件。

    3、打开Jmeter工具,选择“文件”-->“打开”选择刚才保存的文件(.jmx类型),将文件导入进来就可以执行了。

    8、jmeter编写自定义Java测试代码进行并发测试

           举一个简单的Java自定义测试代码例子,使用Java编译器编写测试代码,实现功能为:在测试前输入任意一个字符串,判断该字符串的长度是否大于5,如果大于则测试结果成功,否则测试结果失败,然后再放到Jmeter中模拟10个用户测试,同时运行这段代码,具体实现如下:
    1)打开Java编译器,新建一个项目"TestLength",然后新建包"com.jmeter".

    2) 从Jmeter的安装目录lib/ext中拷贝两个文件"ApacheJMeter_core.jar"和"ApacheJMeter_java.jar"到"TestLength"的项目中,然后引入这两个JAR文件.

    3) 在"com.jmeter"包中新建类,名字叫"TestLength",不过这个类要继承"AbstractJavaSamplerClient"类,如果项目引入步骤二中的两个文件,就可以找到"AbstractJavaSamplerClient"类了.

    4) "TestLength"类在继承"AbstractJavaSamplerClient"类的同时也会继承四个方法,分别是"getDefaultParameters","setupTest","runTest"和"teardownTest"方法.

    u getDefaultParameters方法主要用于设置传入的参数;

    u setupTest方法为初始化方法,用于初始化性能测试时的每个线程.

    u runTest方法为性能测试时的线程运行体;

    u teardownTest方法为测试结束方法,用于结束性能测试中的每个线程.

    5) 具体实现代码如下.

    package com.jmeter;

    import org.apache.jmeter.config.Arguments;

    import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;

    import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;

    import org.apache.jmeter.samplers.SampleResult;

    import org.apache.log.Logger;

    /**

     * Created with IntelliJ IDEA.

     * User: tancp

     * Date: 15-11-10

     * Time: 上午11:12

     * To change this template use File | Settings | File Templates.

     */

    public class TestLength03  extends AbstractJavaSamplerClient {

        //输出到Jmeter控制台的日志类

        private Logger log=getLogger();

        //运行结果

        private SampleResult results;

        //Jmeter控制台输入的参数

        private String testStr;

        //设置传入的参数,可设多个,已设置的参数显示在jmeter参数列表中

        public Arguments getDefaultParameters(){

            log.info("execute getDefaultParameters!!!!!!");

            Arguments params=new Arguments();

            //定义一个参数,显示到Jmeter参数列表中,第一个参数为显示名,第二个参数为默认值

            params.addArgument("testStr","");

            return params;

        }

        //初始化方法,每个线程执行一次,在测试方法运行前执行

        public void setupTest(JavaSamplerContext arg0){

            log.info("Execute setupTest......");

            results=new SampleResult();

            testStr=arg0.getParameter("testStr","");      //初始化

            if(testStr!=null&&testStr.length()>0){

                results.setSamplerData(testStr);

            }

        }

        //测试执行循环体

        public SampleResult runTest(JavaSamplerContext arg0){

            log.info("execute runTest$$$$$$");

            //用于设置运行结果的成功或失败,如果是"false"则表示结果失败,否则则表示成功

            if(testStr.length()<5){

                log.info("fail......");

                results.setSuccessful(false);

            }else{

                log.info("Success@@@@@@");

                results.setSuccessful(true);

            }

            return results;

        }

        //结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行

        public void teardownTest(JavaSamplerContext arg0){

            log.info("execute teardownTest######");

        }

    }

    6) 把上面的例子打包,然后把生成的"TestLength.jar"文件拷贝到Jmeter的安装目录lib/ext下.

    7) 打开binjmeter.bat运行Jmeter,进入Apache Jmeter控制台。

         添加一个线程组。

         然后在该线程组下面添加一个Java请求(在Sampler中)

    图25

                在Java请求的类名称中选择咱们刚创建的类"com.jmeter.TestLength",在下面参数列表的"testStr"后面输入要测试的字符串,然后添加一个监听器(聚合报告)。

    图25

                设置一下模拟的用户数就可以测试了.如果测试不成功,Jmeter会在它自己输出框中抛出这个字符串.

    8)查看日志(包含jmeter自身日志和自定义java程序的日志),日志位置如图:

     

    图26

    日志信息如图:

    图27

    注:此日志文件每次关闭jmeter时都会格式化

    术语含义:

    1、线程组:测试里每个任务都要线程去处理,所有我们后来的任务必须在线程组下面创建。可以在“Test Plan(鼠标右击) -> 添加  ->Threads(Users) -> 线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。
    2、取样器(Sampler):可以认为所有的测试任务都由取样器承担,有很多种,如:HTTP请求。
    3、断言:对取样器返回的请求结果给出判断是否正确。
    4、monitor:它的功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等

    样本数目:总共发送到服务器的请求数。
    最新样本:代表时间的数字,是服务器响应最后一个请求的时间。
    吞吐量(throughput  ):服务器每分钟处理的请求数。
    平均值:总运行时间除以发送到服务器的请求数。
    中间值:时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。
    偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。

    样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数。
    平均:每个线程请求的平均时间
    最新样本:表示服务器响应最后一个请求的时间
    偏离:服务器响应时间变化、离散程度测量值的大小,换句话说,就是数据的分布。

  • 相关阅读:
    Processing编程【2】
    哈工大锐捷网络处理问题
    processing编程【1】
    verilog入门知识【2】
    数字电路与逻辑设计知识清单【一】
    四位密码锁*电子密码锁的设计
    verilog入门知识【1】
    【Android】入门的一些知识。
    Andriod 入门
    关于Hibernate和Strtus2的xml提示问题
  • 原文地址:https://www.cnblogs.com/asderx/p/6738884.html
Copyright © 2020-2023  润新知