川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

JMeter参数化之CSV Data Set Confifig

作者:川石学院 日期:2022-05-12 14:17:45 点击数:

一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“JMeter参数化之CSV Data Set Confifig”。

Jmeter:接口测试基础介绍(图1)

  一、参数化的定义

  所谓参数化,就是将客户端发送给服务器处理的数据预先保存到一个参数中的过程。

  一般来说,对于功能测试,当用不同的数据测试相同的功能时,我们可以使用参数化来精简测试;

  对于性能测试,为了真实模拟多个用户的操作行为或应对系统对多个用户同时操作的特殊限制(比如数据唯一性要求),需要使用参数化来解决这些问题。

  JMeter提供了非常多的参数化的方式和手段,常见有:

  1.配置元件 CSV_Data_Set_Config

  2.内置参数化函数,比如__CSVRead()

  二、CSV_Data_Set_Confifig

  ▲ 配置项

  Confifigure the CSV Data Source:

  1.Filename:

  •   要读取的数据文件的路径或名称。可以使用绝对路径或相对路径。

  •   当使用相对路径表示文件路径时,测试计划所在目录为当前目录。

  •   当JMeter以分布式模式运行时,参数化的数据文件需要复制到每台Slave中,并且要设置相同的目录结构。

  2.File Encoding:

  •   若没有设置则以操作系统的字符编码去读取数据文件。

  •   可以指定以何种编码去读取数据文件,以防止出现乱码。

  •   比如操作系统默认字符编码为GBK,而数据文件(CSV文件)的编码为UTF-8,则读出来的数据肯定为乱码,在此情况下要设置File Encoding为“UTF-8”才能读取成功。

  3.Variable Names(comma-delimited):

  用于保存数据文件列值的变量名列表。变量名之间用,(逗号)分隔。若变量名列表为空,

  JMeter则将数据文件的第一行各字段值作为各个变量名(不论是否忽略第一行)。

  比如数据文件中有如下两行值:

  张三,男,25

  李四,女,20

  在没有设置变量名列表的情况下,会将第一行的三个值当做变量名:张三,男,25

  ${张三},${男},${20}的值分别是:李四,女,20

  4.Ignore first line (only used if Variable Names is not empty):

  •   是否忽略数据文件的第一行。这个选项只有在设置了参数名列表时才起作用。

  •   选择True表示忽略第一行,选择False表示不忽略第一行。

  •   一般用在数据文件中有列标题时,因为标题不是值,故考虑可以忽略第一行。

  比如数据文件中有如下值:

  name,sex,age

  张三,男,25

  李四,女,20

  若此项设置为False,则会将name,sex,age当做变量的值读取,设置为True会忽略此行,从第二行开始读取。

  5.Delimiter (use'\t'for tab):

  数据文件中字段的分隔符。根据分隔符将记录拆分保存到定义的变量中。

  默认值为,(逗号)分隔。

  6.Allow quoted data?:

  数据文件中的值是否允许使用双引号。True表示允许,False表示不允许。

  一般用于当值中包含分隔符时,可考虑将值用双引号括起来,屏蔽分隔符的特殊含义。

  比如记录了商品编号,名称,价格的数据文件:

  goods_id,goods_name,price

  1,Watch_wanguo,"1,500,000"

  若没有使用双引号,商品价格为1,使用了双引号,商品价格为1,500,000

  7.Recycle on EOF?:

  读取到达数据文件结束(EOF即end of file)处,是否回到文件开始出重新读取。

  True循环读取,False不循环读取。

  8.Stop thread on EOF?:

  读取到达数据文件结束处,是否停止线程。True停止线程,测试不再进行;False不停止线程,继续循环取值运行测试。

  9.Sharing mode:

  共享模式。All threads所有线程,Current thread group当前线程组,Current thread当前线程。

  1)All threads:

  所有线程共享同一个文件。在测试中数据文件只打开一次,每个线程读取不同行的参数值。

  每个线程读取的值与线程启动的先后顺序相关;不论线程引用参数与否,每个线程都会分配一个参数值。

  2)Current thread group:

  当前线程组。测试计划下的每个线程组都单独打开一个参数文件。

  3)Current thread:

  当前线程。每个线程都单独打开一个参数文件。在此模式下,若每个线程需要从不同的值集中取值,可以设置一组参数化数据文件,每个线程对应一个文件。将线程编号与数据文件名关联起来将可以了。

  比如一组文件为:

  testdata1.csv,testdata2.csv,... ,testdatan.csv

  线程编号可以通过内置函数${__threadNum}来获取,则数据文件名可设置为: testdata${__threadNum}.csv。

  三、应用案例

  这里以前面介绍过的查询被购买商品总金额接口为例来讲解。

  ▲ 参数化步骤

  1.确定接口参数中哪些请求参数需要进行参数化

  在设计测试用例时,我们针对商品编号,商品规格,商品数量来准备数据,故对id,attr,number参数化

  2.将测试数据放在外部一个文档保存,文件类型为csv或txt --> *.csv or *.txt

  新建一个testdata.csv,一行写一个用例,多个参数值默认用,分隔:

  case_name,id,attr,number

  case1,9,226,3

  case2,,226,1

  case3,9,,1

  case4,9,226,

  3.添加并配置CSV Data Set Config配置元件

  4.在请求中将写死的数据用第3步中定义的变量进行替换

  data --> ${varName}

  比如 ${attr}

  5.配置参数化

  5.1 将线程数设置为用例的个数

  5.2 循环控制请求的次数

  a.添加一个循环控制器,设置其循环次数为测试用例个数

  b.将CSV Data Set Config配置元件与请求移到循环控制器下面


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2022-05-12 14:17:45
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2022-05-12 14:17:45
  • 国外的月亮也不一定比国内测试猿的年薪美~2022-05-12 14:17:45
  • 建筑工程专业朱同学成功转行为软件测试人!2022-05-12 14:17:45
  • 财务管理专业转行软件测试月薪甩会计几条街!2022-05-12 14:17:45
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2022-05-12 14:17:45
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2022-05-12 14:17:45
  • 文科生转行软件测试照样拿下高薪15K!2022-05-12 14:17:45
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2022-05-12 14:17:45
  • 毕业1年,迷茫的他最终选择转行软件测试2022-05-12 14:17:45