Jmeter进行压力测试不为人知的秘密

 jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为jmeter是java开发的,所以运行的时候必须先要安装jdk才可以。jmeter是免安装的,拿到安装包之后直接解压就可以使用,同时它在linux/windows/macos上都可以使用。 Jmeter可以做接口测试和压力测试。其中接口测试的简单操作包括做http脚本(发get/post请求、加cookie、加header、加权限认证、上传文件)、做webservice脚本、参数化、断言、关联(正则表达式提取器和处理json-json path extractor)和jmeter操作数据库等等。

Jmeter安装

 *JDK安装

1.由于Jmeter是基于java开发,首先需要下载安装JDK,官网下载地址:Java Downloads | Oracle 

2. 选择Java SE 8u151/ 8u152,点击JDK下载 

3. 安装下载的JDK 
4. 配置系统环境变量

JMeter安装

  1. 官网下载地址:Apache JMeter - Download Apache JMeter
  2. 下载完成后解压zip包
  3. 启动JMeter 
    双击JMeter解压路径(apache-jmeter-3.3\bin)bin下面的jmeter.bat即可 

接口测试

一般分五个步骤:(1)添加线程组 (2)添加http请求 (3)在http请求中写入接入url、路径、请求方式和参数 (4)添加查看结果树 (5)调用接口、查看返回值

注:要查看自己的接口是什么类型的请求,上述为get请求

添加聚合报告就可以查看测试的信息

post请求

注:post请求要加上参数值

jmeter 操作数据库 

操作数据库基本有四个步骤:(1)导入mysql的jdbc的jar包 (2)创建数据库的连接配置,线程组里添加配置元件-JDBC Connection Configuration (3)线程组里添加jdbc request,写sql语句 (4)添加察看结果树,点击启动按钮,就能看到执行的SQL。具体的实例如下截图所示:

JMeter可以针对多个数据库进行操作,下方提供一下常用的驱动

压测结果查看

运行完后,聚合报告会显示压测的结果。主要观察Samples、Average、error、Throughput。

Samples:表示一共发出的请求数
Average:平均响应时间,默认情况下是单个Request的平均响应时间(ms)
Error%:测试出现的错误请求数量百分比。若出现错误就要看服务端的日志,配合开发查找定位原因
Throughput:简称tps,吞吐量,默认情况下表示每秒处理的请求数,也就是指服务器处理能力,tps越高说明服务器处理能力越好。

Jmeter-webservice接口脚本

基本分为五个步骤:(1)先需要通过soapui工具获取到webservice接口的请求地址、请求报文和请求soapaction。(2)jmeter新建一个线程组 (3)线程组下建立SOAP/XML-RPC Request,写入请求url、请求报文、请求soapaction。(3)启动jmeter,调用接口,通过察看结果树查看返回值。
soapui获取信息的实例如下图所示:

soapui提交完后,点击raw,可看到soapation,有些接口若没返回soapation,则jmeter里也就不用填。

 jmeter-webservice脚本实例如下图所示:

在做压力测试的时候很多时候会要去测试并发,其实并发测试归属于压力测试,其中的差别就在于需求范围和间接的运行时间,如下图:

*Rame-Up Period(in seconds):表示JMeter每隔多少秒发动一次,如果设置为0,就代表0秒跑一次,这里边数可以理解为多长时间跑一次(准备时间)

在网络很多网友反馈Jmeter的测试结果不准确,下面我们主要聊一下不准确的原因

Jmeter 是ASF的一款开源免费软件 ,在国内被很多中小公司当作性能测试工具广泛使用。Apache软件基金会(ASF)是一家总部位于美国的非营利性慈善组织。ASF的所有产品都通过公共论坛的在线协作开发,并从美国境内的中央服务器分发。

使用Jmeter进行压力测试你所不知道内幕

Jmeter做性能或压力测试,首先要建立一个线程组,如果需要事务在线程组内再添加事务,然后根据需要可以设置并发的虚拟用户数,也就有多少个线程组并发运行。

为了弄清楚jmeter统计结果不准确,首先我们要搞清楚Jmeter对线程组中的HTTP请求运行的机制。对于Jmeter而言,线程组内的HTTP请求都线性执行(上一个请求执行并返回结果后,再请求下一条请求),但事实上往往并没有那么简单。如下所示Chrome访问一个web页面,HTTP请求是并发进行的(前一个请求还没有返回结果,下一条请求就开始下发请求)。这样就会导致Jmeter尤其是事务的统计产生较大偏差。

使用Jmeter进行压力测试你所不知道内幕

小编结语:根据我的经验,做单接口压测,用jmeter完全没问题;如果做页面压测,结果同样具有参考性,能反应大部分性能问题;如果要获得更准确的结果可以考虑其他工具,如熟知的loadrunner。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取  

 

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值