jmeter+BeanShell脚本

1、mongodb插入数据,作为BeanShell 预处理程序,在http请求执行之前执行BeanShell 预处理
1)java脚本,先调通

import com.mongodb.*;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class MongoTest {
    public static void main(String[] args) {
        ServerAddress serverAddress = new ServerAddress("10.141.62.19",27017);
        List<ServerAddress> addrs = new ArrayList<ServerAddress>();
        addrs.add(serverAddress);

        //credentials存储登录数据库管理,用户名root,authDB: admin,密码password
        MongoCredential credential = MongoCredential.createScramSha1Credential("dbuser","mondb","dbuser2017".toCharArray());
        List<MongoCredential> credentials = new ArrayList<MongoCredential>();
        credentials.add(credential);

        //登录 MongoDB服务器
        MongoClient mongoClient = new MongoClient(addrs,credentials);
        MongoDatabase mondb = mongoClient.getDatabase("mondb");
        MongoDatabase mongoDatabase = mongoClient.getDatabase("mondb");
        MongoCollection<Document> collection = mongoDatabase.getCollection("probes");
        insertMongDB(collection);
    }


    public static void insertMongDB(MongoCollection<Document> collection ) {
        Document document = new Document();
        document.put("alias", "proxy_"+System.currentTimeMillis());//时间戳
        document.put("status", -1);
        document.put("ip", "10.18.5.27");
        document.put("os", "Windows 10");
        document.put("uptime", "66");
        document.put("version", "p2.5.0.135");
        document.put("platform", "win_32");
        document.put("step", 5);
        Date now = new Date();
        document.put("timestamp", now);
        document.put("isproxy", "0");
        document.put("_class", "com.dwzq.lib.model.Probe");
        document.put("osUptime", "25395178");
        document.put("release", 0);
        document.put("updated", now);
        collection.insertOne(document);
    }
}

2)jmeter脚本,添加BeanShell 预处理程序

在这里插入图片描述
BeanShell 预处理程序脚本

import com.mongodb.*;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import org.bson.Document;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

Document document = new Document();
document.put("alias", "proxy_"+System.currentTimeMillis());//时间戳
document.put("status", -1);
document.put("ip", "10.18.5.27");
document.put("os", "Windows 10");
document.put("uptime", "66");
document.put("version", "p2.5.0.135");
document.put("platform", "win_32");
document.put("step", 5);
Date now = new Date();
document.put("timestamp", now);
document.put("isproxy", "0");
document.put("_class", "com.dwzq.lib.model.Probe");
document.put("osUptime", "25395178");
document.put("release", 0);
document.put("updated", now);

ServerAddress serverAddress = new ServerAddress("10.141.62.19",27017);
List<ServerAddress> addrs = new ArrayList<ServerAddress>();
addrs.add(serverAddress);
//credentials存储登录数据库管理,用户名root,authDB: admin,密码password
MongoCredential credential = MongoCredential.createScramSha1Credential("dbuser","mondb","dbuser2017".toCharArray());
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
credentials.add(credential);
//登录 MongoDB服务器
MongoClient mongoClient = new MongoClient(addrs,credentials);
MongoDatabase mondb = mongoClient.getDatabase("mondb");
MongoDatabase mongoDatabase = mongoClient.getDatabase("mondb");
MongoCollection<Document> collection = mongoDatabase.getCollection("probes");

collection.insertOne(document);

3)执行异常,异常信息

ERROR o.a.j.u.BeanShellInterpreter: Error invoking bsh method: eval	In file: inline evaluation of: ``import com.mongodb.*; import com.mongodb.client.MongoCollection; import com.mong

原因:Map方法中不能指定数据类型,List中也是。

List<ServerAddress> addrs = new ArrayList<ServerAddress>();
List<MongoCredential> credentials = new ArrayList<MongoCredential>();
MongoCollection<Document> collection = mongoDatabase.getCollection("probes");

修改为

