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下载 

Jmeter进行压力测试不为人知的秘密_第1张图片

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

JMeter安装

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

    Jmeter进行压力测试不为人知的秘密_第2张图片

接口测试

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

Jmeter进行压力测试不为人知的秘密_第3张图片

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

Jmeter进行压力测试不为人知的秘密_第4张图片

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

post请求

Jmeter进行压力测试不为人知的秘密_第5张图片

注:post请求要加上参数值

jmeter 操作数据库 

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

Jmeter进行压力测试不为人知的秘密_第6张图片

Jmeter进行压力测试不为人知的秘密_第7张图片

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获取信息的实例如下图所示:

Jmeter进行压力测试不为人知的秘密_第8张图片

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

Jmeter进行压力测试不为人知的秘密_第9张图片

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

Jmeter进行压力测试不为人知的秘密_第10张图片

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

 

Jmeter进行压力测试不为人知的秘密_第11张图片

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

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

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

Jmeter进行压力测试不为人知的秘密_第12张图片

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

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

Jmeter进行压力测试不为人知的秘密_第13张图片

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

【性能测试】终于有一套全面的性能测试教程啦!真实企业性能测试全流程项目实战!

你可能感兴趣的:(自动化测试,软件测试,jmeter,开源,测试工具)