目录
前言
在进行接口或者性能测试的时候,我们经常需要通过各种方式生成一些假数据,例如随机数、时间字符串、用户名、身份证、手机号等等等等。如果是使用 JMeter 来进行上述的测试,通常情况下会有以下几种生成数据的方式。
使用 JMeter 的各种内置方法
根据 JMeter 的 官方文档,我们可以通过使用其提供的各种内置函数来构造数据。
例如,通过 `${__Random(0,10)}` 来生成一个 1 到 10 之间的数字,通过 `${__UUID()}` 来得到一个 `c69e0dd1-ac6b-4f2b-8d59-5d4e8743eecd` 格式的 UUID,通过 `${__time()}` 和 `${__timeShift()}` 函数来得到一个特定格式、特定时间的时间字符串。
这种方式使用起来较为方便,但是由于 JMeter 本身提供的内置函数比较有限,对于像用户邮箱、中文名、身份证号、国内地址等这样一些较为复杂,或者有特定格式要求的数据来讲,可能就需要多个、多种内置函数相互组合,或者通过下面一种方式来进行处理了。
使用 Beanshell、JSR223 脚本生成数据
JMeter 支持添加前后置脚本(Pre Processor)及脚本采样器(Sampler),脚本语言可以使用 Beanshell 或者 JSR223 规范下的 Groovy、Jexl、JavaScript 及 Python 等(部分语言需要额外安装对应引擎),想要什么数据都可以通过写脚本的方式来实现,理论上可以构造出任何想要的数据。
例如在 https://www.cnblogs.com/xuelei-0728/p/12938186.html 这边文章中介绍的,可以通过 Beanshell 来生成一个合法的身份证号。
这种方式的数据构造能力和灵活性十分强大,但是需要使用者对对应的脚本语言有一定的了解,脚本内容可能比较长,复用性也比较差,接下来介绍到的第三种方式则可以比较好的解决这几个问题。
使用已经封装好的 JMeter 插件或依赖包
由于 JMeter 有着比较灵活的插件体系并且可以额外引入 Jar 包等依赖,我们可以将常用的数据构造函数包装成 JMeter 插件或者 Jar 包。这样就可以通过类似 `${__Func1()}` 这样的格式来引用插件中定义的 JMeter 方法,或者在脚本中引入依赖来简化脚本的编写工作量。
这种方式在某种程度上是对方法1和2的扩展,可以让团队中有开发能力的同学来制作插件和依赖包,其他成员直接引用就 OK 了。
基于 Mock.js 的 JMeter 插件
最后要介绍的其实是基于方法3的一个实践,通过把 Mock.js 这个功能比较完善的生成随机数据的 JavaScript 库,包装成一个 JMeter 插件的方式,在 JMeter 中即可通过 ${__Mock(@id)} 这样的方式来快速生成数据。
安装方式也比较简单,同其他 JMeter 插件一样,只需要 https://github.com/metersphere/jmeter-functions/releases 从这里下载到最新的插件 Jar 包,放置到 JMeter 安装目录中的 lib/ext/ 目录下重启 JMeter 就 OK 了。
支持的随机函数也很丰富,基本上常见的数据类型都已经内置了,具体可以参考 Mock.js 文档中对于 Mock.Random 的介绍。(https://github.com/nuysoft/Mock/wiki/Mock.Random)
原文地址:https://blog.csdn.net/zhen675654546/article/details/118556102
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。