Jmeter如何生成合法的身份证号

简介: Jmeter生成身份证号的三种方式:1.函数助手;2.CSV Data Set Config;3.Python+Beanshell;

引言

前几天在某个软件测试群里看到有网友提问“如何在Jmeter中生成合法的身份证号”,当时出于热心,提供了大体的实现思路,但后来仔细想了想,回复地可能不是特别具体,于是决定自己实践一次。

在使用Jmeter进行自动化测试或性能测试过程中,生成身份证号的方法有多种,需要结合具体的接口校验规则来综合选择:

1、接口对身份证号参数无重复性校验、无合法性校验时

  • 可以使用函数助手,生成一个18位长度的字符串

2、接口对身份证号参数无重复性校验、但有合法性校验时

  • 可以使用CSV Data Set Config:提前将在其他地方找到的合法的身份证号数据复制到CSV文件中,并添加CSV Data Set Config元件,设置变量名id_card,在需要引用的地方使用${id_card}来引用

3、接口对身份证号参数有重复性校验、且有合法性校验时

很显然,以上两种实现方式无法满足需求,因为第一种方式生成的18位数字无法通过合法性校验,第2种通过读取CSV数据文件的方式,虽然能通过合法性校验,但每次都会重复从头开始读取,当多次运行Jmeter脚本时,传参就会重复,因此需要每运行一次Jmeter脚本就可以生成一个合法的、且随机的身份证号,总体实现思路如下:

  • ① python里有现成的第三方库faker库可以生成身份证号,编写一个python文件,引用faker库,定义一个生成身份证号的函数
  • ② 然后在jmeter中添加一个beanshell取样器,在取样器中调用cmd执行python文件,定义一个变量来接收函数返回值,也就是身份证号

  • python文件create_ssn.py文件内容如下:
# coding:utf-8fromfakerimportFakerfake=Faker(locale="zh_CN")
defcreate_ssn():
ssn=fake.ssn()
print(ssn)
returnssnif__name__=='__main__':
create_ssn()
  • Beanshell脚本内容如下
String command ="cmd /c python C:\\create_ssn.py";
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);
pr.waitFor();
BufferedReader b = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line ="";
StringBuilder response = new StringBuilder();
while ((line = b.readLine()) != null) {
 response.append(line);
}
 String response_data = response.toString();
 System.out.println("身份证号:"+ response_data);
 b.close();
 vars.put("ssn",response.toString());

注意事项:

1.第一行中的cmd /c 可以省略,如果是Windows可以加,如果是Mac或Linux系统,一定不能加

2.py文件路径不能带有空格,路径分隔要用双斜杠

  • 运行后,在调试取样器中可以看到变量ssn的值

总结

以上就是利用python的faker库+Beanshell取样器生成身份证号的整体实现过程,此外还可以借助这种方式生成姓名、手机号、银行卡号、省市区地址等多种数据。当然,生成测试数据的方式有很多种,主要看个人选择。

相关文章
|
测试技术
JMeter 随机数生成器详细指南:利用 Random 和 UUID 实现
在压力测试中,经常需要生成随机值来模拟用户行为。JMeter 提供了多种方式来生成随机值,本文来具体介绍一下。
|
消息中间件 Java Spring
RocketMQ-JAVA客户端不同版本接入方式
RocketMQ4.0 RocketMQ5.0 JAVA接入 spring springboot
RocketMQ-JAVA客户端不同版本接入方式
|
XML 域名解析 JSON
【RESTful】RESTful API 接口设计规范 | 示例
【RESTful】RESTful API 接口设计规范 | 示例
12580 0
【RESTful】RESTful API 接口设计规范 | 示例
|
Java 关系型数据库 MySQL
IDEA(Community版)数据库插件Database Navigator的安装与使用教程
IDEA(Community版)数据库插件Database Navigator的安装与使用教程
IDEA(Community版)数据库插件Database Navigator的安装与使用教程
|
监控 Linux
jmeter-性能监控CPU、内存、IO等-监控插件详解(1)
jmeter-性能监控CPU、内存、IO等-监控插件详解(1)
jmeter-性能监控CPU、内存、IO等-监控插件详解(1)
|
12月前
|
Java
Java实现随机生成某个省某个市的身份证号?如何编码?
【10月更文挑战第18天】Java实现随机生成某个省某个市的身份证号?如何编码?
805 5
|
10月前
|
人工智能 IDE 程序员
GitHub Copilot 免费了!程序员们的福音来了!
《GitHub Copilot 免费了!程序员们的福音来了!》 近日,GitHub 宣布其 AI 编程助手 GitHub Copilot 现在可以免费使用。曾经每月需支付 10 美元订阅费的 Copilot,现在向所有人开放免费版本,这对个人开发者、初学者和小型团队来说是个大好消息。免费版支持 GPT 和 Claude 模型,并提供每月 2000 次代码补全和 50 条聊天消息等核心功能。用户只需注册或登录 GitHub 账户,在 VS Code 中安装扩展并激活免费版即可使用。此外,Visual Studio Code 也完全免费,进一步降低了开发门槛。 除了
11400 7
GitHub Copilot 免费了!程序员们的福音来了!
|
Java Maven
SpringBoot项目的用maven插件打包报Test错误
SpringBoot项目的用maven插件打包报Test错误
390 1
|
算法 Java
java生成一个随机的身份证号
【10月更文挑战第5天】java生成一个随机的身份证号
943 1