Jmeter加解密&脚本录制&Bean Shell脚本语言&数据库操作以及Jenkins集成

一、如何通过Jenkins来执行ant命令
jmeter+ant+jenkins实现接口自动化测试。
jenkins的安装按照文档一步一步去安装。
1.设置工作空间
2.执行windows的批处理命令以及执行Crooxy脚本。
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")
3.指定HTML报告
二、Bean Shell编程
beanshell是一种完全符合java语言的脚本语言,同时它本身也有自己的语法和方法。
它主要有六个Beanshell组件
1.Beanshell 前置处理器
2.beanshell定时器
3.beanshell后置处理器
4.beanshell断言
5.beanshell监听器
6.beanshell采样器
三、Beanshell常用变量和语法
1.打印
log.info("王强");
log.error("小强报错了");
System.out.println("java代码");
2.操作jmeter的局部变量(只能在一个线程组里面使用的变量)
vars.put("name","小强");
log.info(vars.get("name"));
bearer_token = "Bearer: "+vars.get("tokens");
log.info(bearer_token)
3.操作Jmeter的全局变量(跨线程组里面使用的变量)
props.put("name","小强");
log.info(props.get("name"));
第一段代码:先通过vars获得局部变量并拼接,然后通过pops设置成全局变量。
bearer_token = "Bearer:"+vars.get("tokens");
log.info(bearer_token);

props.put("bearer_token",bearer_token);
第二段代码:先通过props获得全局变量,然后再通过vars设置成局部变量。
props_token = props.get("bearer_token");

log.info("props_token:"+props_token);

vars.put("props_token",props_token);
另外一种方式:
${__setProperty(ms_token,小强,)}
/cgi-bin/token?props_token=${__P(ms_token,)}
4.获得前一个取样器返回的信息
log.info(prev.getResponseCode());
log.info(prev.getResponseDataAsString());
5.beanshell调用java文件,jar文件,class文件。(RSA加密,混合加密,签名Sign接口)
beanshell调用java文件中的方法
//引入java文件
source("E:\\ants\\Test.java");

//通过类生成一个对象
sum = new Test().add(2,3);
//使用sum
log.info(sum.toString());
beanshell调用jar文件中的方法
1.在测试计划中加入jar文件
2.写脚本
import mashang.Test;
//通过类生成一个对象
sum = new Test().add(2,3);
//使用sum
log.info(sum.toString());
beanshell调用class文件中的方法
addClassPath("E:\\ants");
import mashang.Test;
//通过类生成一个对象
sum = new Test().add(2,3);
//使用sum
log.info(sum.toString());
四、BeanShell断言
//先获取到接口的返回值
return_value = prev.getResponseDataAsString();
//获取到数据文件中断言字符串的值
assert_str = vars.get("assert_str");
log.info("return_value:"+return_value);
log.info("assert_str:"+assert_str);
//判断return_value中是否包含有assert_str
加密的网址:
if(return_value.contains(assert_str)){

Failure = false;
FailureMessage = "断言成功";
}else{
Failure = true;
FailureMessage = "断言失败";
}
五、BeanShell断言+数据库断言
连接路径:jdbc:mysql://47.107.116.139:3306/phpwind
驱动类:com.mysql.jdbc.Driver
用户名:root
密码:?
log.info(vars.getObject("result").get(0).get("username"));
log.info(vars.getObject("result").get(0).get("password"));
//数据库中的值
username = vars.getObject("result").get(0).get("username");
//先获取到接口的返回值
return_value = prev.getResponseDataAsString();
//判断return_value中是否包含有assert_str
if(return_value.contains(username)){
Failure = false; 10
FailureMessage = "断言成功";
 }else{
Failure = true;
FailureMessage = "断言失败";
 }
六、Jmeter测试加密接口
加密的网址:www.bejson.com
对称式加密:Base64加密,
un = Base64.getEncoder().encodeToString("admin".getBytes("UTF-8"));
un_to_uc = un.toUpperCase();
vars.put("un_to_uc",un_to_uc);
pw = Base64.getEncoder().encodeToString("123".getBytes("UTF-8"));
pw_to_uc = pw.toUpperCase();
vars.put("pw_to_uc",pw_to_uc);
log.info(un_to_uc);
log.info(pw_to_uc);
只加密不解密:SHA系列,MD5
MD5
${__javaScript("${__digest(MD5,admin,,,)}".toUpperCase(),)}
SHA
${__digest(SHA-256,admin,,,)
非对称式加密:RSA
posted @ 2022-10-06 20:56  进一步海阔天空  阅读(12)  评论(0编辑  收藏  举报