Apache JMeter:在正文中为请求添加随机数据
Apache JMeter : Add random data in body for request
我正在 Apache JMeter 中对我们的应用程序进行压力测试。
我想到调用注册用户方法,这将在数据库中添加用户。但如果电子邮件已经存在,则数据库操作不会发生。
如何在正文数据中添加随机数?还是有其他方法可以对与数据库连接的应用程序进行压力测试?
以下是一些屏幕截图:
控制器代码:
@RequestMapping(value = "/person/add", method = RequestMethod.POST)
public String addPerson(@ModelAttribute("person") Person person, BindingResult bindingResult) {
System.out.println("Person add called"+person.getUsername());
person.setUsername(this.stripHTML(person.getUsername()));
int personId = this.personService.addPerson(person);
if (!(personId == 0)) {
Person person1 = this.personService.getPersonById(personId);
Collection<GrantedAuthority> authorities = new ArrayList<>();
authorities.add(new SimpleGrantedAuthority("ROLE_USER"));
Authentication authentication = new UsernamePasswordAuthenticationToken(person1, null, authorities);
SecurityContextHolder.getContext().setAuthentication(authentication);
return "redirect:/canvaslisting";
} else {
return "redirect:/";
}
}
使用 Random Variable 和变量名 emailValue 并在请求中发送 ${emailValue}
使用JDBC request到您的数据库中创建随机数或序列并保存在变量名emailValue
使用UUID函数创建uniqueId并发送到邮箱${uniqueId}@gmail.com 例如
看看JMeter Functions喜欢:
- __Random() - 生成给定范围内的随机数
- __RandomString() - 根据给定的输入生成随机字符串
- __threadNum() - 其中returns当前线程号
- __UUID() - returns 一个独特的 GUID 结构
- __time() - returns 不同格式的当前时间戳
- 以上任意组合
JMeter 函数可以在测试中的任何地方使用,因此您可以将它们直接放入您的请求正文中。
更多建议:
- 不要使用 JMeter GUI 进行负载测试 运行,GUI 模式专为测试开发和调试而设计,测试本身需要 运行 in command-line non-GUI mode
- 从测试计划中删除所有侦听器,同时 运行将您的负载测试设置为 JMeter listeners are very resource intensive 并产生不必要的开销。
我的示例 __UUID
对于 POST 请求,确保 Content-Type 在 HTTP Header Manger , application/json 例如。
我正在 Apache JMeter 中对我们的应用程序进行压力测试。
我想到调用注册用户方法,这将在数据库中添加用户。但如果电子邮件已经存在,则数据库操作不会发生。
如何在正文数据中添加随机数?还是有其他方法可以对与数据库连接的应用程序进行压力测试?
以下是一些屏幕截图:
控制器代码:
@RequestMapping(value = "/person/add", method = RequestMethod.POST)
public String addPerson(@ModelAttribute("person") Person person, BindingResult bindingResult) {
System.out.println("Person add called"+person.getUsername());
person.setUsername(this.stripHTML(person.getUsername()));
int personId = this.personService.addPerson(person);
if (!(personId == 0)) {
Person person1 = this.personService.getPersonById(personId);
Collection<GrantedAuthority> authorities = new ArrayList<>();
authorities.add(new SimpleGrantedAuthority("ROLE_USER"));
Authentication authentication = new UsernamePasswordAuthenticationToken(person1, null, authorities);
SecurityContextHolder.getContext().setAuthentication(authentication);
return "redirect:/canvaslisting";
} else {
return "redirect:/";
}
}
使用 Random Variable 和变量名 emailValue 并在请求中发送 ${emailValue}
使用JDBC request到您的数据库中创建随机数或序列并保存在变量名emailValue
使用UUID函数创建uniqueId并发送到邮箱${uniqueId}@gmail.com 例如
看看JMeter Functions喜欢:
- __Random() - 生成给定范围内的随机数
- __RandomString() - 根据给定的输入生成随机字符串
- __threadNum() - 其中returns当前线程号
- __UUID() - returns 一个独特的 GUID 结构
- __time() - returns 不同格式的当前时间戳
- 以上任意组合
JMeter 函数可以在测试中的任何地方使用,因此您可以将它们直接放入您的请求正文中。
更多建议:
- 不要使用 JMeter GUI 进行负载测试 运行,GUI 模式专为测试开发和调试而设计,测试本身需要 运行 in command-line non-GUI mode
- 从测试计划中删除所有侦听器,同时 运行将您的负载测试设置为 JMeter listeners are very resource intensive 并产生不必要的开销。
我的示例 __UUID
对于 POST 请求,确保 Content-Type 在 HTTP Header Manger , application/json 例如。