Jmeter性能测试基础实战

来源:互联网 发布:淘宝店怎么找上家 编辑:程序博客网 时间:2024/06/05 17:10

测试需求

测试20个用户访问http://www.51zxw.net/。在负载达到30QPS时的平均响应时间。

QPS: Query Per Second每秒查询率。是一台服务器每秒能够处理的查询次数。在因特网上,作为域名系统服务器的性能经常用每秒查询率来衡量。

测试步骤

添加线程组

线程组主要包含3个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。

  • 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。虚拟用户数=线程数。
  • 准备时长(单位:s):设置的虚拟用户需要多长时间全部启动。如果线程数为20,准备时长为10,那么需要10秒启动20个线程,也就是每秒钟启动2个线程。
  • 循环次数:每个线程发送的请求的次数。如果线程数为20,循环次数为5,那么每个线程发送5次请求,总请求数为20*5=100。如果勾选了“永远”,那么所有线程会一直发送请求,一直到选择停止运行脚本。

添加HTTP请求

一个HTTP请求有很多配置参数,下面将详细介绍:
  • 名称:本属性用于标识一个取样器,建议使用一个有意义的名称。
  • 注释:对于测试没有任何用户,仅用户记录用户可读的注释信息。
  • 服务器名称或IP:HTTP请求发送的目标服务器名称或者IP地址。
  • 端口号:目标服务器的端口号,默认值为80。
  • Timeouts(milliseconds):设置请求和响应的超时时间。
  • 协议:向目标服务器发送HTTP请求时的协议,可以是http或者https,默认值为http。
  • 方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT,、OPTIONS、TRACE、DELETE等
  • Content encoding:内容的编码方式,默认值为iso8859。
  • 路径:目标URL路径(不包括服务器地址和端口号)。
  • 自动重定向:如果选中该选项,当发送HTTP请求后得到的响应时302/301时,Jmeter自动重定向到新页面。
  • Use Keep Alive:当该选项被选中时,Jmeter和目标服务器之间使用keep-alive方式(又称持久连接,连接重用)进行HTTP通信,默认选中。
  • Use multipart/from-data for POST:当发送HTTP POST请求时,使用Use multipart/from-data方法发送,默认不选中。
  • 同请求一起发送参数:在请求中发送URL参数,对于带参数的URL,Jmeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中,表中每一行是一个参数值对(对应RUL中的名称1=值1)。
  • 同请求一起发送文件:在请求中发送文件,通常HTTP文件上传行为可以通过这种方式模拟。
  • 从HTML文件获取所有内含的资源:当该选项被选中时,Jmeter在发出HTTP请求并获得响应的HTML文件内容后,还对该HTML进行分析并获取HTML中包含的所有资源(图片、flash等),默认不选中。如果用户只希望获取页面中的特定资源,可以在下方的Embedded URLs must match文本框中填入需要下载的特定资源表达式,这样,只有能匹配指定正则表达式的URL指向资源会被下载。
  • 用作监视器:此取样器被当成监视器,在Monitor Results Listener中可以直接看到基于该取样器的图形化统计信息。默认为不选中。
  • Save response as MD5 hasg?:选中该项,在执行时仅记录服务器响应数据的MD5值,而不记录完整的响应数据。在需要进行数据量非常大的测试时,建议选中该项以减少取样器记录响应数据的开销。

设置QPS限制

Jmeter提供了一个非常有用的定时器,称为Constant Throughput Timer(常数吞吐量定时器),该定时器可以方便地控制给定的取样器发送请求的吞吐量。
Constant Throughput Timer的主要属性介绍:
Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,实际填的数值为:60*QPS。
其次Calculate Throughput based on:有5个选项,分别是:
This thread only: 控制每个线程的吞吐量,选择这种模式时,总的吞吐量设置的target Throughput*该线程数量。
All active threads:设置的target throughput将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间再次运行。活跃线程指同一时刻同时运行的线程。
All active thread(shared):与all active threads的选项基本相同,唯一的区别是:每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间再次运行。
All active threads in current thread group:设置的target throughput将分配在当前线程组的每一个活跃线程上,当测试计划中只有一个线程组时,该选项和all active threads选项的效果完全相同。
All active threads in current thread group(shared):与all active threads in current thread group基本相同,唯一的区别是:每个活跃线程都会在所有活跃线程的上一次运行结束后等待合理的时间后再次运行。



添加监视器

脚本的主要部分设置完成后,需要通过某种方式获得性能测试中的测试结果。在本例中,我们关心的是请求的响应时间。
Jmeter中使用监听器元件手机取样器记录的数据并以可视化的方式来呈现。Jmeter有各种不同的监听器类型,我们可以添加聚合报告或者查看结果树来查看更为直观的测试结果。


运行脚本

保存测试脚本后,可以运行脚本。





聚合报告分析


TermDefinitionLabel每个Jmeter的element(例如HTTP Request)都有一个Name属性,
这里显示的就是Name属性的值。
#Samples表示你这次测试中一共发出了多少个请求,
如果模拟10个用户,每个用户迭代10次,name这里显示100。
Average平均响应时间--默认情况下是单个Request的平均响应时间,
当使用了Transaction Controller时,也可以以Transaction为单位显示平均响应时间。
Median中位数,也就是50%用户的响应时间。90%Line90%用户响应时间Min最小响应时间。Max最大响应时间。Error%本次测试中出现错误的请求的数量/请求的总数。Throughput吞吐量--默认情况下表示没密保完成的请求数(Request per Second),
当使用了Transaction Controller时,也可以表示类似LoadRunner的Transaction per Second数。
KB/sec每秒从服务器端接收到的数据量,
相当于LoadRunner的Throughput/Sec。

响应时间单位:毫秒


原创粉丝点击