性能测试Jmeter 性能测六-压测实例详解

明确压测目的

一般对于访问量大的接口需要做压测,这样才能保证上线后大量请求打到服务器的时候不会导致接口响应不过来、@@等情况。

压测的目的是用提前预测的最大并发访问量请求接口且接口能在可接受的时间内成功返回所有数据。

 

压测工具

JMETER

 

设计压测过程

  1. 明确前提条件所需要的数据获取方式,比如前提数据可直接通过接口触发生成,或可直接通过插入数据库生成,或可直接用现有页面工具生成等。
  2. 实现前提条件用例,针对上述三种生成前提数据的方式详细描述。
    1. 通过接口触发生成, 一般都需要配置HTTP请求头,配置好后输入对应IP、端口、PATH路径、入参(入参参数化,参考本人性能测试Jmeter 性能测试系列)

性能测试Jmeter 性能测六-压测实例详解_第1张图片

    1. 通过插入数据库数据生成,然后明确系统所用的数据库类型,因为不同的类型在jemter中的配置也不一样,如果是MYSQL,先下载MYSQL的jdbc驱动mysql-connector-java-5.0.8.jar放到jemter文件夹的lib目录下,一般也可能jemter自带jdbc驱动,可在jemter安装包对应的lib目录下找到。然后按照MYSQL的方式配置具体参数,连接好后就可以通过增、删、改的SQL语句准备测试前提数据。具体JMETER连接数据库配置如下:

在test plan中将添加驱动地址

性能测试Jmeter 性能测六-压测实例详解_第2张图片

 

在Thread Group-添加-配置原件-JDBC Connection Configuration

性能测试Jmeter 性能测六-压测实例详解_第3张图片

配置JDBC Connection Configuration:Variable Name:该名称自定义,在JDBC Request会用到。Database URL:jdbc:mysql:// 数据库IP地址:数据库端口/数据库名称。JDBC Driver Class:com.mysql.jdbc.Driver。Username:数据库连接用户名。Password:数据库连接密码,举例如下:

性能测试Jmeter 性能测六-压测实例详解_第4张图片

添加JDBC Request

性能测试Jmeter 性能测六-压测实例详解_第5张图片

JDBC Request中的Variable Name 与JDBC Connection Configuration 中Variable Name值一致,Query Type:可以选择sql的类型,是查询还是修改还是删除操作,如果是要执行查询功能,则选择select Statement,如果是更新可以选择Update Statement,我们这里选择Update Statement。

注意,如果这里要执行多条语句,如多条查询语句,Query Type:选择select Statement,语句之间要用分号隔开且在在配置JDBC Connection Configuration中的Database URL时末尾要增加一个参数?allowMultiQueries=true

性能测试Jmeter 性能测六-压测实例详解_第6张图片

具体的更新语句按照测试需求填入Query即可,注意还是需要将变量参数化。

性能测试Jmeter 性能测六-压测实例详解_第7张图片

    1. 通过页面接口生成,UI页面生成测试数据也其实是通过接口实现的,通过浏览器控制台,抓取到使用的接口和入参来生成前提数据,也需要做参数化。一般这种情况实验一下是否校验登录,如果不校验登录则不需要加Cookie,如校验登录还需在HTTP Cookie Manager中加上控制台中抓取到的Cookie值,一般这个值是有时效的,超过时效就不可用了,所以这里最好是能将登录接口作为前提用例设计进来,这样实际生成测试前提数据的接口所使用的接口就一直是有效的。

在浏览器控制台中抽取必须参数填入JMETER的HTTP Request中

性能测试Jmeter 性能测六-压测实例详解_第8张图片

HTTP Cookie Manager配置

性能测试Jmeter 性能测六-压测实例详解_第9张图片

HTTP Request配置

性能测试Jmeter 性能测六-压测实例详解_第10张图片

  1. 实现最终想要压测接口的用例,直接可在path中填入要请求的接口地址,包括ip,端口和接口都可一并写道path中,然后输入入参即可。
  2. 性能测试Jmeter 性能测六-压测实例详解_第11张图片

 

分析压测顺序和结果

执行顺序会按照添加用例的顺序从上到下依次执行,所以下一个用例的参数都会取自上一个用例的结果,可以在Test Plan的Thread Group中设置并发数和循环次数

性能测试Jmeter 性能测六-压测实例详解_第12张图片

 

一般会通过View Result Tree、View Result Tree或者Aggregate Report来分析压测结果。

  1. View Result Tree,可以直观的看到每条用例是否执行成功,入参、出参。
  2. Summary Report,一般会参考Std.Dev影响时间的标准方差,如果很大则MAX和MIN的参考价值不大,如果很小则表示越稳定。Error%错误率最好不要超过1%,表示系统性能压力过大。Average平均值,上述参数单位都是ms。Throughput(Transaction per Second每秒吞吐量,越大越好)字段值,表示每秒事务数。Sampler表示取样器提交了多少笔业务。
  3. Aggregate Report,一般会参考90% Line,意思是90%的请求响应时间,还有95% Line、99% Line。Average平均值、Throughput(Transaction per Second每秒吞吐量,越大越好)字段值。

 

影响压测结果的其他因素

  1. 如在压测过程中需要准备前提数据则可能在造数过程中对服务器、数据库产生一定压力,这种情况下可能会影响压测结果。
  2. 执行压测的环境本身可能会影响压测结果。

你可能感兴趣的:(压力测试)