一、Jmeter简介

Jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,不像loadrunner那样体积大,是一个比较轻量级的测试工具,使用起来非常的简单,深受测试人员的喜爱,但是它的测试报告没有loadrunner的那么详细,看起来没有那么的直观。因为它是java开发的,所以运行的时候必须要安装jdk才可以,jmeter是免安装的,拿到安装包之后直接解压就可以使用了,它也是跨平台的在linux、windows、macos上都可以使用。

二、Jmeter-http接口脚本

1、添加线程组
2、添加http请求
3、在http请求中写入接口url、路径、请求方式、参数
4、添加查看结果树
5、调用接口、查看返回值

Jmeter-http接口脚本添加header:
Jmeter-http接口脚本添加cookie:
在这里添加cookie的时候,不要忘了把域这里写上接口的url,否则是不生效的,还有一种方法也是可以添加cookie,那就是在header里面添加一个key是cookie,值为cookie的值就好了,两种方法都可以
 

三、Jmeter-webservice脚本

1、在soapui中新建已经soap项目,导入wsdl地址,获取到请求报文、SOAPAction和请求url(在soapui的raw中能找到)
2、打开jmeter新建一个线程组
3、新建一个SOAP/XML-RPC Request
4、把url、soapaction和请求报文写到soaprequest中
5、调用接口、查看返回值
四、Jmeter-参数化
参数化是干嘛的呢,咱们在调用接口的时候,有入参,那参数里面的值如果经常变化的话,就得每次去改了,很麻烦,这时候咱们就把需要经常变的值,改成可以变化的或者是咱们提前设置好的一些值,这样的话,调用的时候就不用每次都改它的值了
1、Jmeter参数化的方式有三种
用户定义的变量——这种就是为了方便管理参数,只能有一个值,比如说ip地址不经常变化的
函数生成器——函数生成器可以参照一定的规则生成数据,这样的比如说生成一些随机数
从文件中读取——文件读取就是事先写好一些数据,然后从文件中读取,这样的话,比如说登录接口,账号和密码           都是我们事先注册好的
 

2、用户定义的变量

value就可以了,key就是这个参数的名称,也就是你在脚本里面取的值,value就是具体值了。在取参数化的值的时候,使用${name}这样去取值,name就是你取的变量名称。

3、函数生成器

函数助手的话,可以按照规则生成一些参数,比如说随机数取当前时间,最常用的就是这两种。
随机数__Random——可以在你指定的一个范围内取随机值
取当前时间__time——如果在有一些需要传时间的情况下可以使用,日期格式是:
                                       yyyy-MM-ddHH:mm:ss
                                       年-月-日-小时:分钟:秒
取唯一id,__UUID——这个就是每次会生成一个随机的uuid,都是唯一的
 

4、从文件中读取

从文件中读取的话,三个步骤
        1)、读取文件
        2)、取文件内容里面的参数,给它一个名字
        3)、使用值
从文件读取的话,需要在线程组里面添加一个CSV Data Set Config,它就是做前面两步的操作的

 

五、Jmeter断言

断言——它是用来检查返回结果对不对的。
用来验证结果是否正确,如果正确的话,就代表这个请求的返回是正确的,如果没有的话就代表这个请求的结果和我们预期的不一致,这样我们就可以通断言来检查返回结果,测试是否通过。

 

六、Jmeter关联

我们知道断言是从返回结果中检查有没有预期的值,现在有一个问题,有一个购买商品的接口,必须要先登录才能够购买商品, 那么你调用接口的时候怎么知道是否已经登录了,一般这样的都会在调用的时候传一个token的参数,服务端判断token是否过期或者token是否正确,如果正确的话,那就是登录成功了就可以买东西了。
那么这样的话,你就要先获取到token,token是从呢来的呢,肯定是从登录接口返回的,因为要先登录嘛,那这样就得先调用登录接口, 获取到token,然后把获取到的token传给购买商品的这个接口。
关联就是做这个事的,它就是获取到返回的值,然后保存起来,给别的请求使用,或者做一些其他的处理。
=====Jmeter中的关联是通过正则表达式提取器来完成的。

 
 
=====

通过上面的关联就可以把返回中我们想要的值抓到了,给其他请求使用的时候,直接使用${name}即可,name就是你关联的时候设置的变量名。
 
七、Jmeter操作mysql
1、Jmeter操作mysql步骤:
 
1)、导入jdbc的jar包,因为jmeter本身不能直接连接mysql,所以需要导入第三方的jar包,来连接mysql
2)、创建数据库连接配置,mysql的url、端口号、账号、密码
3)、写sql,执行sql
4)、查看结果

2、Jmeter数据库驱动列表

数据库

驱动

数据库url

mysql

com.mysql.jdbc.Driver

jdbc:mysql://host:port/{dbname}?allowMultiQueries=true

oracle

org.postgresql.Driver

jdbc:postgresql:{dbname}

PostgreSQL

