Jmeter中有关随机参数的那些事

发表于:2019-10-17 13:41

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:大帆船    来源:搜狗测试

  相信大家已经看过前面一些介绍jmeter文章,对这个测试工具已经有了“深入”的了解。在接口测试中,通常我们发送的请求不是一成不变的,使用参数化功能可以解决对不同数据的需求,但对于需要随机参数的地方,我们需要另外的一些方法。今天我就来介绍一下jmeter中很重要的一类功能——随机参数。
  一、利用Jmeter内置函数方法生成随机参数
  Jmeter中内置了一些十分方便实用的函数,可以大大丰富我们测试的内容与覆盖度。其中有一类含Random关键字的函数便是我们本次介绍的主题。从函数的名字就可以看出,它们都是与随机有关的,下面我就来简单介绍一下它们的用法。
  提示:
  在jmeter中,可以使用函数助手来快速生成函数,调用函数时无需手动输入整个函数,只要设置几个参数值,点击Generate & Copy to clipboard即可自动生成完整的函数,粘贴至需要的位置即可:
  函数助手菜单栏入口
  1、__Random函数
  最常用的随机函数之一,可以生成一定范围内的随机整数。
  函数助手中的参数设置
  参数说明:
  第一个参数:范围下限
  第二个参数:范围上限
  第三个参数:函数值返回的目标参数(变量)
  使用举例:
  在合成主播项目的测试中,每次发送文本需要用到不同的文本序号,可以用__Random函数生成,如下图所示:
  json中的seqNo字段设置为100-999范围内随机数字
  2、__RandomString函数
  与__Random函数类似,用于生成随机字符串,可以生成一定长度的、由指定字符组成的随机字符串。
  函数助手中的参数设置
  参数说明:
  第一个参数:字符串长度
  第二个参数:用于生成随机字符串的字符
  第三个参数:函数值返回的目标参数(变量)
  3、__RandomDate函数
  与__Random函数类似,用于生成一定时间范围内的随机日期。
  函数助手中的参数设置
  参数说明:
  第一个参数:日期格式
  第二个参数:起始日期
  第三个参数:终止日期
  第四个参数:地域
  第五个参数:函数值返回的目标参数(变量)
  4、__RandomFromMultipleVars函数
  这个函数与前面的几个略有区别,是通过随机取变量的方式来获取函数值,因此在使用前,我们需要预先定义好用于随机的变量及变量值。
  函数助手中的参数设置
  参数说明:
  第一个参数:用于随机的变量名(竖线分隔)
  第二个参数:函数值返回的目标参数(变量)
  使用举例:
  在输入法变声服务的测试中,服务支持多种音色变换,为模拟线上用户实际使用时的情况,需要随机取用音色:
  首先利用自定义用户变量的方式设置音色列表:
  音色列表
  在speaker(音色)参数中调用函数获得随机音色
  二、利用BeanShell生成随机参数
  尽管jmeter内置的函数已经足以解决大部分随机参数的问题,但还是有一些场景无法完全覆盖。比如两个随机的变量需要对应出现(如音频编码和音频扩展名),需要生成一定范围内随机小数等等。这时候,万能的BeanShell可以为我们提供更加灵活的解决方案来满足这些需求。
  使用举例:
  1、在语音合成项目的测试中,需要合成不同音频格式的音频,为了模拟线上情况,音频编码和输出音频的扩展名应设置为随机,但二者需要对应。
  首先,利用用户自定义变量的方式分别添加所需的音频编码类型和扩展名,为了方便,二者变量名的序号部分设置为一一对应。
  音频编码和扩展名
  我们可以在请求下添加BeanShell前置处理器(BeanShell PreProcessor),在脚本框中输入如下代码:
  BeanShell中生成随机参数
  其中,f和w分别对应音频编码和扩展名,在请求中调用即可。
  请求中调用生成的随机变量
  2、同样在语音合成项目的测试中,需要为合成的音频设置不同的语速、音调、音量等,这些参数为一定范围内的随机小数。这时,我们依然可以使用BeanShell来获取这些随机参数值。
  BeanShell中生成随机参数
  volume、pitch和rate即为生成的三个随机参数值。进一步我们可以通过设置边界值变量,再利用上文中介绍的__RandomFromMultipleVars函数来提高边界值的命中概率(结合线上实际数据分析和测试的需要,边界值的命中概率会比较高)
  三组边界值变量
  参数调用
  如此设置可以实现上限值、下限值、中间值命中概率各三分之一,明显提升了上下边界值的命中概率,更加符合实际场景与测试需求。
  好了,关于jmeter随机参数有关的内容就介绍到这里,希望能给大家的测试带来一些帮助,我们下期再见啦~。

      本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号