——线程组
    添加线程组路径 Threads-Thread——group
    意思是虚拟用户组
    setup thread group 执行与测试操作,类似loadrunner的init
    teardown thread group 执行测试后的操作,类似loadrunner的end

    2.Ramp-Up Period是什么意思
    Ramp-Up Period的意思是一次线程组中的所有线程在多少秒内逐个启动
    假设10个线程,100秒的Ramp-Up period。10秒启动一个线程
    3.用到jar包什么时候用
    解析json,连接mysql等的情况会用到
    4.数据含义
    Error%(异常):错误请求的数量/请求的总数
    Throughput()
    samples(样本):一个发出了多少个请求
    5.元件的作用域
    配置元件(config elements)会影响其作用范围内的所有元件
    前置处理程序(per-processors)在其作用范围内的每一个sampler元件之前执行
    定时器(timers)对其作用的每一个sampler有效
    后置处理程序(post-processors)在其作用范围内的每一个sampler元件之后执行
    断言(Assertions)对其作用范围内的每一个sampler元件执行后的结果执行校验
    监听器(Listeners)收集齐作用范围内的每一个sampler元件的信息并呈现
    聚合报告可以用来显示多个子目录的总报告,也可以用来显示单个线程组的聚合报告。
    6.参数化
    CSV Data Set Config是用来参数化数据的,可以同时传入很多条数据
    https://www.cnblogs.com/tigertank/p/10099879.html
    也可以传入CSV的文件进行参数化
    Tools中的函数助手对话框可以生成一个函数表达式,选择Random随机数的函数,可以输入最小值100,最大值200,点击生成 ${__Random(100,200,)},可以把这个函数表达式传入参数中,用随机数进行接口测试。

    7.Jmeter或postman的传参
    传json举例:
    取得查询库存接口
    查询库存的接口
    http://222.190.142.14:8025/LsErp/xs/cpcktzd.shtml?
    action=qureyKyCmxx
    &param=[{“WLBH”:”00000000000”,”CM”:”110”,”CBXM”:”无标”},
    {“WLBH”:”00000000000”,”CM”:”120”,”CBXM”:”无标”}]
    其实就是json结构
    [
    {
    “WLBH”: “00000000000”,
    “CM”: “110”,
    “CBXM”: “无标”,
    “CMSL”: “86”
    },
    {
    “WLBH”: “00000000000”,
    “CM”: “120”,
    “CBXM”: “无标”,
    “CMSL”: “87”
    }
    ]

    8.集合点
    就是用来启动真正的并发,在需要压力的地方设置集合点
    我集合点设置为50,那么不满足50个请求的时候,这些请求都会集合在一起,处于等待状态,当达到50的时候,就一起执行。从而达到并发的效果。
    那么Jmeter中可以通过同步定时器 Synchronizing Timer 来完成。
    ——————————————————
       Number of Simulated Users to Group by:集合多少人后在执行请求(也就是执行的线程数),如果设置为0,等同于设置为线程组中的线程数量。
          注意:等同于设置为线程组中的线程数,一定要确保设置的值不大于它所在的线程组包含的用户数。
        Timeout in milliseconds:指定人数 多少秒没集合到算超时(设置延迟时间以毫秒为单位)。
          注意:如果Timeout in milliseconds为0,表示无超时时间,会一直等下去,除非手动终止!
     ——————————————————-   
      作用域:
        1、Synchronizing Timer是在每个sampler之前执行的,而不是之后,不管这个定时器的位置放在sampler之后,还是之前。
          当执行一个sampler之前时,和sampler处于相同作用域的定时器都会被执行;
        2、如果希望定时器仅应用于其中一个sampler,则可以把该定时器作为子节点加入。
    3.Synchronizing timer 仅作用于同一个JVM中的线程,所以,如果使用并发测试,确保”Number of Simultaneous Users to Group by”中设置的值不大于它所在线程组包含的用户数。
    4.Synchronizing Timer是在每个sampler(采样器)之前执行的,而不是之后,不管这个定时器的位置放在sampler之后,还是之前。
    9.发送JDBC请求
    做JDBC请求,首先需要两个jar包:mysql驱动-mysql-connector-java-5.1.13-bin.jar 和 sqlServer驱动-sqljdbc4.jar,将这两个jar包放到Jmeter目录中的lib文件下,然后重启Jmeter。
    添加 JDBC Connection Configuration
    配置 JDBC Connection Configuration 基本参数(注意Variable Name命名必须和之后JDBC Request中的Variable Name 命名一致) Driver Class 可写成org.gjt.mm.mysql.Driver,也可写成com.mysql.jdbc.Driver,以响应正确为基准
    添加 JDBC request
    JDBC request 中,键入sql查询语句
    10.逻辑控制器—用来输入条件来控制选择哪个请求
    1.循环控制器 ——还不知道设置在哪里
    如果同时设置了线程组的循环次数和循环控制器的循环次数,那循环控制器的子节点运行的次数为两个数值相乘。
    2.foreach控制器—-是post的时候可以用,还是get的时候可以用?
    ForEach控制器一般和用户自定义变量一起使用,用于可以遍历读取相关的返回值。该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值
    foreach控制器通常和正则表达式提取器一起使用。表达式提取值应为-1,表示取全部值,然后sampler在foreach控制器下执行遍历。
    3.仅一次控制器和简单控制器有啥用?
    4.事务控制器(Transaction Controller)怎么用?
    5.if控制器—-还需要实操
    参数:
    Interpret Condition as Variable Expression?:选中这一项时表示:判断变量值是否等于字符串true(不区分大小写) Evaluate for all children:如果选中这一项,在每个子结点执行前都会计算表达式 示例一:使用变量表达式的方式进行判断:
    示例二:选中Interpret Condition as Variable Expression?,使用变量的方式判断变量的方式判断
    简单来说就是if控制器里的参数如果是从其他请求里得来的,并且是 满足了XX条件,就执行if控制器下的请求。
    6.Switch控制器—这个有什么实际应用呢
    这个控制器是用来选择执行控制器下的那哪个子元素,默认索引是0。
    可以输入数值,或者指定子元素的名称。
    7.吞吐量控制器(Throughput Controller)—-这个总线程分配到每个子节点以后,为啥要这么分配呢,有什么好处?
    作用:控制其下的子节点的执行次数与负载比例分配,别被名字迷惑了,跟吞吐量没任何关系。也有两种方式:
    一种是填线程数,线程组里10个线程,线程数填5个
    一种是填线程组的百分比,线程组里10个线程,线程数填50,百分比勾选了以后,数字就是百分比的线程数。
    8.随机控制器(Random Controller)
    没啥用,这个控制器下有三个请求,随机跑一个请求
    9.随机顺序控制器(Random Order Controller)
    与Random Controller不同的是,这个控制器会先将需要随机的内容均执行一遍,但次序不定
    应用场景: 页面的随机访问,但均需要访问,且次序不限
    这个暂时也没发现有啥用。
    10.关键部分控制器(Critical Section Controller)
    作用:用于核心部分的控制,确保其子节点下的取样器或控制器在一个线程中仅会执行一次
    应用场景: 用户登录
    配制说明
    Lock name: 锁名称,这里可以填入其子节点下执行的线程的名称,这个线程作为一个全局锁存在
    11.交替控制器,模块控制器
    都没什么用,模块控制器是跳转到目标控制器,可能控制器太多了,相当于find的作用,立即搜出模块的所在位置。
    12.While控制器 输入javascript的脚本—-还需要实操,看怎么用
    11.Jmeter函数
    1.研究了一下发现主要是函数助手里的函数使用,这个也要结合实际操作,没有什么需要字面理解的东西。
    12.获取JDBC的响应数据做接口关联
    1.这个需要找文章实操。教程的截图不全。
    13.图形结果 这个已经在工具中用过并已经知道怎么用了,但是表示什么含义还需要百度学习。
    14.FTP请求,用到再说
    get从服务器获取资源,put把文件传到ftp上,这个功能用FTP专用的软件更方便,不知道用jmeter有什么优点。
    15.连接数据库




    13.Beanshell中常用的Java工具类
    一. org.apache.commons.io.IOUtils
    closeQuietly:关闭一个IO流、socket、或者selector且不抛出异常,通常放在finally块
    toString:转换IO流、 Uri、 byte[]为String
    copy:IO流数据复制,从输入流写到输出流中,最大支持2GB
    toByteArray:从输入流、URI获取byte[]
    write:把字节. 字符等写入输出流
    toInputStream:把字符转换为输入流
    readLines:从输入流中读取多行数据,返回List
    copyLarge:同copy,支持2GB以上数据的复制
    lineIterator:从输入流返回一个迭代器,根据参数要求读取的数据量,全部读取,如果数据不够,则失败
    二. org.apache.commons.io.FileUtils
    deleteDirectory:删除文件夹
    readFileToString:以字符形式读取文件内容
    deleteQueitly:删除文件或文件夹且不会抛出异常
    copyFile:复制文件
    writeStringToFile:把字符写到目标文件,如果文件不存在,则创建
    forceMkdir:强制创建文件夹,如果该文件夹父级目录不存在,则创建父级
    write:把字符写到指定文件中
    listFiles:列举某个目录下的文件(根据过滤器)
    copyDirectory:复制文件夹
    forceDelete:强制删除文件
    三. org.apache.commons.lang.StringUtils
    isBlank:字符串是否为空 (trim后判断)
    isEmpty:字符串是否为空 (不trim并判断)
    equals:字符串是否相等
    join:合并数组为单一字符串,可传分隔符
    split:分割字符串
    EMPTY:返回空字符串
    trimToNull:trim后为空字符串则转换为null
    replace:替换字符串
    四. org.apache.http.util.EntityUtils
    toString:把Entity转换为字符串
    consume:确保Entity中的内容全部被消费。可以看到源码里又一次消费了Entity的内容,假如用户没有消费,那调用Entity时候将会把它消费掉
    toByteArray:把Entity转换为字节流
    consumeQuietly:和consume一样,但不抛异常
    getContentCharset:获取内容的编码
    五. org.apache.commons.lang3.StringUtils
    isBlank:字符串是否为空 (trim后判断)
    isEmpty:字符串是否为空 (不trim并判断)
    equals:字符串是否相等
    join:合并数组为单一字符串,可传分隔符
    split:分割字符串
    EMPTY:返回空字符串
    replace:替换字符串
    capitalize:首字符大写
    六. org.apache.commons.io.FilenameUtils
    getExtension:返回文件后缀名
    getBaseName:返回文件名,不包含后缀名
    getName:返回文件全名
    concat:按命令行风格组合文件路径(详见方法注释)
    removeExtension:删除后缀名
    normalize:使路径正常化
    wildcardMatch:匹配通配符
    seperatorToUnix:路径分隔符改成unix系统格式的,即/
    getFullPath:获取文件路径,不包括文件名
    isExtension:检查文件后缀名是不是传入参数(List)中的一个
    七. org.springframework.util.StringUtils
    hasText:检查字符串中是否包含文本
    hasLength:检测字符串是否长度大于0
    isEmpty:检测字符串是否为空(若传入为对象,则判断对象是否为null)
    commaDelimitedStringToArray:逗号分隔的String转换为数组
    collectionToDelimitedString:把集合转为CSV格式字符串
    replace 替换字符串
    delimitedListToStringArray:相当于split
    uncapitalize:首字母小写
    collectionToDelimitedCommaString:把集合转为CSV格式字符串
    tokenizeToStringArray:和split基本一样,但能自动去掉空白的单词
    八. org.apache.commons.lang.ArrayUtils
    contains:是否包含某字符串
    addAll:添加整个数组
    clone:克隆一个数组
    isEmpty:是否空数组
    add:向数组添加元素
    subarray:截取数组
    indexOf:查找某个元素的下标
    isEquals:比较数组是否相等
    toObject:基础类型数据数组转换为对应的Object数组
    九. org.apache.commons.lang.StringEscapeUtils
    参考十五: - org.apache.commons.lang3.StringEscapeUtils
    十. org.apache.http.client.utils.URLEncodedUtils
    format:格式化参数,返回一个HTTP POST或者HTTP PUT可用application/x-www-form-urlencoded字符串
    parse:把String或者URI等转换为List
    十一. org.apache.commons.codec.digest.DigestUtils
    md5Hex:MD5加密,返回32位字符串
    sha1Hex:SHA-1加密
    sha256Hex:SHA-256加密
    sha512Hex:SHA-512加密
    md5:MD5加密,返回16位字符串
    十二. org.apache.commons.collections.CollectionUtils
    isEmpty:是否为空
    select:根据条件筛选集合元素
    transform:根据指定方法处理集合元素,类似List的map()
    filter:过滤元素,雷瑟List的filter()
    find:基本和select一样
    collect:和transform 差不多一样,但是返回新数组
    forAllDo:调用每个元素的指定方法
    isEqualCollection:判断两个集合是否一致
    十三. org.apache.commons.lang3.ArrayUtils
    contains:是否包含某个字符串
    addAll:添加整个数组
    clone:克隆一个数组
    isEmpty:是否空数组
    add:向数组添加元素
    subarray:截取数组
    indexOf:查找某个元素的下标
    isEquals:比较数组是否相等
    toObject:基础类型数据数组转换为对应的Object数组
    十四. org.apache.commons.beanutils.PropertyUtils
    getProperty:获取对象属性值
    setProperty:设置对象属性值
    getPropertyDiscriptor:获取属性描述器
    isReadable:检查属性是否可访问
    copyProperties:复制属性值,从一个对象到另一个对象
    getPropertyDiscriptors:获取所有属性描述器
    isWriteable:检查属性是否可写
    getPropertyType:获取对象属性类型
    十五. org.apache.commons.lang3.StringEscapeUtils
    unescapeHtml4:转义html
    escapeHtml4:反转义html
    escapeXml:转义xml
    unescapeXml:反转义xml
    escapeJava:转义unicode编码
    escapeEcmaScript:转义EcmaScript字符
    unescapeJava:反转义unicode编码
    escapeJson:转义json字符
    escapeXml10:转义Xml10 这个现在已经废弃了,建议使用commons-text包里面的方法。
    十六. org.apache.commons.beanutils.BeanUtils
    copyPeoperties:复制属性值,从一个对象到另一个对象
    getProperty:获取对象属性值
    setProperty:设置对象属性值
    populate:根据Map给属性复制
    copyPeoperty:复制单个值,从一个对象到另一个对象
    cloneBean:克隆bean实例
    16种最流行的工具类方法,你就不必要再自己写工具类了,不必重复造轮子。大部分工具类方法通过其名字就能明白其用途,如果不清楚的,可以看下别人是怎么用的,或者去网上查询其用法。