Jmeter使用手册
上一篇 / 下一篇 2016-12-20 17:39:37 / 个人分类:个人总结
2、全功能的测试IDE支持快速测试计划:录制(从浏览器或本地应用程序)、编译、调试.
3、命令行模式(NO GUI/Headless Mode)可以在兼容java的操作系统上加载测试(Linux、Windows、Mac OSX……)
4、展示完备的的动态HTML报告;
5、通过从主流的响应格式文本(HTML、JSON、XML)或其他格式文本提取数据而易于关联;
6、完全的可移植性和纯java;
7、完全的多线程框架支持多线程并发采样以及独立的线程组采样不同的功能;
8、测试结果的缓存、离线分析/重放;
9、高扩展性:
使用Jmeter
1概述
1.1要求
1.1.1Java版本
Jmeter需要一个完全兼容的JVM7或8;
JVM(Java虚拟机)使java可以兼容不同的操作系统,在不同的操作系统不需要重新编译而直接运行;
JDK(Java Development Kit):包含了JRE、java工具包、java基础类库;
JRE(Java Runtime Environment):Java虚拟机(jvm)、Java核心类库和支持文件
1.1.2操作系统
Jmeter可以在任何支持java的操作系统上运行;
1.2安装
解压压缩包到安装目录(注意安装目录不能有空格),保证配置了JDK/JRE的环境变量即可;
可以重命名最外层的安装文件夹名称,但是里面的不能重命名;
1.3运行Jmeter
windows:在安装文件bin目录下,运行jmeter.bat;
Unix:在安装文件bin目录下,运行jmeter;
GUI mode should only be used for creating the test script, NON GUI mode must be used for load testing??
1.3.1Jmeter的类路径
Jmeter自动从JEMETER_HOME/lib(Jmeter的实现jar包)和JEMETER_HOME/lib/ext(Jmeter的组件和插件)下找方法类;
其他像JDBC、JMS的jar包要放在JEMETER_HOME/lib目录下;
1.3.2从模板创建测试计划
可以通过如下按钮或者是选择file-templates来创建标准模板的测试计划,里面有多种分类:
从文件中加载元素,右键选中想要添加元素的已存在的树的元素,选择“合并”按钮,打开预添加元素保存的位置,选择后,这个元素将被合并至当前树中;
要保存树元素,请右键单击元素,然后选择“将选择另存为...”选项。 JMeter将保存所选的元素,加上它下面的所有子元素。 这样,您可以保存测试树片段和单个元素供以后使用。
默认情况下,工作台不会随测试计划自动保存,但可以通过选中Workbench元素上的“保存工作台”选项来保存。
测试树中的任何元素将在JMeter的右侧框架中显示控件。这些控件允许配置测试元素的特性;
2.4保存测试计划
建议在运行测试计划之前将测试计划保存到文件。要保存测试计划,请从文件菜单中选择“保存”或“保存测试计划...”
2.5运行测试计划
要运行测试计划,从“运行”菜单项中选择“开始”(Control + r)。当JMeter运行时,它在菜单栏正下方部分的右手端显示一个小绿色框。您还可以选中“运行”菜单。如果“启动”被禁用,并且“停止”被启用,那么JMeter正在运行你的测试计划;
2.6停止测试计划
关闭(control+,)请求线程在任何当前工作结束时停止。不会中断任何活动样本。模态关闭对话框将保持活动状态,直到所有线程都停止。
2.7错误报告
通常不会在日志文件中报告样本错误(例如HTTP 404 - 找不到文件)。这些被存储为样本结果的属性,可以在各种不同的侦听器中查看样本结果的状态。
测试计划的配置项有一个函数测试模式复选框.如果勾选,Jmeter将会记录从服务器返回的每个样本的数据,越积越多,从而影响Jmeter的性能,所以如果线程组或者线程组里的交互过多,则不要勾选;(例如做压力测试时)
调度器测试:
2)循环次数:100次;启动时间<now;结束时间>now;持续时间:1s;点击"启动"
3.2.2逻辑控制器
逻辑控制器可以按用户定制来决定何时发起请求,发起请求的顺序,发起请求的次数等等;
可以通过如下的测试树来进一步理解逻辑控制器的作用:
测试计划
线程组
仅一次控制器
请求逻辑(一个HTTP请求)
加载搜索页(一个http sampler)
隔离控制器
搜索"A"(一个http sampler)
搜索"B"(一个http sampler)
HTTP默认请求(配置元件)
HTTP默认请求(配置元件)
Cookie管理器(配置元件)
首先让我们看登录请求(Login Request),在整个测试中它只会运行一次,在剩下的测试循环中它会被忽略,原因就在于仅一次控制器(Once Only Controller).
在登录之后,接着是载入搜索页面的采样器,它仅仅是一个普通采样器,没有父逻辑控制器.
在加载搜索页面后,我们想做一个搜索。事实上我们想做两种完全不同的搜索,而且在不同搜索之间还要重新加载搜索页面。如此一来就需要4个HTTP请求测试元件(加载搜索页面,搜索"A";加载搜索页面,搜索"B")。这里有一个更简单的办法,那就是使用交替逻辑控制器,它会在每一次测试循环中仅执行一个子请求。它还会记住子请求的顺序,而不是随机执行。交替执行两个子请求没有太大意义,但是它可以轻松扩展到8个或者20个,甚至更多子请求。
注意交替逻辑控制器下的HTTP请求默认值(HTTP Default Request)。考虑这样一种情况,搜索"A"和搜索"B"有同样的路径信息(HTTP请求明细包含域、端口、方法、协议、路径、参数以及其他可选的信息)。这就意味着它们都是搜索请求,而且背后有同样的搜索引擎(servlet 或者 cgi-script)。与其在每一个HTTP采样器路径域中设置同样的信息,不如将它们抽取出来放到一个配置元件中。当交替控制器处理请求搜索"A"和搜索"B"时,它会为请求的空白信息栏填充HTTP请求默认值中保存的值。因此将请求的路径域留为空白,并将该信息放到配置元件中。在这个例子中对配置元件的好处没有得到充分展现,但是它演示了配置元件的特性。
所有的Web测试都应该添加Cookie管理器,否则JMeter就会忽略Cookie。通过把HTTP Cookie管理器添加到线程组,就能确保所有HTTP请求共享相同的Cookie.
逻辑控制器可以组合起来以达到各种测试目的.
3.2.3测试片段
测试片段元素是一类存在于测试计划树下,与线程组同级别的特殊控制器;一般不会执行,除非被include 控制器和模块控制器引用;
3.3Listeners
所有类型的Listeners都是保存相同的结果数据,唯一区别是在屏幕上的呈现方式不同;
可以在测试计划树的任意位置添加,只记录同级或更低级别的数据;
3.4定时器
默认情况下,JMeter线程在发送请求之间没有间歇。建议为线程组添加某种定时器,以便设定请求之间应该间隔多长时间。如果测试人员不设定这种延迟,JMeter可能会在短时间内产生大量访问请求,导致服务器被大量请求所淹没。
用定时器可以模拟用户真实的使用场景;(例如登录成功之后,会过一定时间后才会有查询的动作)
定时器会让作用域内的每一个采样器都在执行前等待一个固定时长。如果测试人员为线程组添加了多个定时器,那么JMeter会将这些定时器的时长叠加起来,共同影响作用域范围内的采样器。定时器可以作为采样器或者逻辑控制器的子项,目的是只影响作用域内的采样器。
要在测试计划中的某个位置添加暂停、停止、继续下个迭代等,测试人员可以使用"Test Action"采样器.
3.5断言
用户可以使用断言来检查从服务器获得的响应内容。通过断言可以测试服务器返回的响应与测试人员的期望是否相符。
例如,测试人员可以断言某个查询的响应中包含特定的文字信息。测试人员可以使用Perl格式的正则表达式来描述响应中应该包含的文字,或者它应该与整个响应相符。
可以给测试计划、线程组、任意采样器添加断言.
断言结果可以在一些Listeners里看到,例如断言结果、查看结果树;
3.6配置元件
配置元件虽然不发送请求,但是它可以添加或者修改请求。配置元件仅对其所在的测试树分支有效。例如:请求1下有一个定时器1、请求2下有一个定时器2,定时器3与请求1、请求2并列,那么定时器1的作用域是请求1、定时器2的作用域是请求2,定时器3的作用域是请求1、请求2;(可理解为请求1和定时器2不在一个分支、请求2和定时器1不在一个分支,所以不能被影响)
对于定时器来说,它会把受不同定时器控制的同一请求的定时时间累加;
有一个例外,对于用户定义的变量来说,对整个测试计划有效,不管是不是同一线程组,同一树分支里,都会被影响,以最后一次出现的用户变量值做为最终的变量值;
另一个可以重写变量的前置处理器-用户参数,这个只作用于同一个线程组里;
3.7前置处理器
前置处理器是在采样器发起请求之前对采样器进行某些设置,或者更新某些变量的值。
3.8后置处理器
前置处理器通常是在采样器发起请求之后对响应数据进行处理,例如:正则表达式提取器;
3.9执行顺序
0、配置元件
1、前置处理器
2、定时器
3、采样器
4、后置处理器
5、断言
6、侦听器
只有当作用域内存在采样器时,定时器、断言、前置/后置处理器才会被执行。逻辑控制器和采样器按照在测试树中出现的顺序执行。其他测试元件会依据自身的作用域范围来执行,另外还与测试元件所属的类型有关(归属于同一类型的测试元件,会按照它们在测试树中出现的顺序来执行)。
例如,在如下测试计划中:
Controller
Post-Processor 1
Sampler 1
Sampler 2
Timer 1
Assertion 1
Pre-Processor 1
Timer 2
Post-Processor 2
执行顺序为:
Pre-Processor 1
Timer 1
Timer 2
Sampler 1
Post-Processor 1
Post-Processor 2
Assertion 1
Pre-Processor 1
Timer 1
Timer 2
Sampler 2
Post-Processor 1
Post-Processor 2
Assertion 1
3.10作用域规则
JMeter测试树中既包含遵循分层规则的测试元件(配置元件、定时器、断言等其他),又包含遵循顺序规则的测试元件(逻辑控制器、采样器)。
逻辑控制器和采样器按其出现在测试计划树中的顺序执行,有些逻辑控制器可以改变采样器的执行顺序,例如随机控制器;
其他测试元件根据其所在的节点位置,作用的范围不一样,例如,某个采样器下的定时器只对当前采样器生效;某个逻辑控制器下的定时器则对逻辑控制器下的所有采样器生效;
3.11属性和变量
注意,通过测试计划和"用户定义的变量"(配置元件)两种方式定义的变量,在JMeter启动时对这个测试计划都是可见的。如果同一个变量在多个"用户定义的变量"(配置元件)中被定义,那么只有最后一个定义会生效。一旦某个线程启动后,那么整个变量集合的初始值就会被复制到该线程中。其他测试元件,例如"用户变量"(前置处理器)或者"正则表达式提取器"(后置处理器)可以被用来重新定义变量(或者创建新变量),这些重定义仅仅影响当前线程。
3.12使用变量参数化测试
在考虑如何构建测试计划时,需要注意哪些在测试运行期间是恒定不变的(常量),而哪些在不同线程之间可能会发生变化(变量)。对于常量应该有单独的命名规则,例如加前缀C_或者K_,或者使用大写,以便区别于变量。另外,还需要考虑哪些对于测试线程而言是独享的,例如计数器或者通过"正则表达式提取器"(后置处理器)提取的变量。测试人员可以对这些变量也采用不同的命名策略。
4.创建web测试计划
在这一节中,将会介绍如何创建一个简单的测试计划,用于测试Web站点。我们会模拟5个并发用户,对Jakarta Web站点的两个页面进行访问。另外,每个并发用户都会运行测试两次。因此测试计划产生的总请求数目为(5 并发用户)×(2 请求)×(重复 2 次)= 20 HTTP请求。要构建该测试计划,测试人员需要用到如下测试元件:线程组(Thread Group)、HTTP请求(HTTP Request)、HTTP请求默认值(HTTP Request Defaults)和图形结果(Graph Results)。
4.1添加并发用户
首先为线程组起一个有意义的名字,在名称域中输入Jakarta Users,接着设置线程数为5,如图3-11所示。保持Ramp-Up Period的值不变(为1秒),这一设置会告诉JMeter启动并发用户的时间间隔。例如,如果测试人员将Ramp-Up Period设置为5秒,那么JMeter会在5秒内将所有并发用户启动起来。因此假设我们有5个并发用户和5秒的Ramp-Up Period,那么启动并发用户的间隔为1秒(5 并发用户 / 5 秒 = 1 用户每秒)。如果测试人员将该值设为0,那么JMeter会立刻启动所有的并发用户。
最后在循环次数(Loop Count)中输入2,这一属性会告诉JMeter重复测试多少次。如果测试人员设置的循环次数为1,那么JMeter只会运行测试一遍。要让JMeter不断运行测试计划,请选中"(Forever)永远"复选框。
4.2添加默认HTTP请求属性
首先从选中Jakarta Users(线程组)测试元件开始。单击鼠标右键,在弹出的快捷菜单中选择"Add"→"Config Element"→"HTTP Request Defaults"命令。接着选中这个新测试元件,查看它的控制面板.
像大多数JMeter测试元件一样,HTTP请求默认值(HTTP Request Defaults)也有对应的控制面板。此处不修改名称域,保留原来的值。
让我们跳到下一个设置域--Server Name or IP。对于当前正在构建的这个测试计划,所有的请求都要发往jmeter.apache.org,因此测试人员需要将jmeter.apache.org放到该设置域中。这个域是唯一需要设定的默认值,因此其他域就保留原来的值即可,HTTP请求默认值(HTTP Request Defaults)不会让JMeter去发送HTTP请求,它只是定义了HTTP请求(测试元件)使用到的默认值。
4.3添加Cookie支持
通常所有Web测试都要支持Cookie,除非测试人员的应用系统很特别,不使用Cookie。要添加对Cookie的支持,只需要为测试计划中的每一个线程组添加一个HTTP Cookie管理器(HTTP Cookie Manager)。这样一来,每一个测试线程都会拥有独立的Cookie,但是这些Cookie会在HTTP请求对象间共享。
要添加HTTP Cookie管理器(HTTP Cookie Manager),只需简单地选中线程组,接着选择"Add"→"Config Element"→"HTTP Cookie Manager"命令(既可以通过编辑菜单,也可以通过右键弹出菜单)。
4.4添加HTTP请求
在测试计划中,需要发送两个HTTP请求。第一个请求针对Jmeter主页(http://jmeter.apache.org/),而第二个请求针对更改页面(http://jmeter.apache.org/changes.html)。
JMeter会按照它们在测试树中出现的顺序发送请求。
首先为线程组(Jmeter Users)添加一个HTTP请求(Add→Sampler→HTTP Request)。接着在测试树中选中该HTTP请求,并编辑其属性。
(1)将名称(Name)改为"Home Page"。
(2)将路径(Path)设置为"/"。注意此处并不需要设定Server Name,原因在于测试人员已经在HTTP请求默认值(HTTP Request
Defaults)中设定了默认值。
接下来,添加第二个HTTP请求,并编辑其属性,如图3-15所示。
(1)将名称(Name)改为"Changes"。
(2)将路径(Path)设置为"/changes.html"。
4.5添加侦听器查看测试结果
测试人员为测试计划添加的最后一个测试元件就是侦听器。该测试元件负责将所有HTTP请求的结果存储在一个文件中,并以可视化的模型加以展示。
选中线程组(Jmeter Users),并添加一个图形结果(Graph Results)侦听器(Add →Listene→Graph Results)。接下来,测试人员需要指明保存测试结果的目录和文件名。测试人员既可以在filename输入域中填写,也可以通过单击"Browse"按钮来选择一个文件。
4.6登录WEB站点
在上面描述的测试计划中不涉及登录,但是有些Web站点要求在执行特定操作前必须先登录。在Web浏览器中,登录界面通常就是一个表单(Form),其中有用户名和密码输入域,以及提交表单(Form)会用到的按钮。该按钮会产生一个POST请求,并将表单中的元素作为参数。
要使用JMeter完成登录,测试人员需要添加一个HTTP请求,并将方法设为POST.测试人员需要知道表单使用的输入域名称和目标页面。所有这些信息都可以通过查看登录页面的代码来获取(如果这一点很难做到,测试人员可以使用JMeter录制(JMeter Proxy Recorder
)来实现).目标页面设置为提交按钮所在的页面。另外还需单击"Add"按钮两次,增加用户名和密码。有些时候登录表单中还包含一些隐藏信息,它们也需要在这里添加。
TAG:
- 引用 删除 pcgmangocity / 2019-02-23 17:07:45
- https://mp.weixin.qq.com/s?__biz=MzAxMTA0ODE3Mw==&mid=2656972925&idx=7&sn=b9d29131cd66c535d94a2ffc25ef691d&chksm=80ed95ffb79a1ce97fc4b6c8ee849c038b58d1ab2ee2cde4ecc03b2865aa8e4a0457d4b5803e
- 引用 删除 pcgmangocity / 2019-02-23 17:03:43
- https://mp.weixin.qq.com/s?__biz=MzAxMTA0ODE3Mw==&mid=2656936970&idx=8&sn=df17f74434ba0dd7bd3d9c553dc431fb&chksm=80ee0188b799889ecca2ff2aeb74352d03f9da139aa1589c1fa5ae784c834a64fd87dca46fdd
标题搜索
日历
|
|||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
1 | 2 | 3 | 4 | 5 | 6 | ||||
7 | 8 | 9 | 10 | 11 | 12 | 13 | |||
14 | 15 | 16 | 17 | 18 | 19 | 20 | |||
21 | 22 | 23 | 24 | 25 | 26 | 27 | |||
28 | 29 | 30 |
我的存档
数据统计
- 访问量: 24485
- 日志数: 19
- 建立时间: 2012-04-23
- 更新时间: 2018-09-21