oracle.jdbc.driver.OracleDriver

jdbc:oracle:thin:user/pass@//host:port/service

MSSQL

com.microsoft.sqlserver.jdbc.SQLServerDriver

或者

net.sourceforge.jtds.jdbc.Driver

jdbc:sqlserver://IP:1433;databaseName=DBname

或者

jdbc:jtds:sqlserver://localhost:1433/"+"library"

3、Jmeter配置mysql连接

1)、添加一个JDBC Connection Configuration
2)、配置mysql连接池的名称,后面发sql请求的时候指定连接哪里
3)、数据库的url:jdbc:mysql://192.168.1.116:3307/bugfree?
allowMultiQueries=true
4)、数据库驱动:这里就是指定连接什么类型的数据库,mysql、oracle、SqlServer等等
5)、账号密码
 
八、Jmeter操作mongodb
1、Jmeter操作mongodb步骤:
1)、添加一个MongoDB Source Config,配置mongodb连接信息,指定ip和数据源
2)、添加一个mongodb的请求脚本,指定数据源
3)、写查询语句
4)、查看结果
 
2

、Mongodb操作语句
show dbs;查看所有数据库
use db;选择一个数据库
show collections;查看所有集合,也就是表
db.collection.find();#查询所有数据
db.collection.find({"name":"mongodb"});#查询指定的条件
db.collection.insert({"name":"mongodb","age":18});#插入数据
db.collection.update({“name”:“mongodb”},{$set:{“createtime”:“20150810”}});#更新数据
db.besttest.remove({“name”:“mongodb”});#删除指定数据

九、Jmeter压力测试

做压力测试也就是多少用户一起去操作,也就是设置多少并发,运行多久。
 
1、压力测试场景设置
一般我们在做压力测试的时候,分单场景和混合场景,单场景也就是咱们压测单个接口的时候,多场景也就是有业务流程的情况下,比如说一个购物流程,那么这样的场景就是混合场景,就是有多个接口一起来做操作。
1)、单场景,一个请求就可以了
2)、混合场景,多个请求
3)、压测时间,一般场景都是运行10-15分钟,如果是做疲劳测试的话,可以压一天或者一周,根据具体的情况来定
2、压力测试数据准备
在做压测的时候,数据量少和数据量大的情况下,测试的结果是不一样的,所以,我们在设计场景的时候是要考虑到这种情况的,要测试数据库中数据量大和数据量小的情况,如果是要测试数据量大的情况下,就要造数据了,造数据可以使用jmeter,操作数据库来造数据,也可以使用python连接数据库,批量的造数据。
 
3、压力测试结果查看

查看结果关注的几个指标

1)、tps是每秒钟处理的请求数,也就是指服务器的处理能力,tps越高说明服务器处理能力越好
2)、响应时间,也就是每个请求的处理时间
3)、并发用户数  也就是多少并发

 
十、Linux下运行jmeter压力测试
我们在做测试的时候,有时候要运行很久,公司用的测试服务器一般都是linux,就可以运行在linux下面,linux下面不能像windows一样有图形化界面,那怎么运行脚本呢,就先在windows上把脚本做好,然后在linux下运行即可,linux下运行jmeter是在jmeter的bin目录下的jmeter.sh这个shell脚本。
 
sh jmeter.sh -n –t a.jmx -l res.jtl

-n         代表以没有图形化界面启动

-t          代表后面是测试脚本
a.jmx     也就是我们做好的jmeter脚本
-l           代表测试结果
res.jtl     就是测试结果文件
查看结果的话,在查看结果树视图中导入这个res.jtl就可以查看到测试结果了

 


 
 
1、Jmeter添加负载机
我们在压测的时候,可能并发比较大, 一台机子已经启动不了那么多并发了,这个时候我们就要使用多台机子一起来发压力,就要添加压力机,添加压力机怎么添加呢,首先要在

做压力机的机子上启动jmeter的代理,然后做为控制机的机子上添加上压力机的ip即可。
 

1)、Jmeter的bin目录下有一个jmeter-server,启动它即可,

windows机子作为压力机的话,运行jmeter-sever.bat,linux作为压力机的话,运行jmeter-server
2)、然后在作为控制机的jmeter配置文件里添加压力机ip即可,

jmeter的配置文件在bin目录下jmeter.properties,

添加压力机的时候

,在配置文件里面找到remote_hosts添加ip,

然后重启jmeter就可以看到远程压力机了后重启jmeter就可

3)、在配置文件里面添加之后,重启jmeter,在运行的时候,就可以看到压力机的ip了,可以选择他来运行这个脚本,全部运行的话,也就是所有压力机上的全部都启动,就选择远程全部启动,就所有的压力机就都运行了。
 
 
 
 

