【Jmeter】常用配置及使用


一、测试计划

    

 


 

、添加线程组

    

    setUp线程组:执行测试计划时,在普通线程组前执行

    tearDown线程组:执行测试计划时,在普通线程组后执行

    线程组:普通线程组,组与组之间独立运行 

      示例:

        

  

  线程设置

    取样器错误后要执行的动作

      继续:忽略错误,继续执行

      启动下一进程循环: 忽略错误,线程当前循环终止,执行下一个循环。

      停止线程:当前线程停止执行,不影响其他线程正常执行。

      停止测试:整个测试会在所有当前正在执行的线程执行完毕后停止

      立即停止测试:整个测试会立即停止执行,当前正在执行的取样器可能会被中断。

        

 

     线程属性

      线程数:并发测试,每个线程独立完成测试计划;常用与模拟对服务器的并发访问

      Ramp-Up时间:启动所有线程数 所需要的的时间,上一个线程与下一个线程启动间隔时间=Ramp-Up时间/未总线程数  [仅在线程数>1时有效]

            (示例:线程数5 Ramp-Up时间50 第二次线程在第一次线程启动10s后启动 

      循环次数:全部线程结束后的循环次数

        

    Tips:压测qps - 线程数设置30,请求10s,再请求20s,再请求30s,分别看下吞吐量

 

 

     调度器配置

      调度配置:循环次数勾选 永远 时可以通过调度器控制线程执行时间

      持续时间(秒):控制测试执行的持续时间(启动线程后的执行时间),以秒为单位。(循环次数 优先级高于 持续时间)

      启动延迟(秒):控制测试在多久后启动执行(例:30s,则启动测试计划30s后执行此线程,循环次数永远时延迟后启动线程开始计算持续时间),以秒为单位。

        

 


 

、添加参数变量的方法

  说明:调试取样器:线程组- 右键 - 添加 - 取样器 - 调试取样器(常用来查看Jmeter运行前后 的参数值是否为预期数据

 

  1、用户参数:线程组 - 右键 - 添加 - 前置处理器 - 用户参数

      

      运行效果:

      

 

  2、随机变量:线程组 - 右键 - 添加 - 配置元件 - 随机变量

      

      运行结果:

       

 

 

   3、用户定义的变量:线程组 - 右键 - 添加 - 配置元件 - 用户定义的变量 

       

 

   4、CSV 数据文件设置:线程组 - 右键 - 添加 - 配置元件 - CSV 数据文件设置 (从本地文件(格式:.csv  .txt等)读取

       

      运行结果:

      

   

  5、BeanShell 设置变量

//设置变量
vars.put("case_id","case_00001");

 

    执行结果

    

 


 

四、连接数据库

  1、引用jar包

     oracle :引用JDBC驱动jar包;ojdbc14.jar 放到lib/ext下

     mysql :引用mysql驱动jar包; mysql-contentor-java-8.0.18.jar 放到lib/ext下

  2、连接Oracle

  添加 JDBC Connection Configuration(线程组--右键--添加--配置元件--JDBC Connection Configuration)并配置    

Database URL:
    oracle:jdbc:oracle:thin:@IP:端口/名称
    mysql:jdbc:mysql:// 数据库IP:端口/名称

JDBC Driver Class:
    Oracle:oracle.jdbc.driver.OracleDriver
    mysql:com.mysql.jdbc.Driver;

 

 

       

  3、添加JDBC Reques(线程组--右键--添加--取样器--JDBC Request)

      

 

       运行结果

      

 


 

 五、http请求

  1、 http请求默认值 

     用于设置其作用范围内的所有HTTP的默认值,可被设置的内容包括HTTP请求的host、端口(不填写默认为80)、协议等 

        

        

      • 作用范围内,添加任一或多个http请求时可以省略web服务器的配置,获取默认值
      •         
      •  作用范围内,如果其中http请求 有不一样的ip或端口时http请求中的配置值优先获取)
      •  

  2、 HTTP信息头管理器

      用于定制Sampler发出的HTTP请求的请求头的内容。不同的浏览器发出的HTTP请求具有不同的Agent,访问某些有防盗链的页面时需要正确的Refer...这些情况下都需要通过HTTP Header Manager来保证发送的HTTP请求是正确的

      

 

 

       几种常见的信息头

Accept

    作用: 浏览器端可以接受的媒体类型

    例如:  Accept: text/html  代表浏览器可以接受服务器回发的类型为 text/html  也就是我们常说的html文档, 

Accept-Encoding

    作用: 浏览器申明自己接收的编码方法,通常指定压缩方法,是否支持压缩,支持什么压缩方法。例如:Accept-Encoding: zh-CN,zh;q=0.8

Accept-Language

    作用: 浏览器申明自己接收的语言。 

Connection

    例如: Connection: keep-alive   当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接

    例如:  Connection: close  代表一个Request完成后,客户端和服务器之间用于传输HTTP数据的TCP连接会关闭, 当客户端再次发送Request,需要重新建立TCP连接。

Host(发送请求时,该报头域是必需的)

    作用: 请求报头域主要用于指定被请求资源的Internet主机和端口号,它通常从HTTP URL中提取出来的

    例如: 我们在浏览器中输入:http://www.hzau.edu.cn

    浏览器发送的请求消息中,就会包含Host请求报头域,如下:

Host:www.hzau.edu.cn

    此处使用缺省端口号80,若指定了端口号,则变成:Host:指定端口号

Referer

    当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的,
服务器籍此可以获得一些信息用于处理。比如从我主页上链接到一个朋友那里,
他的服务器就能够从HTTP Referer中统计出每天有多少用户点击我主页上的链接访问他的网站。

User-Agent

    作用:告诉HTTP服务器, 客户端使用的操作系统和浏览器的名称和版本.

    我们上网登陆论坛的时候,往往会看到一些欢迎信息,其中列出了你的操作系统的名称和版本,
你所使用的浏览器的名称和版本,这往往让很多人感到很神奇,实际上,
服务器应用程序就是从User-Agent这个请求报头域中获取到这些信息User-Agent请求报头域允许客户端将它的操作系统、浏览器和其它属性告诉服务器。

cookie

    Cookie是用来存储一些用户信息以便让服务器辨别用户身份的(大多数需要登录的网站上面会比较常见),
比如cookie会存储一些用户的用户名和密码,当用户登录后就会在客户端产生一个cookie来存储相关信息,
这样浏览器通过读取cookie的信息去服务器上验证并通过后会判定你是合法用户,从而允许查看相应网页。
当然cookie里面的数据不仅仅是上述范围,还有很多信息可以存储是cookie里面,比如sessionid等。

Cache-Control

    用来指定当前的请求/回复中的,是否使用缓存机制。

Content-Type

    请求体的MIME类型 (用于POST和PUT请求中)

Expect

    表示客户端要求服务器做出特定的行为
View Code

 

 

    3、HTTP Cookie管理器

          用于管理Test Plan运行时的所有Cookie。像Web浏览器一样存储和发送Cookie。如果您有HTTP请求并且响应包含cookie,则Cookie管理器会自动存储该cookie,并将其用于将来对该特定网站的所有请求。

       JMeter检查收到的cookie是否对URL有效,这意味着不存储跨域cookie。

          如果您有行为错误或希望使用跨域cookie,请定义JMeter属性“ CookieManager.check.cookies = false ”

          如果收到的Cookie可以存储为JMeter线程变量。要将cookie保存为变量,请定义属性“ CookieManager.save.cookies = true ”

          cookie名称在存储之前以“ COOKIE_ ” 为前缀 要恢复原始行为;(这可以避免意外损坏局部变量),请定义属性“ CookieManager.name.prefix = ”(一个或多个空格)。eg:引用变量时格式:$ {COOKIE_TEST}

          您可以手动将Cookie添加到Cookie管理器;cookie将由所有JMeter线程共享

          默认情况下,将忽略 具有空值的Cookie 。这可以通过设置JMeter属性来更改:CookieManager.delete_null_cookies = false。(这也适用于手动定义的cookie - 任何此类cookie将在更新时从显示中删除

          cookie名称必须是唯一的 - 如果第二个cookie使用相同的名称定义,则它将替换第一个cookie

         1、手动添加cookie到Cookie管理器

          

          运行结果

          

 

 

         2、cookie设置为Jmeter线程变量

          定义属性“ CookieManager.save.cookies = true ”

          

  

         

    4、固定定时器  

      设定每个线程请求之前的等待时间(固定定时器的延时不会计入当前sampler 的响应时间里,但是会计入事务控制器的时间(相当于模拟用户的思考时间))

      

 

 

     5、BeanShell 后置处理程序

      编写代码时注意每行代码以分号结尾

FileWriter fstream=new FileWriter("D:\\testdata\\case.txt",true);
BufferedWriter out=new BufferedWriter(fstream);

out.write("打印数据" + vars.get("name_id"));

out.close();
fstream.close();
源码(保存数据到本地)

 

       

 

 

     6、响应断言

       对某个请求的结果进行判定

··      

 

 

 


 

六、响应中提取信息

  1、正则表达式提取

正则说明:
    . 表示除“\r\n”之外的任意字符
    * 表示匹配前面的子表达式任意次
    + 表示匹配前面的子表达式1次或多次
    ? 表示匹配前面的子表达式0次或1次
    .*:贪婪匹配原则,即匹配到不能匹配为止
    .*?:非贪婪匹配,即在匹配成功的情况下尽可能少的匹配
说明

 

    

 

 

 

  2、边界值提取

    左边界数据尽量唯一,否则会提取到重复数值

 

 

     

 

 

       运行结果

     

 

 

 

  


    

 七、控制器

  1、循环控制器

       控制控制器下内容的循环次数

      

 

      运行结果

      

 

 

 

   2、if控制器

    判断该控制器下的内容是否执行

       

 

 

       运行结果

      

 

 

  3、简单控制器 

    没有逻辑及运行判断校验,可当做分组、分类使用

    

 

 

   4、仅一次控制器

    在一个线程多次循环时,仅一次控制器中的内容只会执行1

    

 

 

   5、ForEach控制器

    

    

 

 

   6、事务控制器

    

 

 

 八 监听器

   1、查看结果树

    

    查看结果树保存到文件  https://www.cnblogs.com/phoenixy/p/16481349.html

 

2、聚合报告

 

    样本:请求的次数,计算公式是线程数*循环次数,如果线程组配置勾选了永远,那么就是你停止测试时实际发送的请求数
    平均值:响应时间的平均用时,单位是毫秒。比如这里的平均响应时间是38毫秒
    中位数:响应时间的中位数,单位是毫秒。
    90%百分位:90%的响应时间小于该数值,单位是毫秒。这里有90%的响应时间小于22毫秒
    95%百分位:含义和90%类似
    99%百分位:含义和90%类似
    最小值:本轮测试最小响应时间,单位是毫秒。
    最大值:本轮测试最大响应时间,单位是毫秒。
    异常%:本轮测试出现异常的请求比例。
    吞吐量:可以理解为QPS,即是我们测试的接口处理请求的能力。比如这里是平均每秒可以处理2.2次请求
    接收KB/Sec:响应数据的接收速率
    发送KB/Sec:请求数据的发送速率

 

1、Lable:Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值;

2、#Samples:表示这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100;【我的是用户有100,只迭代一次,因此也是100】

3、Average:平均响应时间——默认情况下是单个 Request 的平均响应时间,当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间;

4、Median:中位数,也就是 50% 用户的响应时间;

5、90% Line ~ 99% Line:90% ~99%用户的响应时间;

6、Min:最小响应时间;

7、Maximum:最大响应时间;

8、Error%:本次测试中出现的错误率,即 错误的请求的数量/请求的总数;

9、Throughput:吞吐量——默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction ;

10、Received KB/src:每秒从服务器端接收到的数据量;

11、Sent KB/src:每秒从客户端发送的请求的数量。
聚合报告

 

 3、图形结果

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

 

 

 

 


拓展

查看异常原因

  

 

 连接数据库遇到的问题

  1、运行提示:Name for DataSoure must not be empty in JDBC Request

      

 

    解决方法:检查JDBC Connection ConfigurationJDBC Request下的:Variable Name Bound to Pool是否一致

  2、运行提示:Cannot load JDBC driver class 'oracle.jdbc.driver.OracleDriver' 

 

       

 

 

     解决方法:检查或导入jar包( jar包只需要导入一次 )

      

      ojdbc14.jar 或 ojdbc6-1.0.jar

 

 

  3、错误代码解释

"100" : Continue
        "101" : witching Protocols
        "200" : OK
        "201" : Created
        "202" : Accepted
        "203" : Non-Authoritative Information
        "204" : No Content
        "205" : Reset Content
        "206" : Partial Content
        "300" : Multiple Choices
        "301" : Moved Permanently
        "302" : Found
        "303" : See Other
        "304" : Not Modified
        "305" : Use Proxy
        "307" : Temporary Redirect
        HTTP 400 - 请求无效
        HTTP 401.1 - 未授权:登录失败
        HTTP 401.2 - 未授权:服务器配置问题导致登录失败
        HTTP 401.3 - ACL 禁止访问资源
        HTTP 401.4 - 未授权:授权被筛选器拒绝
        HTTP 401.5 - 未授权:ISAPI 或 CGI 授权失败
        HTTP 403 - 禁止访问
        HTTP 403 - 对 Internet 服务管理器 (HTML) 的访问仅限于 Localhost
        HTTP 403.1 禁止访问:禁止可执行访问
        HTTP 403.2 - 禁止访问:禁止读访问
        HTTP 403.3 - 禁止访问:禁止写访问
        HTTP 403.4 - 禁止访问:要求 SSL
        HTTP 403.5 - 禁止访问:要求 SSL 128
        HTTP 403.6 - 禁止访问:IP 地址被拒绝
        HTTP 403.7 - 禁止访问:要求客户证书
        HTTP 403.8 - 禁止访问:禁止站点访问
        HTTP 403.9 - 禁止访问:连接的用户过多
        HTTP 403.10 - 禁止访问:配置无效
        HTTP 403.11 - 禁止访问:密码更改
        HTTP 403.12 - 禁止访问:映射器拒绝访问
        HTTP 403.13 - 禁止访问:客户证书已被吊销
        HTTP 403.15 - 禁止访问:客户访问许可过多
        HTTP 403.16 - 禁止访问:客户证书不可信或者无效
        HTTP 403.17 - 禁止访问:客户证书已经到期或者尚未生效
        HTTP 404.1 - 无法找到 Web 站点
        HTTP 404 - 无法找到文件
        HTTP 405 - 资源被禁止
        HTTP 406 - 无法接受
        HTTP 407 - 要求代理身份验证
        HTTP 410 - 永远不可用
        HTTP 412 - 先决条件失败
        HTTP 414 - 请求 - URI 太长
        HTTP 500 - 内部服务器错误
        HTTP 500.100 - 内部服务器错误 - ASP 错误
        HTTP 500-11 服务器关闭
        HTTP 500-12 应用程序重新启动
        HTTP 500-13 - 服务器太忙
        HTTP 500-14 - 应用程序无效
        HTTP 500-15 - 不允许请求 global.asa
        Error 501 - 未实现
        HTTP 502 - 网关错误

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM