JMeter接口测试新思路——灵活使用BeanShell

news2024/11/26 13:35:40

目录

前言:

 BeanShell的简介

调用Java方法

执行Class文件

结合实际案例

总结


前言:

在JMeter进行接口测试时,我们可能会遇到需要调用Java方法或者执行Java代码的情况,这时候我们可以使用BeanShell来实现。BeanShell是一个类似于Java的脚本语言,它可以让我们使用Java语言来编写和执行脚本。

本文将详细介绍通过BeanShell调用Java方法和执行Class文件的实现方法。同时,我们也会结合实际案例来演示如何使用BeanShell来进行接口测试。让我们一起来了解吧。

 BeanShell的简介

BeanShell是一种基于Java的脚本语言,它允许我们使用Java语言来编写和执行脚本。BeanShell语言兼容Java语法,因此可以直接调用Java的API类库,并且可以直接使用Java所具有的标准数据类型,因此可以直接支持Java语言的所有操作。

BeanShell的核心类库被集成到JMeter中,因此我们可以轻松地使用BeanShell来编写和执行脚本。在接口测试的场景中,我们可以通过BeanShell来执行一些调用Java方法和执行Class文件的操作,从而更好地实现我们的测试需求。

调用Java方法

在进行接口测试的场景中,我们有时候需要执行一些Java方法,以实现我们的测试需求。比如说,我们需要测试一个方法所产生的结果是否正确,此时我们就可以通过BeanShell来调用这个方法。

具体操作步骤如下:

1、在JMeter中新建一个BeanShell Sampler。
2、在BeanShell Sampler中编写调用Java方法的代码。

示例代码:

import java.text.SimpleDateFormat;
import java.util.Date;

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String now = sdf.format(new Date());
System.out.println(now);

此代码会输出当前的日期和时间,我们可以根据实际需求来执行不同的Java方法。

执行Class文件

在进行接口测试的场景中,我们有时候需要执行一些class文件来实现我们的测试需求。比如说,我们需要测试一个class文件所产生的结果是否正确,此时我们就可以通过BeanShell来执行这个class文件。

具体操作步骤如下:

1、在JMeter中新建一个BeanShell Sampler。
2、在BeanShell Sampler中编写执行class文件的代码。

示例代码:

import java.io.*;

String command = "java -cp .;lib/* com.test.SampleTest -f data.json";
Process p = Runtime.getRuntime().exec(command);

p.waitFor();

BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line = reader.readLine();

while (line != null) {
    System.out.println(line);
    line = reader.readLine();
}

reader.close();

此代码会执行一个名为SampleTest的class文件,并将一个名为data.json的文件作为参数传递给该class文件。我们可以根据实际需求来执行不同的class文件。

结合实际案例

在接口测试的场景中,我们有时候需要测试一个接口的性能和准确性,此时我们可以使用BeanShell来实现。比如说,我们需要测试一个接口的并发请求量,此时我们就可以通过BeanShell来实现并发的请求。

具体操作步骤如下:

1、在JMeter中新建一个Thread Group。
2、在Thread Group中添加一个HTTP Request。
3、在Thread Group中添加一个BeanShell Sampler。
4、在BeanShell Sampler中编写多线程请求的代码。

示例代码:

import org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy;
import org.apache.jmeter.protocol.http.sampler.HTTPSampleResult;
import org.apache.jmeter.protocol.http.util.HTTPResultConverter;

int threadCount = Thread.currentThread().getThreadGroup().getNumThreads();

for (int i = 1; i <= threadCount; i++) {
    HTTPSamplerProxy httpSampler = ctx.getCurrentSampler();

    HTTPSamplerProxy newHttpSampler = new HTTPSamplerProxy();
    newHttpSampler.setDomain(httpSampler.getDomain());
    newHttpSampler.setPort(httpSampler.getPort());
    newHttpSampler.setPath(httpSampler.getPath());
    newHttpSampler.setMethod(httpSampler.getMethod()));

    HTTPSampleResult sampleResult = newHttpSampler.sample();
    String response = HTTPResultConverter.convertResultToString(sampleResult);

    System.out.println("Thread: " + Thread.currentThread().getName() + ", Response: " + response);
}

此代码会在BeanShell Sampler中创建多个HTTPSamplerProxy对象,并执行多线程请求。我们可以根据实际需求来设置并发请求的数量。

总结

通过本文的介绍,我们了解了BeanShell的基本概念和使用方法,并通过实际案例演示了如何调用Java方法和执行Class文件,以及如何结合BeanShell实现并发请求。在接口测试的场景中,BeanShell可以给我们带来更丰富的测试工具和功能,提高我们的测试效率和准确性。

 作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些自动化测试的必须品,如果你用得到的话可以直接拿走,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

留【自动化测试】即可【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N4P3http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=46FPXwITnxDxmv0ov2QebrZmF5SyN4iM&authKey=HPgSIg8vrQ0cjTChiHurglYUzLxWB48E441Y3HR2JEvhjV7QR0wbDE8YuEkbpJmr&noverify=0&group_code=574737577

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/627426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QuintoAndar 如何提高转化率

QuintoAndar 如何提高转化率 ——求关注、求点赞、求分享&#xff0c;二毛拜谢。 QuintoAndar 如何通过提高页面性能来提高每次会话的转化率和页面数 一个专注于优化 Core Web Vitals 并迁移到 Next.js 的项目使转换率提高了 5%&#xff0c;每个会话的页面增加了 87%。 Quint…

07.JavaWeb-Vue+elementUI

1.Vue 功能替代JavaScript和jQuery&#xff0c;基于JavaScript实现的前端框架 1.1配置Vue 1.1.1引入vue库 方法一&#xff1a;通过cdn链接引入最新版本的vue&#xff08;可能会慢些&#xff09; <head><script src"https://cdn.jsdelivr.net/npm/vue">…

基于yolov5开发构建道路路面病害检测识别系统——以捷克、印度、日本三国城市道路实况场景数据为例,开发对比分析模型并分析对应性能

城市道路病害检测是最近比较热门的一个任务领域&#xff0c;核心就是迁移深度学习目前已有的研究成果来实现实时城市道路路面病害的检测识别分析&#xff0c;在我之前的很多博文中都有做过类似桥梁、大坝、基建、隧道等水泥设施裂缝裂痕等目标检测相关的项目&#xff0c;除此之…

利用powershell脚本进行内网渗透

powershell知识点 ps1是powershell脚本的拓展名&#xff0c;就相当于cmd的.bat脚本&#xff0c;但是他更加强大。 获取版本信息 get-host #查看powershell的版本信息$psversiontable #查看powershell的版本信息执行策略 PowerShell 执行策略是一项安全功能&#xff0c;用于控…

softmax之温度系数

1.数学表示 这是传统的softmax&#xff1a; q i e x p ( z i ) ∑ j e x p ( z j ) q_i \frac{exp(z_i)}{\sum_jexp(z_j)} qi​∑j​exp(zj​)exp(zi​)​ 或者写&#xff1a; q i e x p ( z i ) / 1.0 ∑ j e x p ( z j / 1.0 ) q_i \frac{exp(z_i)/1.0}{\sum_jexp(z_j/…

《LCHub低代码指南》:ChatGPT会取代低代码开发平台吗?

目录 一、低代码开发平台的优势 1. 提高开发效率 2. 降低开发成本 3. 提高应用程序的质量 二、ChatGPT的优势 三、ChatGPT是否会取代低代码开发平台 四、结论 随着数字化时代的到来,低代码开发平台已经成为了企业数字化转型的重要工具之一。然而,随着人工智能技术的不…

提升教学质量,监督教室课堂秩序?这招小白也能轻松搞定

在当今快速发展的教育领域&#xff0c;提高教学质量和监督教师的工作表现是学校和教育机构的重要任务之一。 传统的巡课方式存在许多限制&#xff0c;如耗时、人力成本高以及数据收集和分析的困难等。为了应对这些挑战&#xff0c;越来越多的学校和教育机构转向在线巡课系统&am…

微信小程序怎么直播?

我们目前使用的小程序都是支持直播功能的&#xff0c;小程序直播功能是通过小程序直播组件实现的&#xff0c;这是微信为商家提供的实时视频直播工具&#xff0c;可以帮助商家快速通过小程序向用户提供优质的直播内容。同时&#xff0c;借助小程序丰富的营销功能&#xff0c;使…

一、Drools 规则引擎

一、问题引出 现有一个在线申请信用卡的业务场景&#xff0c;用户需要录入个人信息&#xff0c;如下图所示&#xff1a; 通过上图可以看到&#xff0c;用户录入的个人信息包括 姓名、性别、年龄、学历、电话、所在公司、职位、月收入、是否有房、是否有车、是否有信用卡等。录入…

