jmeter2

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请求中

  • 注意事项:

    • 如果数据不能传递成功,在第二个线程组中添加延时启动

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值