- 环境准备
需要配置安装两个软件
jdk
和
jmeter
- Jdk、jmeter环境变量配置
右键计算机属性->高级系统设置->高级->环境变量->添加如下的系统变量:
1)变量名:【JAVA_HOME】
变量值:【D:\Program Files\Java\jdk1.8.0_92】【jdk安装路径】
2)变量名:【path】
变量值:【\;%JAVA_HOME%\bin;】
3)变量名:【CLASSPATH】
变量值:【.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;】【.不能漏】
4)变量名:【JMETER_HOME】
变量值:【D:\工作\apache-jmeter-2.13】【jmeter安装路径】
5)变量名:【CLASSPATH】
变量值:【.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-1.2.jar;】
- Jdk验证
运行cmd->输入java -version->显示java版本就表示jdk安装成功,如下图
- Jmeter运行
进入jmeter安装环境下的bin目录,点击运行bat文件
2、添加JDBC Connection Configuration
1、具体操作:测试计划——添加——配置元件——JDBC Connection Configuration
2、具体值填写:
- Variable Name:变量名,字母即可,尽量不要有中文,或者空格(转义的时候可能会消失)
- Max Number of connections: 数据库最大连接数,默认值
- Pool Timeout:数据库连接超时,默认值
- Idle Cleanup Interval:数据库空闲清理的间隔时间,默认值
- Auto Commit:自动提交。有三个选项,true、false、编辑(自己通过jmeter提供的函数设置)
- Transaction Isolation:事务间隔级别设置,主要有如下几个选项:(对JMX加解密)
TRANSACTION_REPEATABLE_READ事务重复读、TRANSACTION_READ_COMMITTED事务已提交读 、TRANSACTION_SERIALIZABLE事务序列化 、TRANSACTION_READ_UNCOMMITTED事务未提交读、
TRANSACTION_NODE 事务节点
DEFAULT默认
- Keep-Alive: 是否保持连接
- Max Connection age (ms):最大连接时长,超过时长的会被拒绝
- Validation Query:验证查询,检验连接是否有效(数据库重启后之前的连接都失效,需要验证查询)
- Database URL:开头固定(jdbc:mysql://)+数据库地址:端口号+“/” +对应的数据库+可忽略部分(?zeroDateTimeBehavior=convertToNull)jdbc:mysql://djopenpf.dbt.djdns.cn:3601/dbwww58com_open_platform?zeroDateTimeBehavior=convertToNull
- JDBC Driver Classs:JDBC的类,值固定为com.mysql.jdbc.Driver
- Username:对应数据库用户名
- Password:对应的数据库密码
3、添加HTTP信息头管理器
1、具体操作:测试计划——添加——配置元件——HTTP信息头管理器
2、具体值填写:
- 名称:Content-Type指定请求内容类型;Authorization绕过登录验证
- 值:application/json对应Content-Type;Bearer ${token}
4、添加线程组
1、具体操作:测试计划——添加——Threads(Users)——线程组
2、具体值填写
1)线程数:决定jmeter启动多少线程
2)Ramp-up Period:决定多长时间启动所有线程,一般设置ramp-up=线程数
3)循环次数:每个线程的循环次数
4)Delay Thread creation until needed:延迟创建线程,直到该线程开始采样,即之后的任何线程组延迟和加速时间为线程本身。这样可以支持更多的线程,但不会有太多是同时处于活动状态。
5)调度器:选中调度器后,需要输入启动和结束时间。当测试启动时,如果必须JMeter会等待启动时间到达。在每个周期结束,JMeter检验结束时间是否到达,如果是,运行停止,如果不是测试被允许继续,直到迭代限制到达。另外你可以使用启动延迟和持续时间文本域。注意启动延迟会覆盖启动时间,持续时间会覆盖结束时间。
4.1 添加HTTP请求
1、具体操作:线程组——添加——Sampler——HTTP请求
2、具体值填写:
- 服务器名称或者IP:根据RD给的接口文档里的URL,如:http://10.37.18.69:5810//ms/v1/h5/order,进行拆分,前面的10.37.18.69或者是域名直接即为所填值。
- 端口号:如果服务器名称或者IP值为域名,此处不填;如果服务器名称或者IP为IP+端口号,上述例子中的端口号5810即为所填值。
- Implementation:实现,HttpClient4
- 方法:根据RD给出的接口文档值填写。
- Content encoding:HTTP协议的响应报文头,UTF-8(防止乱码)
- Parameters/Body Data:具体值根据RD给出的接口文档所填,Body Data中的值,最好通过在线json验证http://www.bejson.com/验证一下
4.1.1 添加响应断言
1、具体操作:线程组——添加——断言——响应断言
2
、具体值填写
- 应用范围:大多数勾选“main sample only”;当类似于ajax可以触发多个服务器请求,勾选sub-sample;重定向请求,并且勾选了“跟随重定向”俩个请求都是sub-sample之后的请求是main sample only;
- 响应字段:普通http响应勾选响应文本;一切Apache Tika支持服务器响应,包括文本响应,还支持PDF,Office,Auto,Video formats选择Document(Text);对url进行重定向的断言选择url样本;http响应代码,此时需要勾选“ignore status”选择响应代码;
- 模式匹配规则:包括(返回结果包括你制定的内容,支持正则匹配),匹配(相当于equals,正则匹配,必须完全匹配),Equals(返回结果与制定断言完全一致),Substring(与包括相似,不支持正则字符串),否(取反)。
4.2 添加JDBC Request
1、具体操作:线程组——添加——Sampler——JDBC Request
2、具体值填写
- Variable Name:JDBC Connection Configuration 中的Variable Name值。
- Query Type:根据所需要的功能选择,后面填写的sql语句和具体情况相关。
4.3 添加察看结果数
1、具体操作:线程组——添加——监听器——查看结果树
2、具体操作
点击如图所示绿色按钮,开始运行
3、具体值对应
- HTTP请求:HTTP中的响应数据中的message字段值为success,证明成功,如果错误,可以看取样器结果提示,根据提示判断
- JDBC Request:响应数据中的结果即为查询结果,有结果出来则为成功,如果错误看提示即可。
常见以及解决方法:
1、常见错误码定义:
2、错误case1:
当HTTP请求报错,错误类型
“
Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp,解决方法:JDBC Connection Configuration找出Database URL后面加一个?zeroDateTimeBehavior=convertToNull。即可