• 14
  • 15
分享
  • 常见的Jmeter参数化方式总结,总有一个你不知道——软件测试圈
  • 曼倩诙谐 2021-01-22 15:07:11 字数 1931 阅读 1266 收藏 15

  参数化概念

  测试工作中,通常会使用不同的数据发送请求测试不同的场景来实现测试的全面性,这就需要对一些字段进行参数化,以使每次迭代都使用不同的数据来满足我们的测试需求。

  Jmeter做为常用的功能、性能测试工具之一,其参数化方式也是相对比较灵活,主要分为4种:用户参数、用户自定义变量、CSV数据文件、函数助手,下面将详细介绍这4种参数化方式的使用方法。

  参数化方式

  一、用户参数

  1.使用场景

  适用于参数取值范围很小的场景,例如测试模拟较少用户登陆某系统交易。

  2.操作步骤

  (1)添加用户参数功能模块

1.png

  (2)设置参数变量、用户值

2.png

  注意勾选每次迭代更新一次,否则每次都使用同样的数据;

  (3)配置HTTP请求中的参数值或消息体数据中参数化字段

3.png

  HTTP请求中要么通过设置参数要么使用消息体数据通过报文方式发送请求,无论哪种方式,参数化值应与用户参数中变量名一致。

  (4)查看结果树

4.png

  线程组中的线程数设置为2,点击执行,可以通过查看结果树查看参数使用情况:

5.png

6.png

  二、用户变量

  1.使用场景

  一般用于Test Plan中不需要随请求迭代变化的参数设置,如:服务器地址、端口。

  2.操作步骤

  (1)添加用户自定义变量功能模块

7.png

  (2)配置用户自定义变量参数值

  这里以配置不同服务器地址和端口为例:

8.png

  (3)配置HTTP请求中参数值或消息体数据中参数化字段

9.png

  当发送请求服务器地址发生改变时,只需要更改服务器参数化值即可向不同的服务器发送请求。当然,用户自定义变量也可以来参数化登陆用户、交易金额、账户等场景。

  (4)查看结果树

  当服务器名称设置为${host1},端口设置为${post1}时,访问百度服务器:

10.png

  当服务器名称设置为${host2},端口设置为${post2}时,访问火狐服务器:

11.png

  三、CSV数据文件

  1.使用场景

  适用于参数取值范围较大的场景,该方法在参数化大量数据时灵活性高、操作便捷,在需要遍历上千个账户场景时经常使用。

  2.操作步骤

  (1)准备参数化文件

  参数化文件一般为txt或者csv格式,每一行代表一条数据,每条数据可包含多个属性,不同属性之间需用分隔符间隔,CSV数据文件对数据量无要求,当需要参数化的数量量较大时,应使用这种参数化方式:

12.png

  (2)添加CSV 数据文件设置功能模块

13.png

  (3)配置CSV 数据文件参数

14.png

  文件参数配置详细说明如下:

15.png

  备注说明:

  遇到文件结束符再次循环与遇到文件结束符停止线程的关联关系:

  当遇到文件结束符再次循环项为true时,遇到文件结束符停止线程项无意义,因为前面项控制了要一直循环读取;

  当遇到文件结束符再次循环项为false时,遇到文件结束符停止线程项为true时,当线程为4个,参数值为3个时,会执行请求3次;

  当遇到文件结束符再次循环项为false时,遇到文件结束符停止线程项为false时,当线程为4个,参数值为3个时,会执行请求4次,但是最后一次请求会报错,因为第4次请求无参数;

  (4)配置HTTP请求中参数值或消息体数据中参数化字段

16.png

  (5)查看结果树

  线程组线程数设置为3,循环次数设置为1,可以看到执行结果中参数取值与CSV文中的数据一致:

17.png

18.png

19.png

  四、函数助手

  1.使用场景

  当参数为随机数或者报文含有流水号字段(每次迭代不能重复)等场景时,可使用函数助手生成所需数据,当所需字段数据长度较长且不能重复时,通常将时间函数与计数器结合,拼接为合适长度的有效数据。

  Jmeter提供了丰富的内置函数,大体可以分为以下7种类型,这里以时间函数与计数器结合为例详细介绍使用步骤。

20.png

  2.操作步骤

  (1)根据需要,配置函数

21.png

  打开函数助手对话框后,选择时间函数,然后输入想要的时间格式,例如yyyyMMddHHmmss或者MMddHHmmss,点击生成,即可生成可引用的参数化函数:

22.png

  (2)配置用户自定义变量

  一般将生成的可引用参数化函数设置为用户自定义变量的值:

23.png

  (3)添加计数器功能模块

