学习JMeter的笔记

来源:互联网 发布:域名没备案能解析吗 编辑:程序博客网 时间:2024/05/22 15:16

1.如果JMeter出现运行异常,测试人员可以在jmeter.log日志文件中查看相关信息。另外,如果用户想要获取更详细的日志,可以修改jmeter.properties文件中的属性log_level.jmeter。默认是INFO,查错时可以修改为DEBUG。日志文件对定位错误原因很有帮助,因为JMeter不会弹出错误对话框而中断测试

log_level.jmeter=INFO
log_level.jmeter.junit=DEBUG
#log_level.jmeter.control=DEBUG
#log_level.jmeter.testbeans=DEBUG
#log_level.jmeter.engine=DEBUG
#log_level.jmeter.threads=DEBUG
#log_level.jmeter.gui=WARN
#log_level.jmeter.testelement=DEBUG
#log_level.jmeter.util=WARN
#log_level.jmeter.protocol.http=DEBUG
#log_level.jmeter.protocol.http.control=DEBUG
#log_level.jmeter.protocol.ftp=WARN
#log_level.jmeter.protocol.jdbc=DEBUG
#log_level.jmeter.protocol.java=WARN
#log_level.jmeter.testelements.property=DEBUG


2.bin目录下的脚本:

jmeter.bat :运行JMeter,默认是GUI模式

jmeter-n.cmd :加载一个JMX文件,并在非GUI模式下运行

jmeter-n-r.cmd :加载一个JMX文件,并在远程非GUI模式下运行

jmeter-t.cmd :加载一个JMX文件,并在GUI模式下运行

jmeter-server.bat :以服务器模式启动JMeter

mirror-server.cmd :在非GUI模式下启动JMeter镜像服务器

shutdown.cmd :关闭一个非GUI实例(优雅的)

stoptest.cmd :停止一个非GUI实例(中断式)


3.JMeter命令行:

-h, --help 打印使用信息并退出
-v, --version 打印版本信息并推出
-p, --propfile {argument} 使用的JMeter属性文件
-q, --addprop {argument} 附加的属性文件
-t, --testfile {argument} 运行的jmeter测试文件(.jmx)
-l, --logfile {argument} 日志取样文件
-n, --nongui 非用户界面运行JMeter
-s, --server 运行JMeter服务器
-H, --proxyHost {argument} 设置JMeter使用的代理服务器
-P, --proxyPort {argument} 设置JMeter使用的代理服务器端口
-u, --username {argument} 设置JMeter使用的代理服务器用户名
-a, --password {argument} 设置JMeter使用的代理服务器密码
-J, --jmeterproperty {argument}={value} 定义附加的jmeter属性
-D, --systemproperty {argument}={value} 定义附加的System属性
-S, --systemPropertyFile {filename} 一个属性文件被做为系统属性添加
-L, --loglevel {argument}={value} 定义日志等级: [category=]level 例如jorphan=INFO or jmeter.util=DEBUG
-r, --runremote 从非用户界面模式启动远程服务器
-d, --homedir {argument} 使用的JMeter目录
-j,--jmeterlogfile {argument} the jmeter log file
-G,--globalproperty (argument)[=value] 定义一个JMeter属性并发往所有远程服务器。如:-Gport=123、-Gglobal.properties
-R,--remotestart serverl,... (non-GUI only) 在指定远程服务器上运行
-X,--remoteexit Exit the remote servers at end of test (non-GUI)


4.JMeter常用属性,可在jmeter.properties文件中进行设定
















5.如何保存测试数据?

JMeter测试计划有一个被称为“函数测试模式”的选项,当这一选项被选中后,就会促使JMeter记录下每一次采样从服务器获取的数据。测试人员可以通过监听器上的“configure”按钮,来配置哪些测试数据应该被保存。不过如此以来,保存数据的文件会迅速庞大,JMeter的性能也会受到影响。



























6.测试元件

1)采样器:采样器告诉JMeter发送一个请求到指定的服务器,并等待服务器的请求。

2)逻辑控制器:帮助用户控制JMeter的测试逻辑,何时发送请求。

3)监听器:监听器提供了JMeter在测试期间收集到的信息的访问方法。它可以将测试数据导入到文件当中,有一配置按钮,可以设定存储测试数据的哪些字段。监听器可以添加在测试树的任意位置,它们仅收集测试树中相同或者更低级别测试元件的数据。

4)定时器:默认情况下,JMeter线程在发送请求之间没有间隙。定时器可设定请求之间应该间隔多长时间。如果测试人员为线程组设定了多个定时器,那么JMeter会将这些定时器叠加起来,共同影响作用域范围内的采样器。

5)断言:用户可以使用断言来检查从服务器获得的响应内容。通过断言可以测试服务器返回的响应是否与测试人员预期的结果一致。需要注意的是,断言会影响作用域内的所有采样器。如果要让断言只影响某一个采样器,可以将断言作为该采样器的子项。如果要查看断言结果,可以为线程组添加“断言结果”监听器。

