jmeter - 各类型接口及beanshell

一、webservice接口

Post接口的参数格式
1、键值对:key=value
2、Json字符串:{"a":"b"}
3、二进制数据
4、xml (webservice

关键点:
1、添加http post请求
2、添加header:Content-type:text/xml

二、TCP取样器

一种安全可靠的协议,很多其他协议,比如HTTP,底层使用的就是TCP
特点:
1、调用tcp接口时,只需要配置接口的ip和端口号即可,不需要url和路径
2、客户端在调用tcp接口时,必须配置接口返回数据的最后一个字符,作为传输结束的标识符。客户端接受到服务端返回数据时,如果最后一个字符和配置的标识符相一致,则认为服务端数据传输完毕,关闭链接,否则,就会一直等待
3、在jmeter里,需要把结束标识符转换为ASCII码,然后配置到行尾字节值
参数类型:
1、xml
2、Json
3、普通文本
4、十六进制

三、JDBC请求

1、先在测试计划处添加数据库的驱动包
2、添加JDBC Connection Configuration,配置数据库相关信息
3、添加jdbc request,编写SQL

两种SQL的类型:
1、select语句:select
2、update语句:insert、update、delete

查询类型:
1、普通的类型(select、update)
2、预编译类型(带prepared),特点是SQL语句的性能比较好,执行速度快。如果SQL语句做参数化的话,动态的数据用?代替
3、参数类型(parameter type)
    a> VARCHAR:字符串
    b> INTEGER:整数

四、websocket


对于实时性要求比较高的业务场景(IM聊天、网络直播等)
如果采用HTTP协议,为了保证实时性,只能使用客户端轮询的策略来实现,这种策略会对服务器产生很大的压力
websocket协议可以实现服务端主动推送,当有数据时,主动推送给客户端

需要安装插件

1、建立连接 websocket open connetion

2、发送请求响应

3、读取响应

4、关闭

四、beanshell

BeanShell执行标准Java语句和表达式,另外包括一些脚本命令和语法。

4.1 BeanShell内置变量

beanshell脚本中不用定义,可以直接使用的变量,常用的内置变量和方法如下
log:写日志到控制台和jmeter.log,如log.info(“xxxxx”);
vars:操作jmeter变量

vars.get(“skuId”);从jmeter中获取${skuId}变量的值
vars.put(“name”,”test”);将”test”保存到${name}变量中
prev:获取前面sampler返回的信息
getResponseDataAsString():获取响应信息
getResponseCode():获取响应code

4.2 BeanShell使用方式一  (判断)

需求:
1、调用接口获取sku信息
2、判断库存,如果库存大于500,调用buy接口购买10个商品,否则购买5个商品
// 获取接口返回的库存值
String myStock = vars.get(“p_stock”);
// 转换为整数
int iStock = Integer.parseInt(myStock);

// 判断库存
if (iStock > 500){
// 重新保存参数
vars.put(“buyNum”,"10");
}else{
vars.put(buyNum”,"5");

4.3 BeanShell使用方式二(引用外部java源文件)

// 引入源代码
source(“D:/Md5Util.java”);

// 生成随机手机号
String phone = "135${__Random(10000000,99999999,myPhone)}";
String code = "testfan";
// 生成时间戳
String time = "${__time(,myTime)}";
// 调用外部函数进行加密
String md5 = Md5Util.getMd5Hex(phone+code+time);
// 将数据另存为新的变量
vars.put("phone",phone);
vars.put("md5",md5);

4.4 BeanShell使用方式二(引用外部jar包)

1、测试计划,Add directory or jar to classpath(导入)
2、import 所需要的类名
import com.lee.util.Md5Util

// 生成随机手机号
String phone = "135${__Random(10000000,99999999,myPhone)}";
String code = "testfan";
// 生成时间戳
String time = "${__time(,myTime)}";
// 调用外部函数进行加密
String md5 = Md5Util.getMd5Hex(phone+code+time);
// 将数据另存为新的变量
vars.put("phone",phone);
vars.put("md5",md5);

你可能感兴趣的:(jmeter,java,servlet)