秦州建设网站,离石网站建设,个人网页设计制作网站模板,个人网站开发 服务器一、什么是BeanShell#xff1f;
BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器#xff0c;JMeter性能测试工具也充分接纳了BeanShell解释器#xff0c;封装成了可配置的BeanShell前置和后置处理器#xff0c;分别是
BeanShell Pre…一、什么是BeanShell
BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器JMeter性能测试工具也充分接纳了BeanShell解释器封装成了可配置的BeanShell前置和后置处理器分别是
BeanShell PreprocessorBeanShell预处理程序和BeanShell Postprocessor(BeanShell后置处理程序)能通过编写代码的方式更好的处理接口性能测试中的请求前置入参和后置数据的获取等等。BeanShell配置原件在JMeter的位置如下图
BeanShell PreprocessorBeanShell预处理程序 BeanShell Postprocessor(BeanShell后置处理程序) 二、BeanShell PreprocessorBeanShell预处理程序的基本应用
在进行接口性能测试时往往经常用到的场景就是每次api请求的入参都是变化的比如有些接口请求参数有时间戳、或者很多时候后台为了保证接口请求的安全性需要请求携带sign入参甚至这个sign是通过加密算法得到的。也就是说这样的接口基本都是每次请求前需要构建不同的入参数据。因此在对这样的接口做并发测试时就需要参数化请求入参BeanShell PreprocessorBeanShell预处理程序这样的前置处理器就可以很方便构建参数化入参。看看如下实例可以参数化时间戳、参数化sign签名。
添加BeanShell Preprocessor前置处理器在脚本编辑框中编辑如下代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 // 导入MD5加密需要用到的jar包。 import org.apache.commons.codec.digest.DigestUtils; // 声明你需要拼接的字符串 //String requestTime 1680089472000; //生成时间戳 String requestTime ${__time(,)}; //生成时间戳 log.info(请求时间戳requestTime); String yan N[8HXx!57Ivy%)#R; //拼接需要加密的字符串 String str yan requestTime; // 加密已拼接的字符串 String sign DigestUtils.md5Hex(str); log.info(sign签名sign); vars.put(sign,sign); //设置变量,将md5加密后的值传递给变量sign vars.put(requestTime, requestTime); //将时间传递给变量requestTime 如上的BeanShell脚本中定义了两个字符串requestTime 和sign设置了它们的取值其中requestTime的值是${__time(,)}该函数可以按当前时间生成时间戳sign的值是进行了md5加密后生成了一个32位小写的字符串并将值传给变量requestTime 和sign用于后续接口请求参数化然后脚本中也加入了日志打印接口请求后可以在日志查看中输出参数日志信息
效果如下图 这样就完成了BeanShell预处理脚本的编写然后我们将脚本中的requestTime 和sign参数引入接口请求中如下图 最后BeanShell预处理脚本以及请求参数化配置好后我们运行JMeter看看请求效果和日志打印请求2次接口 可以看到每次请求的时间戳和sign值都不一样请求响应结果都是返回正确的。这样就完成了jmeter并发请求每次都是不一样的请求入参。
三、BeanShell PostprocessorBeanShell后置处理程序的基本应用
BeanShell PostprocessorBeanShell后置处理程序其实就是通过脚本来获取响应相关的数据用于做一些和其他接口有交互的场景如接口A的响应结果的某个字段用于接口B的入参的时候就可以通过BeanShell PostprocessorBeanShell后置处理程序来提取到接口A的响应结果的数据然后参数化传递给接口B或者将提取的数据写入文件等。当然JMeter也提供了类似正则表达式提取器、json提取器等后置处理元件来提取响应或者请求数据BeanShell PostprocessorBeanShell后置处理程序可能更方便通过脚本来自定义获取想要的数据。
添加BeanShell Postprocessor后置处理器比如我们想要获取请求后的响应状态码、响应头响应体等数据都是可以的。在脚本编辑框中编辑脚本如下图 这样我们就可以得到响应状态码、响应体、响应头等数据用于后续接口响应断言等测试验证运行结果如下 如上就是BeanShell Postprocessor后置处理器的基本应用了当然还可以编写更加适用于测试场景的脚本和逻辑满足测试需要。 2023最新Jmeter接口测试从入门到精通全套项目实战教程