List addrs = new ArrayList();
List credentials = new ArrayList();
MongoCollection collection = mongoDatabase.getCollection("probes");
### 回答1: JMeterBeanShell脚本语言是一种基于Java语言的脚本语言,它可以在JMeter中用于编写自定义的测试逻辑和数据处理逻辑。BeanShell脚本语言具有Java语言的所有特性,包括面向对象编程、变量、运算符、控制结构等,同时还支持动态编译和执行。在JMeter中,BeanShell脚本语言可以用于编写PreProcessor、PostProcessor、Sampler和Assertion等组件的逻辑代码,以实现更加灵活和定制化的测试方案。 ### 回答2: JMeter是一款功能强大的性能测试工具,其中的BeanShell脚本语言作为JMeter的一种脚本语言,可以帮助开发人员通过脚本快速实现自己所需要的功能。 BeanShell是一种基于Java语法的脚本语言,可以在JMeter中直接使用,无需编译,具有较高的灵活性。它是一种轻量级脚本语言,使用起来简单,语法与Java语言也非常相似。 使用BeanShell脚本语言可以实现JMeter中的高级编程功能,通过编写脚本代码,可以对性能测试过程进行自动化,并且可以自定义一些复杂的测试场景。 通过Beanshell脚本语言,你可以在JMeter中实现更加复杂的逻辑处理,使用它可以轻松地与Java程序相互通信,更加直观地控制测试过程,使得性能测试过程更加灵活多样化。 BeanShell脚本语言有许多的应用场景,例如当测试过程的需求超出了JMeter本身提供的功能,可以利用BeanShell进行自定义功能的实现,自定义数据生成器或者完成一个复杂的算法等,还可以通过各种方法来对请求参数进行更细致的处理等。 总之,BeanShell脚本语言不仅提供了一种简单的解决方案,而且它还可以将许多常见的测试情况转变为可以重用的代码模块。JMeter中使用BeanShell脚本语言确实可以为我们的测试工作带来更高的效率和更多的便利。 ### 回答3: Apache JMeter是一款广泛使用的开源软件,主要用于对Web应用程序进行性能测试。 JMeter可以模拟大量用户同时请求Web服务器,并能够提供对服务器的负载测试。同时,JMeter还具备一些强大的功能,例如多种协议支持,测试结果分析等。而beanshell脚本语言是JMeter的一种特殊功能,它可以使用户自定义执行JMeter任务所需的Java代码的功能。 Beanshell脚本语言是Java语言的一个简化实现。在JMeter中,它提供了与Java API的完全兼容性。因此,它可以在JMeter测试计划中以与Java相同的方式引用对象和执行Java代码。它还包含了许多自己的语法。 Beanshell脚本语言的主要功能包括: 首先,Beanshell脚本语言可以访问JMeter所使用的Java对象。由于JMeter使用Java编写,因此它能够访问Java API和其他外部库,例如JDBC数据库驱动程序和SOAP / REST客户端等。这使得脚本语言成为JMeter的一个特别重要的功能,因为它可以让用户轻松地扩展测试计划并访问其他系统中的数据。 其次,Beanshell脚本语言可以用于自定义高级脚本执行顺序。这允许用户控制脚本的执行方式。脚本语言可以添加到测试计划中,以执行特定的操作或操作序列。脚本语言可以在测试计划中的多个点中触发,这使得脚本语言非常灵活和可配置。 第三,Beanshell脚本语言可以用于在测试运行期间的动态变量和属性设置。该脚本语言可以访问测试中使用的变量和属性,以及计算结果。通过Beanshell脚本语言自定义的动态变量设置,可以使用户自定义测试场景,并且可以在多个测试场景之间共享。 第四,Beanshell脚本语言可以用于处理性能测试数据,并且可以基于这些数据更好地优化Web应用程序。通过Beanshell脚本,可以自动捕获和操作JMeter性能测试的数据,从而优化应用程序并提高性能。 总结起来,Beanshell脚本语言是JMeter的一个非常强大的功能。它可以让用户自由扩展测试计划,自定义执行顺序,动态变量和属性设置,并处理性能测试数据等。因此,它是JMeter有效性能测试的关键一环,让测试变得更加灵活和可扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值