• Jmeter的基本使用


    一、Jmeter下载与安装

      1、地址:http://jmeter.apache.org/

        

      2、配置环境变量

        ① jmeter是在jdk环境下运行,首先安装jdk,配置Java环境变量

        ② 第一步:在系统变量框,点击“新建”,建立一个变量:JMETER_HOME,值为解压的jmeter安装路径

          

        ③ 第二步:配置classpath变量,若没有则新建classpath,有则编辑

         变量值固定为:%JMETER_HOME%libextApacheJMeter_core.jar;%JMETER_HOME%libjorphan.jar;%JMETER_HOME%lib/logkit-2.0.jar;

          

        ④ 第三步:验证是否配置正确。首先进到jmeter安装路径,找到bin文件夹,点击进去,找到jmeter.bat,双击打开

      3、注意点

        1)解压之后压缩包叫apache-jmeter-4.0.zip,如是src.zip后缀的都不对,打开之后会报错不可用,因为里面缺少我们下一步将要配置的环境变量.jar文件

        2)对应的jdk版本不可太低,一般jmeter3.0的对应jdk1.7,jmeter4.0对应jdk1.8以上,否者启用jmeter也会报错

        3)一定要确保环境变量配置正确(包括jdk的与jmeter的环境变量配置)

    二、Jmeter脚本生成方式

      1、手动编写

      2、Jmeter自带HTTP代理服务器录制

        第一步:右键点击“测试计划”,添加“HTTP代理服务器“。注意点:端口号:要填写这台电脑不被占用的端口号,可以在电脑cmd上面,输入netstat –an查看,哪些端口已被占用

                      

         第二步:打开浏览器的Internet选项->连接->局域网设置->勾选LAN。地址:设置为Jmeter所在的电脑IP,端口号要与STEP1设置的一致

            

        第三步:配置排除模式、避免录制无用脚本

            ① 手动添加排除模式:输入格式为: .*.js.*| .*.css.*| .*.png.*| .*.gif.*

              

             ②  点击Add suggested Excludes按钮、使用建议的排除模式

              

         第四步:启动HTTP代理服务器,点击启动即可

         第五步:打开任何浏览器,输入要访问的网址,即可录制脚本

         第六步:录制结束。录制结束后应该关闭Jmeter中的HTTP代理服务器,并且取消Internet选项中的代理服务器的勾选,避免影响正常浏览网页

            

         第七步:运行脚本。新建线程组,将HTTP代理服务器下面所有录制的HTTP请求全部移动至线程组下,选择合适的监听器,运行脚本

      3、Badboy录制

       1)Badboy概念:基于IE内核的,用于web自动化测试的工具,我们借助他用来生成jmeter的脚本

       2)优缺点:优点:录制简单、生成的脚本比较简洁;缺点:仅适用于B/S架构的产品录制、IE内核版本很低,所以可能会因为兼容性的问题导致无法录制

       3)步骤:

          第一步:输入URL开始录制

          

          第二步:录制结束后点击暂停

          

           第三步:导出jmeter格式:File-export to Jmeter

           第四步:用Jmeter打开即可

      4、三种方式的比较

        

     三、测试案例实操

       1、添加本次测试计划 (右键-->添加-->线程(用户)-->线程组)

         

        2、添加协议及相关配置信息

        

        ① get请求

        

        ② POST请求。注意点:pwuser=zhangsan&pwpwd=123456&hideid=0&cktime=31536000这种类型的数据可以先复制,然后点击剪贴板添加

        

      3、添加断言、校验返回结果

        

      4、为线程添加监听器

        

    四、HTTP Cookie管理器

      1、手动添加cookie

        第一步:在浏览器中获取已登录用户的cookie值

         

         第二步:添加HTTP Cookie管理器

        

          ① 每次反复清除Cookies?:选择后,则每次线程组运行时,都会清除 cookie。(若是手动添加的cookie,则不会被清除)

          ② Implementation:履行的协议。

          ③ Cookie Policy:Cookie的管理策略

        第三步:运行接口。不需要先登录、也可直接运行后面的接口

        

       2、自动生成cookie

        1)无需设置cookie的值

          

        2)需要按照流程设置http请求。登录成功后才能生成cookie,才能执行后面的请求

           

        3)调整登录的位置,则报错

          

     五、Jmeter-参数化

      1、Jmeter中参数调用的方式均为${ParamName}

      2、用户参数

        1)路径:前置处理器-用户参数( User Parameters )

        2)将设置后的变量名称可以用于用户登陆等,可以从这里面随机取值

           

         3)注意:引用的参数名跟用户定义变量设置的名称必须保持一致

      3、用户定义的变量

        1)路径:配置元件-用户定义的变量( User Defined Variables )

        2)相当于更改变量名称

           

         3)批量添加的方法

          ① 第一步:利用text做个表

              

          ② 第二步:将表中的所有内容复制到剪切板中(全选+复制)

          ③ 第三步:在“用户定义的变量”中选择“Add frome Clipboard”

            

       4、函数助手

        1)__RandomString:随机获取字符串。应用场景如下:

          ① 进行多个账号注册,注册信息要求手机号mobilephone不能重复

          ② 手机号前3位号段固定,那就对手机号后8位进行随机

            

           ③ 拷贝生成的函数字符串,粘贴进行参数引用

            

        2)_Random:输入最小值、最大值,随机获取数字。闭区间,[]

          

          通过设置存储结果的变量名称,在后面使用该变量,调用这个随机数的值

          

        3)__jexl3:${__jexl3(表达式,变量名)}。执行通用JEXL表达式,并返回执行结果——True或者False

          ① ${__jexl3(5>4,num)}

          ② 与随机数配合使用:${__jexl3(${__Random(1,10,rand)}>18,)}

          ③ 使用&&或者and、表示与:${__jexl3(${rand}>4 && ${rand}<9,)}  随机数大于4,小于9

          ④ 使用||或者or、表示或

        4)__RandomFromMultipleVars:${__RandomFromMultipleVars(变量名1|变量名2|...,变量名)}。在一定的取值范围内随机取数

          ① 实现步骤:

            第一步:自定义一组变量,并对变量进行赋值

              

            第二步:利用函数助手用自定义的变量进行填充

              

            第三步:在需要的http中加入随机变量

              

          ② 注意点1:必须使用变量名,不能使用具体的值,否则不能实现其功能。${__RandomFromMultipleVars(WNCD032|WNCD044|WNCD201,name)}

            

          ③ 注意点2:变量名之间只能使用管道符"|",不能使用逗号等其他分隔符,否则不能实现其功能

            

       5、CSV数据文件设置:该组件可以用来读取CSV数据文件,然后通过参数调用的方式提供给作用域内的脚本使用

           

        1)Filename:需要传入文件的完整路径。我的文件位于D盘目录下,文件名为users.txt。

        2)File encoding:参数文件的编码格式。一般选择UTF-8

        3)Variable Names:对应参数文件中每列的变量名,也是你要引用到请求中的参数变量名。这里第一列是手机号、第二列是昵称。变量名可以自定义。

        4)igonre first line(only used if Variable Names is not empty):当 CSV 文件中首行设置了变量名时,该项设为 true,此时每次请求读取文件时会自动忽略首行,直接读取第二行的数据。若首行未设置,则选择False

        5)Delimiter:文件中的分隔符,默认英文的逗号分隔。所以注意txt文档中每行多个参数用英文逗号分隔

        6)Recycle on EOF: 设置为True后,允许重头循环取值;为False,当读取文件到结尾时,停止读取文件

        7)Stop Thread EOF: 当Recycle on EOF为false并且Stop Thread EOF 为true,则读完csv文件中的记录后,停止运行,线程数及执行次数无效。

        8)Sharing Mode:共享模式。All threads:所有线程,所有线程循环取值,线程1取第一行,线程2取下一行;Current thread group:当前线程组,各个线程组分别循环取值;Current thread:当前线程,该测试计划内的所有线程都取第一行

    六、正则表达式提取器

      1、可以用来提取接口响应里的信息,给予后续接口传参用

        

      2、Apply to:应用范围(一般就选择默认的Main sample only),就算有重定向,一般也是提取最终那个请求的接口

      3、要检查的响应字段:即样本数据源

        1)主体:接口响应主体内容,一般要提取普通http响应结果的数据,都勾选这个

        2)信息头:响应头的所有内容

        3)Request Headers:请求头的所有内容

        4)url:是对sample的url进行匹配,也就是查看结果树里请求内容的第一行url,不包含data里的请求参数(即只能匹配protocol(协议)+host+path+querystring,如:https://www.baidu.com/index.php?tn=monline_3_dg)

        5)响应代码:http响应代码,如101,200,302,404,501等

        6)响应信息:http响应代码对应的响应信息,例如:OK, Found(HTTP/1.1 200 Ok;HTTP/1.1 302 Found)

      4、引用名称:其他地方引用时的变量名称,名称只能是一个,引用方法:${变量名}

      5、正则表达式:通用语法:左边界(.*?)右边界,左右边界就是为了能准确定位到想匹配的内容

      6、模板:对应正则表达式提取器类型,样式为:$n$。XXX(d+),XX(.*?)XX。若正则表达式查找到多个值,序号表示出来哪一个值

        1)$0$。为整个表达式匹配到的内容,包括小括号内跟小括号外的内容

        2)$1$。若模板为:$1$,则对应正则表达式中的第一个(.*?)所匹配的内容

        3)$2$。对应正则表达式中的第二个(.*?)所匹配的内容

        4)$1$$2$。把2个(.*?)所匹配的内容拼接起来

      7、匹配数字:正则表达式匹配数据的最终结果可以看做一个数组,匹配数字即可看做是数组的第几个元素

        1)0:随机返回匹配的数据

        2)1:返回匹配结果数组的第一个元素

        3)负数:表示返回全部元素,并且同时会返回一个元素总数的变量token_matchNr

        4)在引用时:通过${变量名_1}的方式来取第1个匹配的内容,${变量名_2}来取第2个匹配的内容

          

       8、缺省值:匹配失败时的默认值,通常用于后续的逻辑判断,建议使用一些特殊含义的,比如0,NULL,ERROR等

     七、逻辑控制器(如果(if)控制器)

      1、作用:根据给定表达式的值决定是否执行该节点下的子节点

      2、用法一:勾选“interpret condition as variable expression”

        1)这时expression中不能直接填写条件表达式,需要借助函数将条件表达式计算为true/false,可以借助的函数有_jexl3和_groovy

          a.借助函数助手,生成表达式。有时会出现,去掉即可

            

           b.把生成的表达式,写在if控制器中

            

         2)直接填写5==5或者${rand}>0,无法识别,不能运行关联请求

          

      3、用法二:不勾选“interpret condition as variable expression”。直接输入判断表达式即可,判断表达式为真时,执行if控制器下的请求

        1)如“1!=2”,则一定会执行下面的http请求

          

        2)填写判断表达式${rand}>0

          

    八、输出HTML报告

      1、环境要求

        1)jmeter3.0版本之后开始支持动态生成测试报表

        2)jdk版本1.7以上

        3)jmx脚本文件

      2、直接生成HTML报告。在脚本文件路径下,执行cmd命令:jmeter -n -t jmx文件 -l result.jtl -e -o D:ResultReport

         

        1)● -n: 非GUI模式执行JMeter

        2)● -t: 执行测试文件所在的位置

        3)● -l: 指定生成测试结果的保存文件,jtl文件格式

        4)● -e: 测试结束后,生成测试报告

        5)● -o: 指定测试报告的存放位置

        6)注意:结尾的 ResultReport 是自己手动创建的报告文件夹。每次启动命令之前,文件夹内容必须和 jtl 文件一起清空

        7)每次运行脚本文件时,必须把报告文件夹下的内容和.jtl文件全部删除,否则会出现如下截图中的错误

          

          解决办法:写一个bat,每次执行bat都自动去清空之前的报告和jtl文件

            ① 删除文件:del resylt.jtl  ② 删除文件夹:rd 文件夹名称  ③  重建文件夹:md 文件夹路径

            

      3、使用之前的测试结果,生成测试报告

        1)先生成测试结果:jmeter -n -t jmx文件 -l result.jtl

        2)再生成报告:jmeter -g result.jtl -o D:ResultReport

      4、报告详解:https://www.jianshu.com/p/4f32918d66bb

  • 相关阅读:
    Struts2的常见的配置文件介绍
    第一个Struts2实例之hello world!
    Highcharts实现图形报表(我主要实现javaweb开发的图形报表)
    基于jsp+servlet图书管理系统之后台用户信息删除操作
    基于jsp+servlet图书管理系统之后台用户信息修改操作
    基于jsp+servlet图书管理系统之后台用户信息查询操作
    基于jsp+servlet图书管理系统之后台用户信息插入操作
    初识Jsp,JavaBean,Servlet以及一个简单mvc模式的登录界面
    Java中IO流,输入输出流概述与总结
    【转】Android 创建AVD各参数详解
  • 原文地址:https://www.cnblogs.com/zhufeng123/p/14394353.html
Copyright © 2020-2023  润新知