24.png

  (4)配置计数器模块的参数

  如果我们需要一个长度为20位且不能重复的流水号,那么我们就可以用时间函数生成16位的数值,用计数器生成6位顺序值,将两者拼接起来,即可生成一个长度为20位且不重复的数据:

25.png

  (5)配置HTTP请求中参数值或消息体数据中参数化字段

  将时间函数与计数器组合为resqno变量,这样即使为多并发时,resqno变量也不会重复:

26.png

  (6)查看结果树

27.png

28.png

  以上就是Jmeter常用的4种参数化方式,希望在日常测试工作中能对小伙伴们提供一些帮助!


作者:徐伟   

来源:51Testing软件测试网原创

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   据报道,知情人士透露,苹果(146.71,-2.69,-1.80%)的混合现实头显很可能不需要配合iPhone使用,该公司可能还在开发新机型。  知情人士表示,与第一代AppleWatch不同,苹果的首款混合现实头显可能不需要借助iPhone就能设置和使用。据悉,这款设备的最新版本及其内置的xrOS操作系统可以单独配置,而且能够直接从云端下载用户的内容和iCloud数据,从而完全脱离iPhone。  但用户仍然可以将数据从iPhone或iPad迁移到这款头显中。之前还有报道称,这款头显没有配备遥控器,用户可以直接使用眼球运动和手势来操纵其界面。  知情人士表示,作为其中一项关键的文字输入功...
            0 0 441
            分享
          •   今天想聊一聊关于测试工作量评估及需求进度把控的内容。  我个人觉得有时候评估测试工作量其实也挺难的,比如有的需求没有需求文档,只能靠自己对需求的理解去大概评估,有可能评估的工作量比实际需要的工作量会少点,对于每周进行迭代的项目来讲,差出来的这点时间可能就会导致项目不能如期上线的风险。  我最近就亲身经历了评估测试工作量不够合理导致差点出现上线风险的案例,好在是及时在早会的时候和整个团队包括产品、项目经理抛出了风险,然后和开发同学协同,通过连续加班的方式按照原计划完成了所有需求内容的测试,虽然最后没有真的引发上线的风险,但是不得不说,连续的加班去赶进度真的很头疼。  这让我意识到工作量评估和...
            0 0 376
            分享
          •   其实不是工作难找啦,而是公司对于人员要求提高啦!这就导致只会一些皮毛知识的测试人员工作不稳定,工作时间无法长久!  在经历这几年的疫情之下,大家越来越喜欢转战线上工作,因为社会原因我们对于软件的需求也在提高,同时更新迭代的速度也是飞快,这样的情况下,软件测试的岗位也同样跟着地位飞升,但是越是这样的时候,越是会对测试人员的要求提高!  我们从BOSS直聘、智联招聘等等招聘平台可以看到,以上海为例,有多少企业渴望拥有一个好的测试人才。  说完了前景,我们再来说说“钱景”,毕竟工作主要还是为了恰饭嘛,除了当下的薪资,我们还需要关注这个行业的薪资薪资涨幅是多少,为我们之后的职业生涯做准备。  初级...
            0 0 174
            分享
          •   从苹果(193.62,0.87,0.45%)官网获悉,苹果“我的照片流”服务今日正式关闭,“我的照片流”中将不再保留任何照片。用户如果想将拍摄的照片和视频在所有设备上都保持最新并储存在iCloud中,则可使用“iCloud照片”服务。  据悉,“MyPhotoStream”服务于2011年由史蒂夫?乔布斯作为iCloud的一部分推出,可以自动将一个设备上的照片和视频上传到另一个设备上,无需手动同步。这项功能不占用免费的5GBiCloud存储空间,但只能存储1000个文件,并且不支持全分辨率同步。  苹果公司后来推出了iCloudPhotoLibrary(现在称为iCloudPhotos),...
            0 0 415
            分享
          • 我2006年计算机专业硕士毕业至今,从事软件测试及质量保障领域已经十几个年头了,从白盒自动化测试到黑盒自动化测试,从功能测试到性能测试、安全测试,从测试流程、测试框架到后来的测试管理、质量体系建设,深爱着这个行业,经常为能和小伙伴们攻克了一个技术小山头而激动兴奋, 也为了加班加点使命必达的完成了一个艰巨任务而感到欣慰。我负责测试技术管理、团队管理也已经有8年多了,期间面试过的人少说也有一两千了。从面试中常见的两个场景来聊一聊测试的基本功:场景:面试官: 你最擅长的测试领域在哪里啊?有什么职业发展计划吗?候选人:我比较多的经验在功能测试,以后希望能从事自动化测试方向。 对于这么常见的问...
            0 1 1908
            分享
      • 51testing软件测试圈微信