Jmeter压力、性能测试

负载测试是对服务器不断地施加压力,直到到达可以承受的最大值。压力测试可以说就是负载测试的终点。

压力测试(简单的步骤):

1、原有的接口测试脚本中增加一个监听器(聚合报告)

2、准备批量的测试数据(跑接口的数据,使用四种参数化方式来做)

3、在HTTP请求中引用这些数据

4、在线程组中设置运行的次数和时间(还可以设置调度器)

这里说一下jmeter连接数据库做压力测试:

连接驱动的下载

想要连接数据库第一步必须先下载数据库驱动(mysql-connector-java-X.xx.jar),要把它放在jmeter的lib路径下。

登录MySQL官网下载页面https://dev.mysql.com/downloads/,点击connector/J进入驱动下载页面。

选择需要使用的连接驱动点击下载


如果跳出让登录或者注册页面,直接点击跳过开始下载就可以了

下载完成后解压,然后将驱动mysql-connector-java-8.0.11.jar复制添加到jmeter的lib路径下

jmeter连接数据库

1、创建测试计划,并且把数据库驱动添加到class path 中

2、创建线程组,并且在线程组下添加一个配置元件****JDBC ConnectionConfiguration

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kmDTWNd2-1664240438330)(assets/image-20220816173745-zixhfrf.png)]

3、对刚才添加的JDBC ConnectionConfiguration元件进行配置[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kFpL7nwx-1664240438332)(assets/image-20220816175211-6xqffjz.png)]

这里自上往下解释各个配置项都是什么意思:

**VariableName**  **:** 数据库连接池的名称,我们可以有多个jdbc connection configuration,每个可以起个不同的名称,在jdbc request中可以通过这个名称选择合适的连接池进行使用。

**Max Numberof Connection**  **:** 数据库最大链接数

**MaxWait**  **(ms):** 最大等待时间

**timebetween eviction runs**  **:** 运行时间间隔

**Auto Commit**  **:** 自动提交。有三个选项,true、false、编辑(自己通过jmeter提供的函数设置)

TransactionIsolation:事务间隔级别设置,主要有如下几个选项:(对JMX加解密)

TRANSACTION_NODE:事务节点

TRANSACTION_READ_UNCOMMITTED:事务未提交读

TRANSACTION_READ_COMMITTED:事务已提交读

TRANSACTION_SERIALIZABLE:事务序列化

DEFAULT:默认

TRANSACTION_REPEATABLE_READ:事务重复读

Connection Validationby Pool

Test WhileIdle :当空闲的时候测试连接是否断开

Soft MinEvictable Idle Time(ms) :最少的时间连接可能在池中闲置,然后才有资格被闲置的对象驱逐出去,额外的条件是至少在池中保持连接。默认值为5000(5秒)

validationQuery:配置数据库时,属性validationQuery默认值为“select 1”,对于oracle值应为“select 1 from dual”。用来验证数据库连接的语句,这个语句至少是返回一条数据的查询语	句。每种数据库都有自己的验证语句。大部分数据库都是select 1。

DatabaseConnection Configuration

DatabaseURL: jdbc:mysql://服务器地址:3306/数据库名

JDBC Driverclass:数据库JDBC驱动类名:com.mysql.jdbc.Driver

Username:数据库连接用户名

password:数据库连接密码

4、在线程组下添加一个取样器****JDBC Request


自取名是之前在上一个配置元件中设置的那个名字。

Query Type:要进行的操作类型:

a)  Select statement:查询语句类型

 b)  Update statement:更新语句类型

 c)  Callable statement:可调用语句类型

d)  Prepared select statement:statement用于为一条SQL语句生成执行计划,如果只执行一次SQL语句,statement是最好的类型,	Prepared statement用于绑定变量重用执行计划,对于多次执行的SQL语句,Prepared statement是最好的类型。

  e)  Prepared update statement:用法与Preparedselect statement相似。

  f)  Commit:将未存储的SQL语句结果写入数据库表。

  g)  Rollback:撤销指定SQL语句的过程。

h)  AutoCommit(false):将用户操作一直处于某个事务中,直到执行一条commit提交或rollback语句才会结束当前事务重新开始一个新的事务

i)  AutoCommit(true):无论何种情况,都自动提交将结果写入,结束当前事务开始下一个事务Query :

5、最后添加监听器查看结果树和聚合报告执行就可以了