目录
一、JMeter常用测试元件
1.线程组
2.调度器
3.控制器
4.监听器
5.定时器
6.断言
7.配置元件
8.前置处理器
9.后置处理器
二、Jmeter组件参数化
1. 参数化是什么
2. 为什么使用参数化
3. 参数化实现之用户自定义变量
4. 参数化实现之CSV Data Set Config
5. 使用Jmeter函数助手(文件中不要出现中文):
一、JMeter常用测试元件 1.线程组
线程组是任何测试计划的起点,所有的逻辑控制器和采样器都必须放在线程组之下。其他的测试元件(如监听器)可以被直接放在测试计划之下,这些测试元件 对所有线程组都生效。线程组就像它的名字所描述的那样,被用来管理执行性能测试所需的JMeter线程。用户通过线程组的控制面板可以:
设置线程数量;
设置线程启动周期;
设置执行测试脚本的循环次数;
每一个JMeter线程都会完整地执行测试计划,而且它们之间是完全独立运行的。这种多线程机制被用来模拟服务器应用的并发连接。参数Ramp- Up Period告诉JMeter达到最大线程数需要多长时间。假定共有10个线程,Ramp-Up Period为100秒,那么JMeter就会在100秒内启动所有10个线程,并让它们运转起来。每一个测试线程都会在上一个线程启动10秒之后才开始 运行。假定共有30个线程,Ramp-Up Period为120秒,那么线程启动的间隔就为4秒。
Ramp-Up参数不能设定得太短,否则在测试的初始阶段会给予服务器过大的压力。Ramp-Up参数也不能设定得太长,否则就会发生第一个线程已经执行完毕,而最后一个线程还没有启动的情况(除非测试人员期望这种特殊情况发生)。
如何找到一个合适的Ramp-Up参数值?建议初始值可以设定为Ramp-Up=总线程数,后续再根据实际情况适当增减。
2.调度器在调度器控制面板中,可以设定测试运行的"启动时间"和"结束时间"。测试启动后会一直等待,直到用户设定的启动时间。测试运行期间,JMeter 会在每一次循环结束后,检查是否已经达到结束时间。如果已经达到了结束时间,JMeter就会终止测试运行,否则JMeter会继续下一个测试循环。
另外,用户还可以设定"持续时间"和"启动延迟"两项参数。需要注意的是,"启动延迟"会使"启动时间"无效,而"持续时间"会使"结束时间"无效。
3.控制器JMeter有两种类型的控制器:采样器和逻辑控制器,二者结合起来驱动了测试进程。采样器被JMeter用来向服务器发送请求。例如,当测试人员想往服务器发送一个HTTP请求时,就加入一个HTTP请求采样器。测试人员还可以通过为采样器添加配置元件来定制化请求。
用户可以使用逻辑控制器来控制JMeter的测试逻辑,比如何时发送请求。举一个例子:测试人员可以插入交替控制器来轮流发送多个请求。
(1)采样器采样器告诉JMeter发送一个请求到指定服务器,并等待服务器的请求。采样器会按照其在测试树中的顺序去执行,还可以用逻辑控制器来改变采样器运行的重复次数。
每一种采样器都有多种参数可供设置。测试人员还可以通过在测试计划中加入一个或者多个配置元件,来进一步定制化采样器。
如果测试人员打算向同一个服务器发送同一类请求,可以考虑使用默认配置元件。每一类采样器都有一个或多个对应的默认配置元件。一定记住应为测试计划添加一个监听器,以便查看和存储(存储到磁盘)请求的结果。
如果测试人员想检查服务器响应的内容,可以为对应采样器添加断言。例如,当对Web应用做压力测试时,服务器虽然成功返回了"HTTP Response"代码,但是页面上可能会有错误,或者丢失了部分页面片段。针对这种情况,测试人员可以添加断言来检查特定的HTML标签,或者常见的错 误信息等。JMeter允许在断言中使用正则表达式。
(2)逻辑控制器
逻辑控制器可以帮助用户控制JMeter的测试逻辑,特别是何时发送请求。逻辑控制器可以改变其子测试元件的请求执行顺序。
4.监听器监听器提供了对JMeter在测试期间收集到的信息的访问方法。"图形结果"监听器会将系统响应时长绘制在一张图片之中。"查看结果树"监听器会展示采样器请求和响应的细节,还能以HTML和XML格式展示系统响应的基础部分。其他监听器通过总结或者聚合方式展示信息。
另外,监听器可以将测试数据导入到文件之中,以供后续分析。所有监听器都会提供一个输入域,以便于用户指定存储测试数据的文件。监听器还会提供一个 配置按钮,用来配置存储测试数据的哪些字段,以及选用的存储格式(CSV或者XML)。读者朋友需要注意的是,所有监听器都保存同样的数据,唯一的区别是 它们如何展示数据。
监听器可以在测试的任何地方添加,包括直接放在测试计划之下。它们仅收集测试树中相同或者更低级别测试元件的数据。
5.定时器默认情况下,JMeter线程在发送请求之间没有间歇。建议为线程组添加某种定时器,以便设定请求之间应该间隔多长时间。如果测试人员不设定这种延迟,JMeter可能会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。
定时器会让作用域内的每一个采样器都在执行前等待一个固定时长。如果测试人员为线程组添加了多个定时器,那么JMeter会将这些定时器的时长叠加起来,共同影响作用域范围内的采样器。定时器可以作为采样器或者逻辑控制器的子项,目的是只影响作用域内的采样器。
要在测试计划中的某个位置添加暂停,测试人员可以使用"Test Action"采样器。
6.断言用户可以使用断言来检查从服务器获得的响应内容。通过断言可以测试服务器返回的响应与测试人员的期望是否相符。
例如,测试人员可以断言某个查询的响应中包含特定的文字信息。测试人员可以使用Perl格式的正则表达式来描述响应中应该包含的文字,或者它应该与整个响应相符。
测试人员可以为任何采样器添加断言。例如,测试人员可以为HTTP请求添加断言,用于检查文本""。接下来JMeter就会检查该文本是否出现在HTTP响应中。如果JMeter不能找到该文本,那么它就会将请求标记为失败。
需要注意的是,断言会影响作用域内的所有采样器。如果要让断言只影响某个采样器,需要将断言作为该采样器的子项。
如果要查看断言结果,可以为线程组添加"断言结果"监听器。失败的断言,也会在"查看结果树"和"用表格查看结果"两种监听器中显示。另外,在"Summary Report"和"聚合报告"中还会以错误百分率的形式统计。
7.配置元件配置元件与采样器紧密关联。虽然配置元件并不发送请求(除了HTTP代理服务器例外),但它可以添加或者修改请求。
配置元件仅对其所在的测试树分支有效。例如,假设测试人员在一个简单逻辑控制器中放置了一个HTTP Cookie管理器,那么该HTTP Cookie管理器只对放置在简单逻辑控制器内的其他逻辑控制器生效
另外,相比父分支的配置元件,子分支内部的配置元件优先级更高。配置元件 "用户定义的参数"会在测试的初始阶段执行(无论它处于测试树的哪个位置)。
8.前置处理器前置处理器会在采样器发出请求之前做一些特殊 *** 作。如果前置处理器附着在某个采样器之下,那么它只会在该采样器运行之前执行。前置处理器通常用于在采样器发出请求前修改采样器的某些设置,或者更新某些变量的值(这些变量不在服务器响应中获取值)。
9.后置处理器后置处理器会在采样器发出请求之后做一些特殊 *** 作。如果后置处理器附着在某个采样器之下,那么它只会在该采样器运行之后执行。后置处理器通常被用来处理服务器的响应数据,特别是服务器响应中提取数据。
最后,对于这么多的部件,JMeter执行顺序规则如下:
配置元件
前置处理器
定时器
采样器
后置处理器(除非服务器响应为空)
断言(除非服务器响应为空)
监听器(除非服务器响应为空)
只有当作用域内存在采样器时,定时器、断言、前置/后置处理器才会被执行。逻辑控制器和采样器按照在测试树中出现的顺序执行。其他测试元件会依据自 身的作用域范围来执行,另外还与测试元件所属的类型有关(归属于同一类型的测试元件,会按照它们在测试树中出现的顺序来执行)。
二、Jmeter组件参数化 1. 参数化是什么动态的获取并设置数据
2. 为什么使用参数化**
执行批量 *** 作,批量添加批量删除,人工效率太低
运用程序代替人工获取并设置数据,安全高效
比如:对被测系统的用户名和密码进行参数化,来模拟多个用户同时登录系统
复制代码
3. 参数化实现之用户自定义变量
通过这个功能,能实现多接口共享数据,修改一条即可修改全部
Filename:所需数据文件的路径。如和脚本同一路径,可直接填写文件名
File encoding:编码和文件保持一致即可,默认为ANSI。如有中文,建议为UTF-8
Variable Names:引用变量时的变量名,对应数据文件中的每一列,以逗号分隔。如不填写,文件的第一行数据将被读取为变量名
Delimiter:在.txt、.dat文件中,可以用逗号(,)或者Tab键(\t)来区分列与列
Allow quote data:选项选为“true”的时候对全角字符的处理出现乱码
Recycle on EOF:到数据文件结尾时是否循环读取。设置为True时,线程数过多,数据文件读取到最后一行时,会再次从第一行开始读取。设置为False,到达文件结尾时如继续读取,则值会默认为,可通过设置jmeter属性csvdataset.eofstring来改变该值。
Stop thread on EOF:Recycle on EOF设置为False,Stop thread on EOF设置为True,则读取数据文件最后一行后,停止测试,不管还有多少线程组未执行。
Sharing mode:共享模式。默认在所有线程组中使用,可选择每个线程组单独打开
相同的部分使用用户自定义变量
只需要修改一次接口
效果展示
添加CSV Data Set Config:
添加界面:
通过这个组件可以动态获取并设置数据,实现批量添加 *** 作
名词解释:
**
Filename:所需数据文件的路径。如和脚本同一路径,可直接填写文件名
File encoding:编码和文件保持一致即可,默认为ANSI。如有中文,建议为UTF-8
Variable Names:引用变量时的变量名,对应数据文件中的每一列,以逗号分隔。Delimiter:在.txt、.dat文件中,可以用逗号(,)或者Tab键(\t)来区分列与列
Allow quote data:选项选为“true”的时候对全角字符的处理出现乱码
Recycle on EOF:到数据文件结尾时是否循环读取。设置为True时,线程数过多,数据文件读取到最后一行时,会再次从第一行开始读取。设置为False,到达文件结尾时如继续读取,则值会默认为,可通过设置jmeter属性csvdataset.eofstring来改变该值。
Stop thread on EOF:Recycle on EOF设置为False,Stop thread on EOF设置为True,则读取数据文件最后一行后,停止测试,不管还有多少线程组未执行。
Sharing mode:共享模式。默认在所有线程组中使用,可选择每个线程组单独打开
引用:
在jmeter中添加
线程数改为某个值
查看结果树:
其他:
- 线程组线程数改为大于文件中数据的处理:
遇到结束符在循环
遇到结束符停止线程 - 如果数据来自数据库
数据库导出txt文件
**
1、点击 选项-->函数助手 调出函数助手对话框
2、选择 _CSVRead 函数(下图第一个框)
3、函数参数:
1)第一个参数:填写文件路径。
2)第二个参数:文件列号是从0开始的,第一列0、第二列1、第三列2、依次类推,然后点击【生成】按钮,则会自动生成我们需要的参数化函数。
3) 复制生成的参数化函数, copy过程需要使用的地方即可。
4) _Random函数是从某数据段随机读取数据替换参数,当需要添加多条数据记录且某些字段需要唯一性时使用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)