6)配置元件:配置元件仅对其所在的测试树分支有效。如右图,HTTP Cookie Manager只对Web Page1和Web Page2有效,对Web Page3无效。

另外,相比父分支的配置元件,子分支内部的配置元件优先级更高。如右图,因为将Web Defaults1放置在循环控制器内,所以只对Web Page2有效。而其他的http请求使用Web Defaults2,因为Web Defaults2被放置在线程组下面。

注意:此处有一例外,配置元件“User Defined Variables”是在测试的初始截断执行的,无论它处于测试树的那个位子。

http请求默认值:一个测试计划中可以有多个Defaults组件,多个Defaults组件的默认值会叠加,如下图,虽然两个Defaults 组件都定义了参数aaa,但发出的请求还是会叠加起来。

两个default中都定义的"Server Name or IP",显示在发送请求时只能使用一个,这里使用的是第一个default定义的值www.baidu.com

















































7.JMeter执行顺序

1)配置元件

2)前置处理器

3)定时器

4)采样器

5)后置处理器(除非Sampler得到的返回结果为空)

6)断言除非Sampler得到的返回结果为空

7)监听除非Sampler得到的返回结果为空

注意:当作用域内存在采样器,前后置处理器、定时器、断言才会被执行。如果在同一作用域范围内有多个同一类型的测试元件,则这些元件会按照它们在测试计划中的上下顺序执行。

例子:

  • Controller
  •         Post-processor1
  •         Sampler1
  •         Sampler2
  •         Timer1
  •         Assertion1
  •         Pre-processor1
  •         Timer2
  •         Post-processor2

执行顺序:

Pre-processor1Timer1、Timer2、 Sampler1、Post-processor1Post-processor2、Assertion1

Pre-processor1Timer1、Timer2、 Sampler2、Post-processor1Post-processor2、Assertion1

8.作用域规则

可以点击链接查看作用域规则的详述:http://blog.csdn.net/adonis_lu37/article/details/77746098

9.JMeter属性和变量

JMeter属性:

1)JMeter属性统一定义在jmeter.properties文件中,我们可以在该文件中添加自定义的属性

2)JMeter属性在测试脚本的任何地方都是可见的(全局),通常被用来定义一些JMeter使用的默认值,可以用于在线程间传递信息。

3)JMeter属性可以在测试计划中通过函数 _P 进行引用,但是不能作为特定线程的变量值。













4)JMeter属性可以通过_setProperty 函数来定义JMeter属性

5)JMeter属性是大小写敏感的

6)WorkBench中的属性查看组件:

   WorkBench右键--->Add--->Non Test Elements--->Property Display










JMeter变量:

1)JMeter变量对于测试线程而言是局部变量。在不同测试线程中,JMeter变量既可以是完全相同的,也可以是不同的。

2)JMeter变量引用方法:${name}

3)JMeter变量是大小写敏感的

4)如果有某个线程更新了变量,那么仅仅是更新了变量在该线程中复制的值

5)Jmeter中定义变量的地方:

  a) 测试计划(Test plan),在右边的面板上添加User Defined Variables

  b) 线程组,右键选择 配置元件( config element)-->User Defined Variables

  c) 通过前置或后置处理器生成的变量

  d)使用csv参数化的变量

6)注意:通过 a 和 b 两种方式定义的变量,在JMeter启动时对这个测试计划都是可见的。如果同一个变量在多个 b 中被定义,那么只有最后一个定义会生效。一旦某个线程启动后,那么整个变量集合的初始值就会被复制到该线程中。其他测试元件,例如 c 或者 d 可以被用来重新定义变量,这些重定义仅仅影响当前线程。

10.登录web站点

有些web站点要求在执行特定操作前必须先登录,在web浏览器中,登录往往就是提交表单,其中有用户名和密码,以及提交按钮。该按钮会产生一个post请求,将表单中的元素作为参数。




























11.使用URL回写来处理用户会话

如果您的web应用程序使用URL重写而不是cookie保存会话信息, 那么你需要做一些额外的工作来测试你的网站。

正确应对URL重写,JMeter需要解析HTML 接收从服务器和检索独特的会话ID,使用适当的 HTTP URL重写修改器来完成这一任务。 只需将会话ID参数的名称放入修改器中,修改器就会找到会话ID,并将其放到每个请求当中。 如果请求已经有一个值,它将被取代。 如果“缓存会话Id ? “选项,那么最近一个被找到的会话ID将会被保存下来。当前的采样器不包含会话ID时,就会用被保存下来的会话ID值。

URL回写的例子:
添加URL回写修改器:添加---前置处理器---HTTP URL 重写修饰符。
HTTP URL 重写修饰符被添加在简单控制器下面,这意味着它只对简单控制器下的请求。在URL回写修改器中输入会话参数名称,还有一个选项用于指明会话ID是作为路径的一部分,而不是作为请求的参数。













12.http信息头管理器

使用http信息头管理器,可以帮助测试人员设定JMeter发送的http请求头部所包含的信息。通常JMeter在向服务器发送http请求时,后端往往需要一些验证信息,比如cookie。




原创粉丝点击