一个简单的性能测试

1.测试目标网站http://www.jianshu.com/

2.测试目的是该网站15QPS负载下的响应时间

执行测试之前,要先建立一个测试计划,而jmeter每次打开后,都会生成一个空的测试计划

添加线程组

一个性能测试是基于测试计划完成,而一个测试计划又是基于线程组完成的。所以一个测试计划必定有一个线程组,在jmeter中,添加线程组非常简单。鼠标右键->添加->Threads->线程组

一个简单的性能测试

下面说说线程组的构成

线程数:vuer的数量,也就是虚拟机用户数。一个线程数代表一个虚拟用户,需要多少虚拟用户就设置多少线程数。

Ramp-Up Period(in seconds):启动时长,所有虚拟用户的总启动时间。假如启动时长是5s,线程数20,也就是每一秒启动4个线程。

循环次数:顾名思义,也就是每个线程发起请求的循环次数。假如10线程,循环次数5,也就是每个线程发起5次请求,总请求=线程数*循环次数 10*5=50。如果勾选永远,线程就会一直不停的发起请求,直到手动停止脚本为止。

本例中,要求测试达到15QPS的响应时间,如果线程数太低,则达不到QPS需要的请求,合理的线程数是达到测试目标的重要依据。合理的循环次数也是非常重要的(压力测试中,1万次请求,就是根据循环次数和线程数来决定的)。另外,调用器可以控制测试开始执行的时间。

添加HTTP请求

添加http请求也非常简单,在添加线程组之后,鼠标右键线程组->添加->Sampler->HTTP请求

一个简单的性能测试

Sample(取样器):主要对服务器发出请求;记录响应数据,响应时间。(通常与Listen搭配使用)

一个简单的性能测试

下面说一下HTTP的构成

名称:每一个sample都有一个名称属性,建议取一个与测试相关的名字。

注释:跟编程里面的注释用法一致,对测试没有任何作用,仅用户标识的解释。

服务器名称或IP:HTTP请求发送的目标服务器名称或IP地址。

端口号:目标服务器或者IP的端口,默认80。

协议:向目标服务器发起请求时的协议,通常是HTTP和HTTPS,默认是HTTP。

方法:向目标服务器发起请求时的方法,常用有GET、POST、HEAD。

Content encoding:内容的编码方式,默认值为iso8859。

路径:目标URL路径(不包括服务器地址和端口)

自动重定向:选中该选项时,当发送HTTP请求后得到的响应是302/301时,JMeter 自动重定向到新的页面,默认勾选跟随重定向。

Use keep Alive: 当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中。keep-alive,保持长连接,目的减少连接的开销

同请求一起发送参数: 在请求中发送URL参数,对于带参数的URL ,jmeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数添加到本表,参数以键值对的形式存在。

同请求一起发送文件:在请求中发送文件,HTTP需要文件上传时可以通过这种方式模拟。

用作监视器:此取样器被当成监视器,在Monitor Results Listener 中可以直接看到基于该取样器的图形化统计信息。默认为不选中。

设置QPS限制

本次性能测试的需求中提到测试的目的是“了解简书的首页在负载达到15 QPS时的响应时间”,因此需要控制向博客首页发送请求的负载为15QPS。

方式一:逐步调整测试计划中线程数,并通过添加定时器计算响应时间,使HTTP发出的请求的数量达到15QPS。但是这种方法有个很致命的缺陷,一旦网络响应时间改变,就需要重新计算QPS的数量。

方式二:Jmeter有一个非常有用的定时器,叫做Constant Throughput Timer (常数吞吐量定时器),该定时器可以根据时长控制取样器吞吐量。右键点击线程组->添加->定时器->Constant Throughput Timer

一个简单的性能测试

Target throughput(in samples per minute):目标吞吐量。这里是每分钟发送的请求数(in sample per minute),15QPS对于值也就是15*60=900

Constant Throughput Timer 的主要属性介绍:

名称:定时器的名称

Target throughput(in samples per minute):目标吞吐量。注意这里是每分钟发送的请求数,因此,对应测试需求中所要求的20 QPS ,这里的值应该是1200 。

一个简单的性能测试

Calculate Throughput based on:

This thread only:每个线程的吞吐量,总吞吐量=target Throughput*线程数。

All active threads:所有线程的活动,总target Throughput分配到每个线程上。

All active threads in current thread group :当前线程组中的所有活跃的线程。将所有target Throughput分配到每个活跃的线程上。

All active threads (shared ):所有活动线程(共享),与All active threads in current thread group效果相同,每个活跃线程都会在所有活跃线程上一次运行结束后等待合理的时间后再次运行。

All cative threads in current thread group (shared ):当前线程组中的所有活跃的线程,与All active threads in current thread group效果相同,唯一区别,每个活跃线程都会在所有活跃线程上一次运行结束后,等待合理的时间后再次运行。

添加监听器(Listener)

一个简单的性能测试

一个简单的性能测试

Label:每一个sample都有一个name属性,可以取一个有意义的名字

Samples:此次测试计划中的所有请求。

Average:平均响应时间,默认是单个请求的平均响应时间。

Median:中位数响应时间,50%的用户响应时间。

90%Line:90%的用户响应时间。

Min:最小响应时间。

Max:最大响应时间。

Error%:本次测试出现错误的比例。

Throughput:吞吐量,默认从每秒处理请求数。默认单位是/sec,跟loadrunner的每秒点击次数类似。

KB/sec:从服务器接受的数据量,跟loadrunner的Throughput/sec一致。

运行脚本

jmeter运行脚本的方式,非常简单。点击绿色三角形的启动按钮,就可以了。打开调度器的记得关闭,否则jmeter只会执行一次循环。

测试数据

一个简单的性能测试

run启动

一个简单的性能测试

OK,到此为止,一个简单的性能测试就完成了,希望大家学到一些东西。


上面是我收集的一些视频和面试题资料。

对于软件测试的的朋友来说应该是最全面最完整的面试备战仓库,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你

关注我的微信公众号【程序员二黑】免费获取
 

猜你喜欢

转载自blog.csdn.net/weixin_53519100/article/details/114988175
今日推荐