网站素材类型,东莞网络外包公司,右安门网站建设,夫妻性做受视频什么网站Jmeter学习三——CSV文件和关联 jmeter做功能测试和做性能测试的区别CSV数据文件设置#xff08;读取外部文件#xff0c;进行分数据驱动#xff09;文件设置字段介绍#xff1a;文件名文件编码如果出现编码问题导致的乱码#xff0c;如何解决#xff1f; 变量名忽略首行… Jmeter学习三——CSV文件和关联 jmeter做功能测试和做性能测试的区别CSV数据文件设置读取外部文件进行分数据驱动文件设置字段介绍文件名文件编码如果出现编码问题导致的乱码如何解决 变量名忽略首行分隔符是否允许带引号遇到文件结束符再次循环 遇到文件结束符停止线程文件共享模式设置下面的CSV设置项之后要修改关联 Jmeter关联正则表达式提取器详情元素介绍正则表达式注意事项模板及匹配多组数据的使用 Xpath提取器详情元素介绍Xpath表达式 json提取器详情元素介绍JsonPath语法边界提取器页面元素介绍 Jmeter断言——性能测试脚本中不建议写性能测试中的断言再次强调疑问脚本中有断言但是性能测试时禁用可以吗断言的介绍响应断言JSON断言Xpath断言 jmeter生成测试报告Jmeter定时器——性能测试中不建议使用性能测试中的定时器性能测试过程中的集合点同步定时器定时器的介绍思考时间同步定时器集合点 jmeter逻辑控制器性能测试中的逻辑控制器逻辑控制器的介绍循环控制器条件控制器——性能测试中几乎不用For each控制器仅一次控制器——性能测试中常用事务控制器聚合报告 jmeter做功能测试和做性能测试的区别
性能测试尽可能不要进行人为的干预导致请求频率减缓定时器条件控制器断言等性能测试脚本追求自身的性能能简单就简单 如果写脚本的时候有某个原件做性能测试时将这个元件禁用相当于注释了这个元件元件不会被执行原则上不会影响性能脚本 不必要的元件能不用就不用性能比较差的元件也不要使用性能测试脚本是多线程同时执行脚本中存在参数就需要考虑多线程使用的情况不能直接拿接口测试的脚本用于性能测试功能接口测试的脚本还需要经过性能的转化才能用于性能测试
CSV数据文件设置读取外部文件进行分数据驱动
文件设置
CSV数据文件设置主要用来读取外部的数据文件实现数据驱动测试添加方法线程组——添加——配置元件——CSV数据文件设置如下图CSV数据文件设置是配置元件是最先执行的如果CSV文件设置报错后面的脚本都不会运行若CSV文件在某个线程组下其他线程组是无法访问的
字段介绍
文件名
文件名要读取数据文件的名称(数据文件的绝对路径可浏览选择加载)这个必须要填写否则会报错Jmeter的绝对路径 1.当Jmeter脚本保存后使用文件中的选择文件按钮打开时默认显示的是jmx文件路径的窗口换句话说文件选择时其相对路径的地址就是jmx的地址——建议这种方式 2.CSV文件的相对地址还有一个Jmeter安装路径中的bin文件夹下 文件设置的时候为了兼容linux和MAC层级的分隔符使用的是反斜杠/,一般使用的是绝对路径但为了其他人也可以使用脚本这需要使用相对路径CSV支持多种格式的文件只要是文本文件都支持 txt、CSV(逗号隔开数据)、json、xml、log
文件编码
文件编码读取数据文件时采用的编码该编码设置要和文件名保持一致utf-8、GBK等等必须和CSV文件一模一样txt文件一般是utf-8CSV文件字符集并不一定是utf-8如果自身不是utf-8但是Jmeter中选择了utf-8中文信息就有可能出现因为字符集不同导致的乱码因此文件名那儿上传的文件建议使用txt
如果出现编码问题导致的乱码如何解决
如果我们用数据的文件是CSV其中的数据有中文jmeter获取数据的时候出现了乱码要如何解决用记事本打开CSV文件切换字符编码或者重新保存的时候选择编码为utf-8
变量名
变量名称读取数据是接收列数据的变量按列来接收多列用多个变量接收每个变量之间用逗号隔开可以理解为变量名称为excel表格中第一列的表头下面每一列的数据为文件中对应的数据名称自己定义逗号时候固定的与文件中的列分隔符是什么没有关系变量名中的第一个参数接受第一列第二个参数接受第二列依次类推如果有两个变量名想要接收三列数据其中第二个参数想要接收第三列的数据没那么就需要在两个变量名之间使用两个逗号例如username, , pwd
忽略首行 忽略首行不读取第一行的数据一般CSV数据文件中的第一行是标志数据的key因此可忽略 填写的内容只有True和False两个为True表示为False表示这个功能表示读取文件的时候要么从第一行开始要么从第二行开始不可能从中间开始因此在做性能测试的时候同一台机器上的多用户读取同一个文件不会出现重复的情况但是当服务器为分布式的时候多台机器上都有相同内容的文件每台服务器上的用户读取相同内容的文件的时候就会出现使用同一个数据请求接口的情况 如果用在注册和登录的场景下就会出现多次注册/登录失败的用例因为手机号码无法重复注册重复登录后面会顶掉前面的用户 因此结论为Jmeter自带的CSV文件设置功能在多台机器做助攻机发起做性能测试的时候会出现问题解决方式 想办法读取的文件名相同但是内容不同例如第一台机器放1-10行第二台机器放11-20行使用这种方式数据不会重复但是当分布式的服务器特别多例如300台就会很麻烦 CSV按照行读取但是首次读取哪一行随机但是这种方式数据特别少的时候很容易出现重复的情况
分隔符
分隔符按照数据文件的分隔符进行填写主要用来分割每一列看文件中的列与列之间使用什么符号分割例如\t、空格、还可以是特殊符号例如 |(linux中的管道符)、$等具体根据文件决定
是否允许带引号
是否允许带引号默认选择False选择True时会自动去掉数据中双引如果不允许带引号但是文件中存在引号时其默认引号时数据的一部分所获取的数据中带引号
遇到文件结束符再次循环
遇到文件结束符再次循环文件所有数据加载完之后是否从头再次读取True表示继续循环意思是继续循环取值取文件中的值 代表文件中的内容从头到尾全部都获取一次之后再次从头获取 如果线程有100个数据只有10个值获取完之后第11个重新获取第1个值 False表示不在循环取值 如果线程有100个数据只有10个值获取完之后第11个及其之后的接口其请求数据就是空值空值都是EOF
遇到文件结束符停止线程
遇到文件结束符停止线程文件所有数据加载完成之后是否停止当前运行的线程True表示遇到文件结束符就停止线程意思是Jmeter会停止运行 如果线程有100个数据只有10行代表第10行后一个文件结束符那么只能调用10次接口 False表示遇到文件结束符不停止线程意思是Jmeter还会继续跑-如果线程有100个数据只有10行代表第10行后一个文件结束符可以调用100次接口【注意】“遇到文件结束符再次循环”和“遇到文件结束符停止线程”必须不一样一个为False另外一个必须时True否则有一个设置不起作用因为冲突导致下面一个设置失效了
文件共享模式
线程共享模式线程共享数据的模式 所有线程共享如果CSV数据文件设置在测试计划下所有线程都能共享访问CSV读取出来的数据包括跨线程组的线程如果CSV数据文件设置在线程组下相当于当前线程组生效 在所有线程共享的模式下如果是两个不同的线程组每个线程组都只有1个请求第一个线程组使用第一条数据后第二个线程组的HTTP请求就使用第二条数据 多个线程组内存中只有一份数据如果CSV文件设置在测试计划下 当前线程组当前线程组中的所有线程共享访问CSV读取出来的数据有几个线程组内存中就有几份相同的数据如果CSV文件设置在测试计划下 当前线程每个线程单独访问CSV读取出来的数据 每个线程私有一份如果CSV文件设置在测试计划下有多少个线程就有多少份线程的数量是多个线程组中线程的总量即可以跨线程 运行时线程只会取内存中属于自己的那份CSV问价且都是从头开始读取 编辑自定义功能目前无法使用
设置下面的CSV设置项之后要修改关联
如果一个用户需要运行完文件中的多条数据可添加循环次数来解决
Jmeter关联
关联将多个接口关联到一起例如将上一个接口的响应数据作为下一个接口的请求数据实现方法 调用A接口获取A接口的响应数据 在A接口下添加后置处理器然后利用后置处理器提取A接口响应数据的某个字段 提取jmeter后置处理器提取的数据在B接口中引用 运行查看结果 jmeter后置处理器有很多种在此重点介绍3个 正则表达式提取器使用正则语法来提取数据 作用能提取任何个数据并且效果高 缺点难以掌握容易遗忘 Xpath提取器用来提取XML或者HTML中的数据 作用能对XML、HTML的格式提取数据 缺点只能提取XML和HTML格式的数据语法难度和正则相似 json提取器专门用来提取json结构的数据 作用针对json数据提取需要的数据 缺点只能提取json数据 边界提取器确定左边界和有边界的信息提取两个边界中间的数据 作用确认边界之后能提取任何个数据且比较简单 可以看做是正则提取器的简单版 使用关联后需要添加调试取样器来查看 添加方式线程组——添加——取样器——调试取样器 添加完成后可在查看结果树中查看结果
正则表达式提取器
正则表达式是一种字符串匹配模式可以满足匹配条件的字符串进行提取替换等操作添加正则表达式提取器的方式取样器——添加——后置处理器——正则表达式提取器
详情元素介绍
Apply to提取数据的接口 Main sample and sub-sample对所有主请求和子请求生效 Main sample only只对主请求生效推荐 Sub-sample only只对子请求生效 jmeter Variable Name to use对jmeter变量生效 主请求和子请求的定义 在发送接口请求时请求资源的URL如果被征用了那么服务器就可能返回一个重定向的URL给客户端客户端如果配置了自动重定向的功能呢就会根据服务器返回的新的URL重新定位到最新的资源 那么我们在发送一个接口请求的时候就会产生多个请求其中主请求就是真正有效的请求子请求就是重定向过程中的请求 需要检查的响应字段主要指要提取的数据只能选择一个 主体响应体 Body(unescaped)也是响应体但是会自动忽略特殊字符功能不稳定因此不推荐 Body as a Document还是响应体以文件形式存在互联网传输的接口数据都是文件 信息头响应头 Request Headers请求头 URL请求的URL 响应代码响应状态吗 响应信息响应状态吗的信息 引用名称匹配成功后保存数据的变量名
正则表达式
填写正则表达式正则表达式规则 正则表达式组合 正则表达式语法介绍 需要掌握\d \w \D \W [^a-z] [^0-9] [0-9] [a-z] . * ? ^;注意^在中括号内外的不同含义万能正则表达式(.*?),几乎可以匹配任何文本正则表达式文本框中可以写多个正则表达式但是需要(.*?)作为分隔符隔开例如下图的表达式和结果
注意事项 Jmeter中的正则表达式必须写在小括号中也就是说小括号中的内容就是正则表达式 中括号和大括号在表达式中存在特殊的用途不能乱用 要准确写出
模板及匹配多组数据的使用
匹配出多组数据时可以通过模板选择具体某种组合或者全部数据 $1$选择第一组数据 $2$选择第二组数据 匹配数字0代表随机-1代表全部按照正则表达式提取数据按照模板筛选之后如果数据还有多余可以使用匹配数字选择某一组数据保存到引用名称的变量中
Xpath提取器
Xpath提取器主要用来提取XML和HTML的数据添加方法取样器——添加——后置处理器——Xpath提取器
详情元素介绍
XML Parsing Options:XML的解析器 Use Tidly勾选后就解析HTML数据不勾选解析XML数据 Use Namespaces如果启用该选项后续的XML解析器将使用命名空间来进行分辨 Validate XML根据页面元素模式进行检查解析 Ignore Whitespace忽略空白内容 Fetch external DTDs如果选中该选项外部将使用DTD规则来获取页面内容 引用名称使用Xpath表发誓提取出来的数据保存到引用名称设置的变量中Xpath query填写Xpath表达式的地方匹配数字 1代表全部 0随机选中一个数据 1选中匹配的数据列表中的第一个数字 N选中第n个数字 缺省值没有匹配到时的默认值
Xpath表达式
Xpath提取数据时默认都是从根节点开始寻找但是按照匹配的规则也可以全局搜索 Xpath定位方式
json提取器
json提取器专门用来提取json数据添加方法取样器——添加——后置处理器——json提取器
详情元素介绍
Names of creat variable保存的变量后面接口要使用的变量名JSON Path expreesionJsonPath表达式通过JSON表达式提取数据Math No.(0 for Random)如果JSON表达式中提取了多组数据那么按照数字选择某组数据 0表示随机一个设置 -1表示获取全部数值变量名称会自动加上下划线和一个数字引用的时候需要注意因为变量名称已经发生了变化 正数当正数数值小于返回数据的个数时表示列表/元组中索引填写几就是第几个数据 当返回的数组中只有一个值的时候可以填写任意大于等于0的数值 当正数数值大于返回数据的个数时返回结果为空 Compute concatenation var(suffix_ALL):如果JSON表达式提取器提取了多组数据并且勾选了Compute concatenation var(suffix_ALL)那么自动拼接所有数据以逗号作为分隔符然后保存到Name of creat variable设置的变量中Default Values:默认值一个json提取器可以写多个jsonpath提取方式多个jsonpath提取式可以使用英文的分号隔开这个时候就必须填写 Default Values
JsonPath语法 $表示提取根节点的数据 $.a表示从根节点开始寻找根的字节点a并提取a的数据 $.a.b表示从根节点开始寻找根的字节点a并返回b的数据 -$.a[条件].b如果一个字节点a是列表那么可以这样写代表提取a列表中满足【表达式】筛选条件所有数据中节点b的值 比较复杂的表达式$.content[?(.id)31)].courseName具体规则拿到json信息后按照规则将参数名写在具体位置上
边界提取器
和正则提取器很类似也可以提取请求或者响应中的信息需要准确的写出左边界和右边界可以作为正则提取器无法熟练使用时的替代品添加方法取样器——添加——后置处理器——边界提取器
页面元素介绍
页面上的信息和正则表达式基本一致不一样的只有两个 左边界匹配文本左边的文本信息 右边界匹配文本右边的文本信息
Jmeter断言——性能测试脚本中不建议写
性能测试中的断言
断言预期结果和实际结果进行比较一致说明没有问题不一致说明有bug 受写断言的写法有关如果脚本的断言有错误本来请求是成功的也会被认定为失败 断言执行时在受到响应之后采集行的这个断言的执行是jmeter的执行和服务器没有关系 断言代码的执行需要一定的资源和时间这些都是jmeter工具造成的 因此就会导致jmeter在进行断言的时候需要分配一定的资源给断言来进行执行执行断言需要一定的时间因此导致下一次发起的请求有一定的延迟 因此在一定时间内发起的请求数量减少了也就造成了短时间内对服务器造成的总压力不足对服务器进行的性能测试的结果指标误差就更大了因此从这个角度来讲不建议在性能测试脚本中写断言
再次强调
在性能测试中默认的成功与失败只和状态码有关与响应结果内容的准确性无关默认成功的状态码1XX、2XX、3XX默认失败的状态码4XX、5XX如果加了断言就是人为强制的讲响应结果的正确性与jmeter的成功和失败挂钩也就人为的干预了测试结果因此也就人为的干预了性能测试的结果指标成功率那么性能测试的结果就出现了错误的判断从这个角度来讲也不建议性能测试脚本中写断言
疑问脚本中有断言但是性能测试时禁用可以吗
禁用类似代码中的注释不执行脚本这个脚本就不会被执行只是增加了脚本的长度这种情况下是允许的
断言的介绍
Jmeter断言主要有三秒钟 响应断言 Json断言 Xpath断言 一个小的知识点补充查看结果树中 如果类型时JSON Path Tester可以定位json表达式 如果类型时RegExp Tester可以定位json表达式
响应断言
添加方式取样器——添加——断言——响应断言 Apply to 选择对主请求和子请求生效 Main sample and sub-sample:断言对主请求和子请求生效 Main sample only:断言只对主请求生效 sub-sample only断言只对子请求生效 jmeter Variable Name to use断言只对jmeter内部的变量生效 测试字段窗口包括请求数据和响应数据在这里可以根据选择断言部分请求数据和响应数据以及全部数据 响应文本断言响应体的内容推荐 响应代码断言响应状态吗200 响应头断言响应头 请求头断言请求头 URL样本断言请求的URL 文档文本断言所有响应数据状态行响应头响应体 忽略状态不断言响应状态吗 请求数据断言所有请求数据 模式匹配规则断言的逻辑表达式 包括如果响应数据包括【测试模式】中指定的正则表达式匹配的数据那么断言通过 匹配如果整个文本完全匹配【测试模式】中指定的正则表达式匹配的数据那么断言通过 相等如果整个文本完全匹配【测试模式】中指输入的数据那么断言通过非正则表达式 字符串如果整个文本匹配【测试模式】中指输入的数据那么断言通过非正则表达式 否取反 或如果响应数据满足【测试模式】中任何一个指定的规则则断言通过 如果断言通过查看结果树前面都是绿色的对号如果断言失败查看结果树中会显示红色的叉号并且断言未通过的接口下会有一个字节点“响应断言” 断言样例如下
JSON断言
添加方法取样器——添加——断言——json断言作用和响应断言相比json断言只能对json结构的数据进行断言当响应体是json结构的数据时我们使用json断言比响应断言的性能更好断言规则 先判断断言的目标数据是不是json数据如果不是断言失败 再判断断言的目标数据中指定的json表达式是否有效如果无效断言失败 最后判断断言的目标数据中json表达式指定的数据与预期数据是否一致如果不一致断言失败 样例如下
Xpath断言
主要针对XML数据或者HTML数据进行断言添加方法取样器——添加——断言——Xpath断言断言表达式中等号左侧表示实际数据右侧表示预期数据详见下图
jmeter生成测试报告
jmeter是不能直接生成HTML测试报告需要借助工具Ant来生成Ant是采用java语言编写主要作用是对程序进行编译、组装、测试和运行java程序再jmeter这里我们主要是使用ant运行jmeter文件生成测试报告安装Ant下载网址 解压安装包 配置环境变量 我的电脑——属性——高级设置——增加ant的目录信息——配置path变量windows 打开终端在 ~使用open .bash_profile打开配置文件增加以下代码,然后使用source ~/.bash_profile命令让填写的环境变量生效即可
export ANT_GOME ANT的解码路径
export PATH $PATH:$ANT_HOME/bin验证ant安装成功的办法在cmd或者终端总输入ant -v如果显示版本号就说明安装成功了安装成功后还要进行 在jmeter的extras中存在ant-jmeter-版本.jar 的jar包将这个包放在ant的lib文件中 配置ant的bulid.xml和jmeter-results-detail-report_21xsl配置文件(在jmeter的extras中) 在build.xml中指定了以下内容 ant要运行的jmeter的脚本名称 ant要生成html报告央视模板内容 ant运行jmeter脚本时要依赖的jar包 ant生成html报告的内容 使用jmeter生成HTML报告需要以下步骤 第一步保存jmeter脚本方式文件——保存测试计划为这个保存的就是最终要运行的脚本文件 第二步保存jmeter脚本运行时生成的文件数据查看结果树中直接在文件名中写入路径信息就会将数据文件保存到相应的路径下 这一步保存的文件必须是xml文档设置方式为点击查看结果树文件名后的【配置】 然后在Sample Result Save Configuration弹框中勾选Save As XML选项路径和需要勾选的选项如下 保存测试计划和数据文件时最好与bulid.xml、jmeter-results-detail-report_21xsl放在一个路径下运行时在cmd或者终端中输入ant -f build.xml后会生成html的测试报告build.xml中决定测试计划和数据文件名称的地方如下图示例名称必须和配置文件保存一致
Jmeter定时器——性能测试中不建议使用
性能测试中的定时器
jmeter中如果在线程组中添加了定时器会对所有的取样器都有效添加之后所有的取样器例如HTTP请求调试取样器等都会等待定时器设置的时间之后再使用下一个下取样器定时器会延缓发送请求的频率从而导致对服务器的请求阿里变小这样就反应不了服务器额真是压力例如原本1min可以调用1000次接口加了定时器之后可能只能调用100个因此对服务器造成的压力就不足了因此性能测试过程中不建议使用定时器
性能测试过程中的集合点同步定时器
集合点或者同步定时器是讲所有接口集合在某个点之后瞬间发起请求会造成某一秒对服务器的瞬间压力但是压力过去之后又需要等待一定的时间再去对服务器发起瞬间请求场景就是一瞬间的压力等待再一瞬间的压力一定时间之内发起的请求数可能还会小于不加集合点发起的请求这种和不添加集合点持续对服务器进行很大的压力相比不添加集合点会更容易发现性能测试的问题因此也不建议性能测试中添加集合点
定时器的介绍
Jmeter的定时器主要用来控制每个取样器的执行间隔 主要用于测试调用第一个接口之后因某种原因需要管段时间才能去第二个接口中获取结果的场景例如转账、异步获取互动数等等 执行并发测试时也需要用到定时器的集合点例如要模拟1000个用户同时请求但是客户端1s只能启动100个因此需要等1000个全部启动在集合点集合之后全部发送 当前重点介绍两个接口测试中的概念分别是思考时间和集合点 思考时间模拟真实用户操作的延迟时间 集合店在客户端控制并发送请求的功能实现幂等测试
思考时间
线上所有用户平均操作的间隔时间思考时间的计算公式线上活跃用户数/每秒点击数思考时间的添加方式线程组——定时器——统一随机定时器 上图中的固定延迟时间可以理解为最小等待时间统一随机定时器设置的思考时间 固定延迟时间不超过最大延迟时间的随机值如果固定延迟时间设置1000毫秒最大延迟时间设置为9000毫秒 那么思考时间在一个1秒到100秒之间的随机数 如果想设置固定值就不设置最大延迟时间就可以了
同步定时器集合点
在接口测试中同步定时器主要用来进行幂等测试在接口的性能测试中同步计时器主要作用是用来进行并发测试幂等测试判断请求完全一模一样的服务器是否能够正常处理 例如同时发送一模一样的注册接口请求验证服务器只能注册一个用户 并发测试同时发送多个请求验证服务器的并发处理能力幂等测试是并发测试的一种但是幂等测试更关注“完全相同”而并发测试关注发送多个接口请求 例如幂等测试的注册关注的是注册信息完全相同并发测试的注册必须使用不同的账号注册 添加方法线程组——定时器——同步定时器 模拟用户组的数量和测试计划中的线程组数量必须一致
jmeter逻辑控制器
性能测试中的逻辑控制器
首先条件控制器只有结果为真的情况下才会运行其子节点中的取样器 如果在性能测试中使用条件控制器只会让我们的请求变得很混乱杂乱无章 使用条件控制的脚本并不是性能测试中的混合场景 什么是混合场景不同数量的人同时对不同的接口发起请求当前了解 实现方式多个线程组每个线程组下有不同的接口每个线程组有不同的线程数
逻辑控制器的介绍
作用控制父子节点和控制执行流程、 例如在线程组下添加简单控制器然后就可以再次添加HTTP请求、断言等这样就实现了作用域的控制 jmeter的逻辑控制器主要包括循环控制器if控制器和For each控制器3中这三种控制器分别用来进行循环控制条件控制和跌倒控制 循环控制器相当于python中的for循环 if控制器相当于python中的if条件循环 For each控制器也是for循环增加了适配jmeter变量的功能
循环控制器
添加方式线程组——逻辑控制器——循环控制器作用使用同一个请求体重复发起相同的请求 当请求体中存在函数或者变量的时候请求体的数值也会发生变化 如上设置完成之后HTTP请求必须是逻辑控制器的子节点时才可以完成循环
条件控制器——性能测试中几乎不用
条件控制器的添加方法线程组——添加——逻辑控制器——if控制器必须使用groovy或者jexi3的函数文本框中的结果必须是True或者False使用场景就是Expression文本框中的条件表达式结果为真或者为假结果为真的情况下if控制器中中的子节点取样器会被执行为假的情况下就不会去运行其子节点中的取样器 如何通过jmeter实现测试环境和开发环境的切换 在测试计划的用户变量中输入测试环境和开发环境的域名及端口号分开写两个变量 在线程组下新建if控制器并填写条件表达式 使用这个控制元件判断的是调用那这个HTTP请求HTTP请求中的域名和端口号变量调用的话实际上用的是测试计划中的变量__jex13函数表达式在函数助手中选择jex13然后输入条件自动生成
For each控制器
作用每次使用不同的值重复的发请求接口是同一个地址但是请求体可以变For each控制器是jmeter为了适配后置处理器中的XX提取器而设置的一个元件 例如当我们使用正则表达式提取器提取网站某个培训网站的全部课程时会获取多个课程这些课程在jmeter中会以变量名_1、变量名_2、变量名_3的方式体现 添加方法线程组——添加——逻辑控制器——for each控制器 这个控制器的用法举个例子在一个接口中可以返回某用户的多个订单id但是没有订单详情 根据这个场景我们就可以将接口中的订单id提取出来然后调用查看订单详情按钮循环多次获取所有订单的详情一个个订单查询
仅一次控制器——性能测试中常用
不论运行多少时间每个线程只会运行一次注意不是每个线程组是每个线程线程线程即用户数添加方式线程组——添加——逻辑控制器——仅一次控制器只需要添加名称和注释信息即可
事务控制器
jmeter中默认一个取样器的1次完整的请求就是一个事务事务控制器的作用将多个取样器的完整的请求当做一个事务一般用于测试工作流程或者业务场景的性能使用事务控制器的时候性能测试中要勾选第一个复选框来合并样本(Generate parent sample)性能测试中是先做单接口用不到事务控制器然后再使用事务控制器合并多个接口测试多接口/工作流程/业务的性能 单接口的性能测试一般情况下是一个线程组下只启用一个接口 但是需要关联的接口例如下单因为要先登录才能进行下一步这样的话就会出现一个线程组下有至少两个启用的接口 上面的场景中**如果要对下单的接口进行性能测试就需要将前面的接口登录放在一个仅一次控制器中**
聚合报告
添加方式线程组——添加——监听器——聚合报告 聚合报告中的样本值是一段时间内发起的总请求量响应时间相关的数值单位是毫秒90%95%99%指的是将响应时间从低到高排序总序列个数的90%、95%、99%次的响应时间是XX毫秒 例如一共1000次请求90%指的是第900次95%指的是第950次 接受和发送指的是每秒发出/接收到多少请求列表中行每一行指的是一种事务