jmeter接口测试的更多相关文章

  1. http接口测试——Jmeter接口测试实例讲解

    摘要: 最近做的项目需要测试很多接口,上网查一查,发现完整讲述接口测试的资料太少,所以最近自己做完这个项目,把测试的东西整理一下和大家分享一下,希望对看到的人有所帮助     一.测试需求描述 1. ...

  2. jmeter接口测试教程

    一.Jmeter接口测试步骤: 1.添加线程组

  3. 通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢

    通过Jenkins跑Jmeter接口测试脚本,我想当有接口跑失败时Jenkins发送邮件通知,这个如何弄呢

  4. jenkins+ANT+jmeter 接口测试环境搭建

    目的 jmeter很早就接触了,最近又在接触项目的时候整了一下.写这篇博客主要有两个目的 1,为了给自己搭建jmeter做一个总结. 2,在部署过程中遇到过一些坑,在这分享出来,也希望能给需要的人一个 ...

  5. JMeter接口测试系列:Jmeter+jenkins+ant 的自动化构建

    在JMeter接口测试不断深入的过程中,发现可以和jenkins和ant一起搭配进行自动化的构建.下面是jmeter自动化构建的整理笔记. 准备环境 需要本机上确定安装了jmeter.ant和jenk ...

  6. Jmeter接口测试-断言

    JMeter接口测试-断言  对应qq群号:616961231 一个http请求发出,怎么判断执行的是否正确呢? 通过检查服务器响应数据,是否符合预期的数据, 如果是,任务成功,  如果否, 任务失败 ...

  7. jmeter接口测试实战-创建用户

    jmeter接口测试实战-创建用户 相信大多数看到标题的同学都会有疑问, 创建用户不是很简单吗, 调用一下创建用户接口, 传入指定入参, 用户即可创建成功, 今天我们的实战来讲讲创建场景.通过接口创建 ...

  8. JMeter接口测试实战-动态数据验证

    JMeter接口测试实战-动态数据验证 说到验证就不得不说断言, 先来看下JMeter官方给出断言(Assertion)的定义, 用于检查测试中得到的响应数据等是否符合预期,用以保证测试过程中的数据交 ...

  9. JMeter 接口测试-if控制器

    JMeter 接口测试-if控制器 ​ 使用场景: 当业务场景是用户登录才能支付操作, 不登录点击支付, 页面会跳转到登录页面. 对于接口也是这样, 一个接口需要执行前, 需要有前提条件, 比如0状态 ...

  10. Jmeter接口测试实战-数据传递

    Jmeter接口测试实战-数据传递 接口与接口之间没有关联的测试是缺乏意义和没有灵魂的,只有数据在不同接口之间传递才能勾画出业务场景重要的链路. 我们用较为通用的http/https协议,接口普遍返回 ...

随机推荐

  1. s3c2440液晶屏驱动 (非内核自带) linux-4.1.24

    对于,不想逐一检查内核自带驱动,想自己编写驱动. 1,make menuconfig 去掉 编译到内核,改为 M 编译为 模块(因为要用到里面的3个.ko 驱动) Device Drivers --- ...

  2. Saltstack之salt-master的打开文件数问题

    一.引言: 单个salt-master下的minion数已经达到2101个了,所以在master日志有如下的提示: 2016-09-09 11:36:22,221 [salt.utils.verify ...

  3. 将windows server 2016改造为像windows 10一样适合个人使用的系统

    Windows server 2016 RTM已流出,具体可以搜索wzor大神泄露的,英文版本是0911的.现根据我安装后整理的如何配置使个人更适合使用. 20170102更新:wzor泄漏的0911 ...

  4. js错误

    1ajax提交 从数据库里取文件typeerror: 'stepup' called on an object that does not implement interface HTMLInputE ...

  5. json pickle time

    多层装饰器: 字符串格式化: 当字符串格式化时 , %% 生成器 使用函数创造的 yield递归模块PY:模块其他:类库 先导入 后使用 自定义模块内置模块第三方模块为什么要有模块 将代码归类模块的内 ...

  6. CSS水平垂直居中的方法

    原文链接:http://caibaojian.com/370.html 水平垂直居中,特别是使用在列表的时候经常会用到的,以前有需求的时候我也做过类似的代码,是使用display:table-cell ...

  7. windows平台整合Apache与tomcat

    Apache与Tomcat整合的好处 Apache主要用来解析静态文本,如html.Tomcat虽然也有此功能,但Apache效率大大高于Tomcat,尤其是对于并发数较大的企业级应用,能更好的显示A ...

  8. WebForm Repeater Response以及 地址栏

    Repeater重复器: Repeater中有五个模板,这里需要注意的是4个 <HeaderTemplate> - 开头,只执行一次的内容 <ItemTemplate> - 需 ...

  9. 20161127-monkey

    1.配置好adt-bundle-windows-x86-20131030 2.设置环境变量

  10. Angular.js 的初步认识

    MVC模式 模型(model)-视图(view)-控制器(controller) Angular.js采用了MVC设计模式的开源js框架 1.如何在angular.js建立自己的模块(model),控 ...