国内独家,用 jmeter 对 mongodb 进行测试方法合集

MongoDB 作为非关系型数据库,在现在企业中,还是有广泛的使用。但是,用 jmeter 如何测试 MongoDB,却是一个令很多人头疼的问题。去搜索,国内基本找不到一篇比较有价值的文章。

今天,我就用三种不同方法,系统介绍用 jmeter 如何测试 MongoDB。

方法一: 使用 jmeter 自带 MongoDB 取样器

如果你现在打开 jmeter,你在取样器下面查找,你可能已经找不到 MongoDB 的取样器。因为,官方已经把这个取样器下架了,不过,你还可以把它上架。

找到 jmeter 的属性配置文件 jmeter.properties 文件,搜索 'not_in_menu' ,你会发现 MongoDB 相关的元件入口在这个地方下架的。只有你把 MongoDB 相关的从下面移除出来就可以了。

重启 jmeter,就可以在配置元件中,找到 MongoDB Source Config,在取样器下面,找到 MongoDB Script

MongoDB Source Config 中配置 Server Address List: mongodb://mongo 服务器 ip:端口 MongoDB Source 中自定义一个资源名

mongodb20210205162828.png

MongoDB Script 中配置 MongoDB Source 为上一步配置的资源名 Database Name 中填写数据名

然后,在 script 中,写上你要值的脚本

mongodb20210205162938.png

mongodb20210205163021.png

方法二:写 python 脚本调用 MongoDB

可能很多同学都还有误解,说 jmeter 不支持 python 语言。这在我们机构,我给 VIP 学生上课的时候,我反反复复在纠正这个误解,我告诉我的学生,Jmeter 其实支持不少于 4 种程序语言。

现在,我就先给大家讲用 python 语言,如何实现对 MongoDB 数据库进行操作。

首先,先确保有这么一台图形界面电脑,电脑中安装了 python2.7 和 jdk1.8 及以上版本。虽然 python2 已经不维护了,但是一般的 Linux 系统还是自带这个版本的,而为什么要有 jdk1.8 及以上的版本,这个应该不用我多说,用过 jmeter 都知道。

然后,我们要去下载 jython-standalone-2.7.2.jar 包 把这个 jar 包下载下来后,放入到 jmeter 的 lib 文件夹中。

接下来,我们就可以启动 jmeter 来写 python2 脚本,调用 MongoDB 了。

当然,我们要调 MongoDB,肯定需要有 MongoDB 服务;写 python 脚本,可能你更喜欢用 pycharm,你可以自己下载安装;python 调用 MongoDB 还需要 pymongo 库,也需要用 pip 命令去下载安装。这些都是工欲善其事必先利其器的事,请自行安装。

可以在 pycharm 中,参考如下脚本,调试一个 python2 调用 MongoDB 的脚本

 

#!/usr/bin/python
# -*- coding:UTF-8 -*-

import json
import requests
from pymongo import MongoClient

# 调用被测试服务器接口,获取响应
# 响应体为 json 格式
rsp = requests.get("http://被测试服务器ip:端口/接口地址").text

try:
    # 连接mongodb服务器
    mg = MongoClient("mongodb服务器ip", 27017)	# 27017默认端口
    # 连接 mongodb数据库,jmeterdata为数据库名
    db = mg['jmeterdata']
    # 连接 mongodb 数据集,jdata为数据集名
    collection = db['jdata']
    # 向mongodb中插入 上面接口返回的响应信息
    collection.insert_one(json.loads(rsp, encoding='utf8'))
except Exception as e:
    print e

执行该脚本,如果没有报错,则可以在 MongoDB 数据库中,查看是否有数据插入。

接下来,在 jmeter 中,线程组下,新增 JSR223 Sampler 取样器,语言选择' jython {python2.7 / jython2.7.2}'

mongodb20210205130919.png

在脚本区域黏贴之前调试好的脚本,稍做改动,可参考如下:

 

import sys
sys.path.append("/home/用户名/.local/lib/python2.7/site-packages")
import json
from pymongo import MongoClient

try:
    # 连接mongodb服务器
    mg = MongoClient("mongodb服务器ip", 27017)	# 27017默认端口
    # 连接 mongodb数据库,jmeterdata为数据库名
    db = mg['jmeterdata']
    # 连接 mongodb 数据集,jdata为数据集名
	collection = db['jdata']
    # 格式化响应信息 
    # vars.get("result") 为获取前面jmeter调接口响应信息用json提取器提取的给result值
	colvalue = json.loads(vars.get("result"), encoding='utf8')
    # 向mongodb中插入 上面接口返回的响应信息
	collection.insert_one(colvalue)
except Exception as e:
	SampleResult.setSuccessful(false);
	SampleResult.setResponseCode("500");
	SampleResult.setResponseMessage("Exception: " + e);

**注意:**此脚本使用的第三方库,需要加载 python2 的库文件,不然将无法引入 pymongo

调用脚本,会发现 jsr223 取样器响应正常,从 MongoDB 数据库中,就可以正常查找到插入的信息。

方法三:写 groovy 脚本调用 MongoDB

groovy 语言,我就不做过多介绍,它是一种类 Java 语言,不懂的,可以当 Java 语言理解。

首先,你要知道你的 MongoDB 服务器的版本,因为 jmeter 自带的 mongo-java-driver 版本过低,如果你的 mongo 版本比较高,用自带的是不能正常运行脚本的。

mongojavadrivercompatibility.png

这张图,告诉你驱动版本与 MongoDB 版本兼容关系。

然后,在 maven 仓库中,文件搜索,搜索关键词 ’mongo-java-driver‘ 然后选择你需要的 jar 包下载。

然后,把下载的 mongo-java-driver-*.jar 包放到 jmeter 的 lib 中,备份原来的 mongo-java-driver-2.11.3.jar 包

然后,重启 jmeter,在线程组下,新增 JSR223 Sampler, 语言选择 groovy {Groovy 3.0.7 / Groovy Scripting Engine 2.0}

然后,阅读 mongodb-java 对应的 API 文档,如我用的 3.8 的 jar 包文档

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

// 建立数据库连接
MongoClient mongoClient = MongoClients.create("mongodb://mongodb服务器ip:27017");
// 连接 数据库  jmeterdata为数据库名
MongoDatabase database = mongoClient.getDatabase("jmeterdata");
// 连接 数据集 jdata为数据集名
MongoCollection<Document> collection = database.getCollection("jdata");

// 构造数据
Document doc = new Document("name", "MongoDB")
                .append("type", "database")
                .append("count", 1)
                .append("versions", Arrays.asList("v3.2", "v3.0", "v2.6"))
                .append("info", new Document("x", 203).append("y", 102));
// 插入1条数据
collection.insertOne(doc);

mongodb20210205155951.png

执行请求,请求成功。查看 MongoDB 服务器,发现数据库中多了一条数据。

好了,三种方法都给大家讲了,你学到了吗?记得动手操作哦。

喜欢对你有帮助的话记得加个关注不迷路哦

个人主页有领取方式,可以领取到一些个人收集的软件测试工具、面试题、资料包,无偿的,需要的私信小编“资料或许对你有帮助!

点击链接领取

软件测试全套基础/进阶/转行资料

感谢各位大大的阅读 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值