Netty中ServerBootstrap类介绍

一、Netty基本介绍 Netty是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具&#xff0c;用以快速开发高性能、高可靠性的网络服务器和客户端程序。Netty 在保证易于开发的同时还保证了其应用的性能&#xff0c;稳定性和伸缩性。 Netty 是一…

UE5 PCG模块学习1

这次来学习一下UE5.2中正式加入的PCG功能。网上较多的案例是在Landscape地形上创建贴合地面的物体&#xff0c;博主研究了一下&#xff0c;这个案例将创建贴合Mesh的物体&#xff1a; 1.基础生成 1.首先在插件中检查Procedural Content Generation Framework是否已经被开启&…

自学黑客的12个步骤

黑客攻防是一个极具魅力的技术领域&#xff0c;但成为一名黑客毫无疑问也并不容易。你必须拥有对新技术的好奇心和积极的学习态度&#xff0c;具备很深的计算机系统、编程语言和操作系统知识&#xff0c;并乐意不断地去学习和进步。 如果你想成为一名优秀的黑客&#xff0c;下…

Java 获取七牛云存储空间中的所有图片列表

文章目录 获取七牛云密钥导入依赖编辑 YAML 配置文件添加七牛云配置类编写 QiNiuImgUrls 方法测试结果 七牛云官方文档&#xff1a;https://developer.qiniu.com/kodo/sdk/java 如果有还不会使用SpringBoot整合七牛云存储的小伙伴们&#xff0c;可以跳转查看这篇文章&#xff1…

Revit中如何画弯曲的轴网和显示实时轴号?

一、Revit中如何画弯曲的轴网 生活中&#xff0c;有很多圆筒样式的建筑&#xff0c;比如说鸟巢和土楼&#xff0c;他们的外壁是弯曲的。所以&#xff0c;当我们用Revit创建这类模型时&#xff0c;轴网就要画弯曲的&#xff0c;那么&#xff0c;Revit中如何画弯曲的轴网呢&#…

JMeter接口压测和性能监测

引言 今天我来和大家分享一篇关于JMeter接口压测和性能监测的文章。在现代互联网时代&#xff0c;应用程序的性能已经成为了一个非常重要的问题&#xff0c;并且对于许多公司的生存和发展都起着至关重要的作用。 而在这其中&#xff0c;JMeter是一个非常实用的工具&#xff0…

CSAPP - AttackLab实验(阶段1-5)

AttackLab实验 实验内容 官网&#xff1a;http://csapp.cs.cmu.edu/3e/labs.html “AttackLab”是一个Linux下的可执行C程序&#xff0c;包含了5个阶段&#xff08;phase1~phase5&#xff09;的不同内容。程序运行过程中&#xff0c;要求学生能够根据缓冲区的工作方式和程序…

【Flutter】如何移除 Flutter 右上角的 DEBUG 标识

文章目录 一、前言二、什么是 DEBUG 标识三、为什么我们需要移除 DEBUG 标识四、如何移除 DEBUG 标识五、完整代码六、总结 一、前言 欢迎来到 Flutter 的世界&#xff01;在这篇文章中&#xff0c;我们将探索 Flutter 的一些基础知识。但是&#xff0c;你知道吗&#xff1f;这…

Science:“消除噪音”量子比特实现了纠错的重大突破

光子盒研究院 在《科学》杂志的一篇新论文中&#xff0c;芝加哥大学普利兹克分子工程学院Hannes Bernien助教实验室的研究人员描述了一种不断监测量子系统周围噪音并实时调整量子比特以减少误差的方法——他们引入了“旁观者量子比特(spectator qubit)”。 尽管他们有解决新型问…

数字图像处理实验报告

目录 实验二、图像在空间域上的处理方法 实验三、图像在频率域上的处理方法 实验二、图像在空间域上的处理方法 一、实验目的 了解图像亮&#xff08;灰&#xff09;度变换与空间滤波的意义和手段&#xff1b;熟悉图像亮&#xff08;灰&#xff09;度变换与空间滤波的MATLA…

买法拍房需要注意什么

法拍房&#xff0c;由于其价格亲民、房屋信息透明度高、竞拍过程公平公正而受到越来越多的人开始关注。但是其中又有着许多的风险及相关的注意事项。那么&#xff0c;如何做到成功“捡漏”&#xff0c;买法拍房需要注意什么呢? 买法拍房需要注意什么 1、隐藏的各种收费 税费&a…