网站压力测试 在线(Jmeter进行http压力测试)

开头先来些费话,首先说一下,本人为什么会对Jmeter有了解。这就起源于以前自己是个穷小子,在外面的做兼职,有一次接到了一个网站的性能测试;要求是在线上测试,既不能把服务搞挂,又要测试出来问题,所以后面就直接对接口测试了,繁琐的是每个接口之间的关联性很大,所以还要自己写代码集成到Jmeter中进行测试,这一次算是对Jmeter 有了一定的了解!下面我们就简单的介绍一下Jmeter作用、性能指标和一个http接口的测试例子。Jmeter下载地址:http://jmeter.apache.org/download_jmeter.cgiJmeter介绍Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。JMeter的作用1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。2.完全的可移植性和100% 纯java。3.完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。4.完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。5.精心的GUI设计允许快速操作和更精确的计时。6.缓存和离线分析/回放测试结果。Jmeter图文案例注意:JMeter基于Java开发,需要系统有安装JDK环境。下载完成Jmeter解压后进入bin目录,点击jmeter.bat1、添加线程组:测试计划 -> 添加 -> Threads(User) -> 线程组,添加后进入如下界面:线程数:表示将模拟多少个用户进行测试。Ramp-Up Period(in seconds):线程启动间隔,所有线程将在这个时间内依次启动。循环次数:所有线程执行一次为一次循环。如果线程数为200 ,循环次数为10 ,那么每个线程发送10次请求。总请求数为200*10=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。2、添加采样器:采样器可理解为针对前面创建的线程需要做什么事情,这里以添加HTTP请求为例。1)线程组 -> 添加 -> Sampler -> HTTP请求,添加后进入如下界面:上图为压测http的get类型接口,url中${newId}和${page}是动态参数,需要从文件中获取服务器名或ip:填写服务器ip地址(例如:192.168.1.23)路径:填写url接口剩余部分;协议:向目标服务器发送http请求时的协议,可以是http或者是https,默认值为http方法:发送http请求的方法,可用方法包括get、post、head、put、options、trace、delete等。Content encoding:内容编码方式路径:目标url路径(不包括服务器地址和端口)自动重定向:如果选中该选项,当发送http请求后得到的响应是302/301时,jmeter自动重定向到新的页面。Use keep Alive:当该选项被选中时,jmeter和目标服务器之间使用keep-Alive方式进行http通信,默认选中Use multipart/from-data for http post:当发送http post请求时,使用Use multipart/from-data方法发送,默认不选中。同请求一起发送参数:在请求中发送URL参数,对于带参数的URL、jmeter提供了一个简单的对参数化的方法。用户可以将url中所有参数设置在本表中,表中的每一行是一个参数值对(对应URL中的名称 名称1=值1 )同请求一起发送文件:在请求中发送文件,通常,http文件上传行为可以通过这种方式模拟。2)添加CSV Data Set Config 来参数化在d盘简历如下data.txt文件,在variable Names中输入newId,page后,在http请求中就可以通过${newId}获取到3)如果是post接口,则把post数据写到parameters下面3、添加监视器监视器可以理解为针对结果的不同查看方式。JMeter里提供了多种结果表现形式。可通过 HTTP请求 -> 添加 -> 监视器 -> 察看结果树、聚合报告等等。聚合报告各指标Label:每个 JMeter 的 element(例如 HTTP Request)都有一个 Name 属性,这里显示的就是 Name 属性的值#Samples:表示你这次测试中一共发出了多少个请求,如果模拟10个用户,每个用户迭代10次,那么这里显示100Average:平均响应时间,默认情况下是单个 Request 的平均响应时间,单位为毫秒。当使用了 Transaction Controller 时,也可以以Transaction 为单位显示平均响应时间Median:中位数,也就是 50% 用户的响应时间90% Line:90% 用户的响应时间Min:最小响应时间Max:最大响应时间Error%:本次测试中出现错误的请求的数量/请求的总数Throughput:吞吐量,默认情况下表示每秒完成的请求数(Request per Second),当使用了 Transaction Controller 时,也可以表示类似 LoadRunner 的 Transaction per Second 数KB/Sec:每秒从服务器端接收到的数据量,相当于LoadRunner中的Throughput/Sec

本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.175ku.com/36016.html