1.jmeter连接数据库--mysql
-
1.在测试计划中导入mysql驱动jar包
-
2.线程组中添加 --JDBC connection configuration(配置元件)
-
3.线程组中添加 --JDBC request(取样器)
-
4.线程组中添加 --查看结果数
-
5.配置JDBCconnection configuration
-
variable name for created pool 添加连接数据库名称: 名称可以自定义
-
添加数据库连接地址
-
jdbc:mysql://数据库地址:端口号/数据库名称?参数名1=参数值1&参数名2=参数值2....
-
jdbc:mysql://数据库地址:端口号/数据库名称?serverTimezone=GMT&useUnicode=true&characterEncoding=utf-8&allowMultiQueries=true&zeroDateTimeBehavior=CONVERT_TO_NULL
-
-
选择数据库驱动
-
填写数据库用户名和密码
-
-
6.执行SQL
-
jdbc request 填写数据库名称,这个名称和连接名称一致
-
编写SQL语句
-
2.jmeter关联
2.1 使用xpath提取器关联
需求:访问网易后,将返回值中"网易"获取出来, 传到百度中搜索
-
新建测试计划
-
添加一个线程组
-
在线程组中添加2个HTTP请求
-
添加查看结果数
-
第一个HTTP请求,发送请求网易
-
在第一个HTTP请求中添加后置处理器---->xpath提取器
-
配置xpath提取器
-
勾选use Tidy
-
引用名称:变量名
-
xpath query:写xpath表达式;例如://title、//标签名
-
匹配数字:0表示随机,-1表示所有,其他正数表示取第几个
-
缺省值:当没有获取到返回值数据的时候,变量名=缺省值
-
-
在线程组中添加一个Debug sampler(取样器) 查看本线程组中所有变量
-
将获取到的变量传递到下一个接口中
-
.
2.2使用json提取器关联
-
新建测试计划
-
添加一个线程组
-
在线程组中添加2个HTTP请求
-
添加查看结果数
-
第一个HTTP请求,发送请求网易
-
在第一个HTTP请求中添加后置处理器---->json提取器
-
配置json提取器
-
Name of created variable: 取值的变量名,自定义
-
JSON Path expressions: json表达式;例如:$..字段名称
-
Math No:0表示随机,-1表示全部,1表示提取第一个数据
-
default Values: 缺省值
-
-
将提取的数据传入下一个接口中
json提取器和xpath提取器使用场景
json提取器:适用于接口返回值为json格式
xpath提取器:适用于接口返回值为html/xml格式
2.3正则表达式提取器
-
正则表达式提取器配置
-
位置:后置处理器---->正则表达式提取器
-
放置位置:放置在HTTP请求内
-
配置
-
引用名称:变量名---自定义
-
正则表达式:开头(.*?)结尾
-
模板:$1$表示取第一组
-
匹配数字:0表示随机,1表示第一个,-1表示全部
-
缺省值:
-
-
总结:jmeter关联
-
后置处理器实现关联
-
xpath提取器 ---返回值为xml/html格式
-
json提取器 ---返回值json格式
-
正则表达式提取器 ---返回值任意格式
-
-
每一个后置处理器只能获取一个值
3.jmeter断言
3.1响应断言
-
断言状态码
-
断言HTTP协议的状态码
-
-
断言文本
-
如果断言的文本是中文,需要在http请求中加后置处理器--->BeanShell PostProcessor 进行转码,在该处理器中加入如下代码,可直接断言中文
//获取响应代码Unicode编码的 String s2=new String(prev.getResponseData(),"UTF-8");//---------------一下步骤为转码过程--------------- char aChar; int len= s2.length(); StringBuffer outBuffer=new StringBuffer(len); for(int x =0; x <len;){ aChar= s2.charAt(x++); if(aChar=='\\'){ aChar= s2.charAt(x++); if(aChar=='u'){ int value =0; for(int i=0;i<4;i++){ aChar= s2.charAt(x++); switch(aChar){ case'0': case'1': case'2': case'3': case'4': case'5': case'6': case'7': case'8': case'9': value=(value <<4)+aChar-'0'; break; case'a': case'b': case'c': case'd': case'e': case'f': value=(value <<4)+10+aChar-'a'; break; case'A': case'B': case'C': case'D': case'E': case'F': value=(value <<4)+10+aChar-'A'; break; default: throw new IllegalArgumentException( "Malformed \\uxxxx encoding.");}} outBuffer.append((char) value);}else{ if(aChar=='t') aChar='\t'; else if(aChar=='r') aChar='\r'; else if(aChar=='n') aChar='\n'; else if(aChar=='f') aChar='\f'; outBuffer.append(aChar);}}else outBuffer.append(aChar);}//-----------------以上内容为转码过程---------------------------//将转成中文的响应结果在查看结果树中显示 prev.setResponseData(outBuffer.toString());
-
断言中文
-
3.2大小断言
返回值的大小和给定值比较
输入2000 选择>:表示返回值大小大于2000
3.3持续时间断言
只要接口的响应时间≤输入的时间,都视为断言成功,反之,断言失败
4.集合点
集合点作用:并发测试中
使用集合点:在HTTP请求中添加Synchronizing Timer(定时器)
-
配置Synchronizing Timer
-
设置每次集合的线程数:50
-
集合线程数所需要的时间:时间单位ms
-
-
注意事项:
-
集合线程数最好可以被线程组线程数整除
-
集合线程数时间:大于线程组启动线程数的时间
-
当集合线程数不能被线程组的线程数整除时,集合时间不为0
-
5.函数
5.1函数使用步骤
-
1.点击函数助手
-
2.选择需要使用的函数---counter
-
3.设置函数参数
-
必填项
-
选填项
-
-
4.点击生成
-
5.复制函数
-
6.粘贴到需要使用的位置
5.2跨线程组关联
-
1.准备测试计划 需要2个线程组
-
2.将第一个线程组中的变量,提升作用域
-
使用setProperty函数提升变量的作用域
-
属性名称:新变量名(变量提升作用域后的名称)
-
Value of property:对新变量名赋值${原变量}
-
-
-
3.在第一个线程组中添加Bean Shell取样器
-
将复制好的setproperty粘贴在beanshell中
-
-
4.设置property函数----将新变量或取出来
-
属性名称:填写提升作用域后的新变量名
-
-
5.将复制好的property函数粘贴到第二个线程组的http请求中
-
注意事项:
-
如果数据不能传递成功,在第二个线程组中添加延时启动
-