ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

5.配置元件

2021-09-16 19:01:05  阅读:98  来源: 互联网

标签:文件 配置 用户 计数器 循环 线程 举第 元件


  1. CSV Data Set Config(参数化常用组件)

    1. CSV Data Set Config的面板样式
      在这里插入图片描述
    2. 什么是csv?
      1. 为了实现简单的数据存储,是一个纯文本的文件
      2. 最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中
      3. CSV 文件可以用记事本、excel打开;用记事本打开的话,每一列数据都用逗号隔开
    3. 字段详细介绍:
      1. Filename:文件名。test.dat文件名,保存参数化数据的文件目录,可选择相对或者绝对路径(建议填写相对路径(相对于bin目录),避免脚本迁移时需要修改路径)。如果直接写文件名,则该文件要放在bin目录中。对于分布式测试,主机和远程机中相应目录下应该有相同的CSV文件

      2. File encoding:文件编码。er\csvtest.dat文件的编码格式,在保存时保存编码格式为UTF-8即可;

      3. Variable Names:变量名。类似excel文件的文件头,起到标示作用,同时也是后续引用的标识符,建议采用有意义的英文标示;(如:有几列参数,在这里面就写几个参数名称,每个名称中间用分隔符分割,这里的 user,pwd,可以被利用变量名来引用:{pwd};

      4. Ignore first line: 是否忽略首行。果csv中第一行是表头,而不是参数化用的数据,这里要选择True。

      5. limiter:参数文件分隔符。默认是 “,”。用来在“Variable Names”中分隔参数,与参数文件中的分隔符保持一致即可。

      6. Allow quoted data?:是否允许变量使用双引号,允许的话,变量将可以括在双引号内,并且这些变量名可以包含分隔符

      7. Recycle on EOF?:是否循环读取参数文件内容;因为CSV Data Set Config一次读入一行,分割后存入若干变量中交给一个线程,如果线程数超过文本的记录行数,那么可以选择从头再次读入;
        Ture:为true时,当已读取完参数文件内的测试用例数据,还需继续获取用例数据时,此时会循环读取参数文件数据(即:读取文件到结尾时,再重头读取文件);
        False:为false时,若已至文件末尾,则不再继续读取测试数据;通常在“线程组线程数* 线程组循环次数>参数文件行数”时,选用false(即:读取文件到结尾时,停止读取文件);

      8. Stop thread on EOF?:遇到文件描述符停止线程。当Recycle on EOF为False时(读取文件到结尾),停止进程,当Recycle on EOF为True时,此项无意义;
        若为ture,则在读取到参数文件行末尾时,终止参数文件读取线程;
        若为false,此时线程继续读取,但会请求错误,因此时读取的数据为EOF;

      9. Sharing mode:线程共享模式。即参数文件的作用域,有以下几种方式:
        △All threads:当前测试计划中的所有线程中的所有的线程都有效,默认;
        △Current thread group:当前线程组中的线程有效;
        △Current thread:当前线程有效;

      10. 举第1个栗子,场景如下:10个线程,csv文件7条单列数据,CSV Data Set Config设置变量名为name,不忽略首行,分隔符为“,” 变量值中不允许有双引号,遇到文件描述符不结束循环,遇到文件描述符结束线程,这里使用debug sample来做示范,标题引用name变量。
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        「结果如下」:Image
        在这里插入图片描述

      11. 举第2个栗子,场景如下:10个线程,csv文件7条3列数据。CSV Data Set Config设置变量名为name,str、mao,不忽略首行,分隔符为“,” 变量值中允许有双引号,遇到文件描述符继续下一次循环,遇到文件描述符不结束线程,这里使用debug sample来做示范,标题引用name、str、mao变量。
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        「结果如下」:
        在这里插入图片描述

  2. 计数器

    1. 计数器,顾名思义就是在测试执行过程中会记录迭代次数。可以在线程组任何位置创建,允许用户配置起点、最大值和增量。配置后,计数器将从起点循环到最大值,然后重新开始,直到线程结束。允许用户创建一个计数器,可在线程组中任何地方被引用。
      在这里插入图片描述
    2. 字段详细介绍:
      1. 启动(start):给定计数器的起始值、初始值,第一次迭代时,会把该值赋给计数器
      2. 递增(Increment):每次迭代后,给计数器增加的值
      3. 最大值(Maximum):计数器的最大值,如果超过最大值,重新设置为初始值(Start),默认的最大值为Long.MAX_VALU E,2^63-1(如果持续压测,建议最好不要设置最大值)
      4. Number format:可选格式,比如000,格式化为001,002;默认格式为Long.toString(),但是默认格式下,还是可以当作数字使用
      5. 引用名称(Reference Name):用于控制在其它元素中引用该值,形式:$(reference_name}
      6. 与每用户独立的跟踪计数器(Track Counter Independently for each User):全局的计数器,如果不勾选,即全局的,比如用户#1 获取值为1,用户#2获取值还是为1;如果勾选,即独立的,则每个用户有自己的值:比如用户#1 获取值为1,用户#2获取值为2。7.每次迭代复原计数器(Reset counter on each Thread Group Iteration):可选,仅勾选与每用户独立的跟踪计数器时可用;如果勾选,则每次线程组迭代,都会重置计数器的值,当线程组是在一个循环控制器内时比较有用。
    3. 举第1个栗子,场景如下:启动1,递增2,无最大值,格式为czdx_000,不勾选用户独立跟踪计数器,10个用户,1次循环,不使用循环控制
      在这里插入图片描述
      结果如下:
      在这里插入图片描述
    4. 举第2个栗子:启动1,递增2,无最大值,格式为czdx_000,勾选用户独立跟踪计数器,10个用户,2次循环,不使用循环控制器
      在这里插入图片描述
      在这里插入图片描述
      结果如下:
      在这里插入图片描述
    5. 举第3个栗子:启动1,递增2,无最大值,格式为czdx_000,勾选用户独立跟踪计数器,10个用户,2次循环,不使用循环控制器,每次迭代复原计数器。
      Image
      结果如下:
      在这里插入图片描述
    6. 重点注意」:循环控制器是相当于用户做同样的动作,「当勾选用户独立跟踪计数器」后,循环控制器的循环次数不管是几次,计数器都是保持不变。
    7. 举第1个栗子:启动1,递增2,无最大值,格式为czdx_000,10个用户,1次循环,使用循环控制器设置循环次数为2,不勾选用户独立跟踪计数器
      在这里插入图片描述
      结果如下:
      在这里插入图片描述
    8. 举第2个栗子:启动1,递增2,无最大值,格式为czdx_000,10个用户,1次循环,使用循环控制器设置循环次数为2,勾选用户独立跟踪计数器,计数器放在循环控制器「外」。
      在这里插入图片描述
      结果如下:
      在这里插入图片描述
    9. 举第3个栗子:启动1,递增2,无最大值,格式为czdx_000,10个用户,1次循环,使用循环控制器设置循环次数为2,勾选用户独立跟踪计数器,计数器放在循环控制器「内」。
      在这里插入图片描述
      结果如下:
      在这里插入图片描述
      计数器是每个线程独享的,不再是公共计数器,所以每次有新的线程运行时,都是新的计数器开始循环计数
  3. 用户自定义变量(相当于当前作用域的全局变量)
    Image
    User Defined Variables中定义的参数值在test plan执行过程中不能发生取值的改变,因此一般仅将test plan中不需要随迭代发生改变的参数(只取一次的参数)放在这里。例如:被测应用的host和port值

    1. 线程组下的用户自定义变量 优先级高于 测试计划里的用户自定义变量
    2. HTTP 请求下的用户自定义变量 优先级高于 线程组下的用户自定义变量
    3. 若有重名变量,优先取优先级高的用户自定义变量
    4. 用户自定义变量在测试计划运行后,是全局生效的且只生成一次,它不是动态生成的;从测试结果可以看到,即使变量的值是随机数(Random),不同用户数循环多次,拿到的用户自定义变量值都是一样的
  4. 随机变量(Random Variable):用于生成随机数字字符串并将其存储在变量中。
    在这里插入图片描述

    1. 相比 __Random 的优势」:
      __Random 函数也可以生成随机数字字符串,但如果要重复引用的话,需要结合用户自定义变量控件(User Defined Variables) 使用 Random Variable 可以生成完随机数字字符串后存储在变量中,可以直接重复引用
    2. 参数详细介绍:
      1. Variable Name:变量名,存储随机字符串的变量的名称。
      2. Output Format:格式化字符串,例如,“ 000”将生成至少3位数字,或者“ USER_000”将生成USER_nnn形式的输出。如果未指定,则默认为使用Long.toString()生成数字。
      3. Minimum Value:最小值;生成的随机数的最小值(长整数)。
      4. Maximum Value:最大值;生成的随机数的最大值(长整数)。
      5. Seed for Random function(该输入项可以不填):随机种子,随机数生成器的种子。默认值为当前时间,以毫秒为单位。如果在“将每个线程”设置为true的情况下使用相同的种子值,则与“ 随机” 类一样,将为每个线程获得相同的值
        Per Thread(User)?:每个线程,如果为False,则在线程组中的所有线程之间共享生成器。如果为True,则每个线程都有自己的随机生成器。
    3. 举第1个栗子,# 占位符:
      5个用户:
      在这里插入图片描述
      结果如下:
      在这里插入图片描述
  5. 知识点:

    1. 可以用在输出格式中,当做占位符的数量和数字字符串长度不一定要相等

    2. 举第2个栗子,0 占位符:
      Image
      结果如下:
      在这里插入图片描述

  6. 知识点:

    1. 0 也可以用在输出格式中,当做占位符
    2. 当数字字符串长度小于 0 的数量时,会自动补 0,大于还是会显示完全数字字符串
  7. 举第3个栗子,非占位符:
    在这里插入图片描述
    结果如下:
    Image
    随机数字字符串会跟在 88 后面

  8. 举第4个栗子,配合循环次数和循环控制器:2个线程,循环次数2,循环控制器次数设置为3
    Image
    一共12个请求,每个线程一共生成6个随机数

  9. 举第5个栗子,随机种子使用:只有设置了随机种子和 True 才会生效Image
    在这里插入图片描述
    「每次循环都会产生新的随机数字字符串,所有线程共用一个数字字符串」

标签:文件,配置,用户,计数器,循环,线程,举第,元件
来源: https://blog.csdn.net/jerry___wang/article/details/120334723

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有