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