性能测试Jmeter学习总结

Jmeter学习总结

1  Jmeter简介

1 开源性能测试工具

2 Jmeter特点:

1 支持多种服务类型进行测试;

2 支持通过录制\回访的方式获取测试脚本;

3 具备高移植性,是100%的Java程序;

4 采用多线程框架,允许通过多个线程并发取样及通过独立的线程组对不同的功能同时取样;

5 精心设计的GUI支持高速用户操作和精确计时;

6 支持缓存和离线的方式分析\回放测试结果;

7 具备高扩展性;

2  Jmeter主要组建

1 测试计划

1 注释:对测试计划的注释。

2 用户定义的变量:用户可以自己定义变量,在用到此变量的时候直接用${变量名}引用即可。例:变量名=url,值=http://www.baidu.com,在需要http://www.baidu.com时直接用${url}即可。

3 Add directory or jar to classpath:向类路径即%JMETER-HOME%\lib中添加目录及jar包。

2 线程组

1 线程数:设置发送请求的用户数目 ,即并发数。

2 Ramp-Up Period(in second):线程间的时间间隔,单位是秒。即所有线程在多少时间内启动。

3 循环次数:请求的重复次数,如果选择后面的forever(默认),那么请求将一直继续,如果不选择forever,而在输入框中输入数字,那么请求将重复指定的次数,如果输入1,那么请求将执行一次,如果是0,会出现问题。

3 调度器的使用

1 启动时间:测试计划什么时候启动,启动延迟会覆盖它。

2 结束时间:测试计划什么时候结束,持续时间会覆盖它。

3 持续时间:测试计划持续多长时间,会覆盖结束时间。

4 启动延迟:测试计划延迟多长时间启动,会覆盖启动时间。

4 取样器-HTTP请求

1 Web服务器-服务器名称或IP、端口号,脚本录制时自动添加,也可以使用“用户自定义变量”。

2 HTTP请求:用默认值即可。

3 同请求一起发送参数:请求中的参数、值可以在此设置,需要用到参数化及动态数据关联

4 同请求一起发送文件:我可以制定同请求一起发送哪个文件。

5 定时器放在不同位置的作用范围

1 定时器在每个sampler之前执行,而不是之后;

2 定时器是有作用域的,当执行一个sampler之前时,所有当前作用域中的定时器都会被执行;

3 如果希望定时器仅使用于其中一个sampler,则把定时器作为子节点加入;

4 如果希望sampler执行完之后再等待,则可使用Test Action;

5 Jmeter测试结果字段的意义

1 Label:每个 JMeter 的 element (例如 HTTP Request )都有一个 Name 属性,这里显示的就 是 Name 属性的值

2 Samples:表示你这次测试中一共发出了多少个请求,如果测试计划模拟500个用户,每个用户迭代1次,这里就会显示500

3 Average:平均响应时间 — 默认情况下是单个Request 的平均响应时间,当使用了事务控制时,也可以以事务为单位显示平均响应时间

4 Median:中位数,也就是 50 %用户的响应时间

5 90% Line: 90 %用户的响应时间

6 Min:最小响应时间

7 Max:最大响应时间

8 Error%:错误率,本次测试中出现错误的请求的数量/请求的总数

9 Throughput:吞吐量 —默认情况下表示每秒完成的请求数(Requestper Second)

10 KB/Sec:每秒从服务器端接收到的数据量

3  Jmeter常用术语

1 采样器(Sampler):用户可以用它来向服务器发送一个特定的请求,在超时前等待服务器响应

2 逻辑控制器(Logic Controllers):控制脚本的执行顺序

3 监听器(Listenters):手机测试结果信息,以用户指定的方式加以展示

4 配置元件(Configuration Elements):设置一些脚本的公用信息

5 断言(Assertions):验证服务器实际返回的信息与用户期望的情况是否相符

6 定时器(Timers):保存脚本与时间相关的一些信息

7 前置处理器(Pre-Processors):任何采样器被执行前都要先执行前置处理器

8 后置处理器(Post-Processors):任何采样器被执行后都要先执行后置处理器

9 测试计划(Test Plan):脚本的根节点,关于整个脚本运行的一些基本设置

10 线程组(Thread Group):定义了一个虚拟用户池,每一个虚拟用户都是用通一个脚本

11 工作台(WorkBench):保存暂时不使用的测试元素

4  Jmeter的工作原理

1 Jmeter可以作为Web服务器和浏览器之间的代理网关,捕获浏览器的请求和Web服务器的响应生成脚本;

2 有了脚本,Jmeter通过线程组来实现模拟真实用户对Web服务器的访问压力。

5  Jmeter参数化方法

方法 1:

1 创建参数文件(.dat),将参数写进去;

2 选项-【函数助手】-选择【_CSVRead】并填写1中文件的路径,生成参数;

3 将2中生成的参数复制到需要参数化的地方;

方法 2 :

1 在线程组上点击右键选择添加-配置元件-CSV DataSetConfig,打开CSV Data Set Config。

2 Filename文件名:即参数化要引用的文件名。这里是d:\number.dat

3 File encoding文件编码:可以不填。

4 Variable Names(comma-delimited)变量名:多个变量可以引用同一个文件,用逗号分割。这里是num1,num2

5 Delimiter(use ‘\t’for tab):参数文件中多个变量值的分隔符,\t表示用tab键分割,默认是逗号。

6 Recycle on EOF?:结束后是否循环?默认是True.

Number.txt文件内容见截图。

6  Jmeter关联

1 找到需要关联的地方,在它的上一个请求里面添加正则表达式提取器。

2 填写正则表达式提取器相关内容:

    引用名称:${参数名称}。

    正则表达式:左边界(.*)右边界。

    ()里面';'表示这个参数出现任意次数,'_'表示任意字符。

    模板:用$ 1 $引起来中间加上数字表示解析到第几个值

匹配数字: 0表示随机,1表示所有;其余正整数代表将在检查的内容中第几个匹配的内容提取出来。

3 将其他请求中所有出现该参数的地方换成${参数名称}

7  Jmeter添加集合点

8  Jmeter的控制器

Jmeter具有两种类型的控制器:取样器(Sampler)和逻辑控制器(Logical Controller),它们驱动测试过程

 1  Sampler:用于发送请求给服务器,例如HTTP请求;

 2  Logical Controller:用于自定义发送请求的逻辑,可以改变子元素执行次序,重复次数等;

8.1逻辑控制器

1 仅一次控制器控制登陆请求仅被执行一次,后续的迭代将跳过登录请求的执行;

2 下一个sampler将加载搜索页面,加载不同的两个搜索页面,然而每次搜索完成都想重新加载搜索页面,本来要四个Sampler,取而代之,使用交替控制器。当交换控制器执行搜索A或者搜索B请求Sampler时,都会执行一次加载搜索页面(HTTP Sampler);

3 Cookie Manager必须添加到所有的web测试中,否则,Jmeter将忽略cookie;

8.2ForEach控制器

1 ForEach控制器在用户自定义变量中读取一系列相关的变量。该控制器下的采样器或控制器都会被执行一次或多次,每次读取不同的变量值。所以ForEach总是和用户自定义变量一起使用。

2 实例:在ForEach控制器中添加了一个HTTP请求(登录页面),需要输入用户名,密码。

这里把用户名作为变量在用户自定义变量中设置。

3 这样执行测试计划时,ForEach控制器会遍历User Parameter查找符合设置条件的变量名,这里就是”Name”+”_”+” 循环次数”。查到符合的变量后就把值赋给输出变量(Vname)。然后就可以在ForEach控制器下的采样器或控制器中使用了,使用的格式是${输出变量名}。

8.3包含控制器

包含控制器用于使用外部的Jmx文件。为了演示使用它,可以添加一个simple controller,然后在其中添加一个采样器(sample),比如一个http请求。然后把这个simple controller保存为一个jmx文件。这样在include controller中设置该jmx文件就可以在测试计划中使用了。值得注意的是,包含测试的测试计划中不能有线程组,仅仅只能有simple controller,然后其下可以添加任何采样器,控制器。

如果用户需要使用cookie manage或者 用户自定义变量,都应该在顶层的测试计划中设置,不应该包含在外部文件中,否则不会它们不会起作用。

8.4交替控制器

一次传递一个子请求到这个测试,按子元件的排列顺序

8.5随机顺序控制器

子节点全部执行,但顺序是随机的

9各个元素之间的执行顺序

定时器,断言,前后处理器仅在有Sampler的情况下才被执行,逻辑控制器和Sampler按Tree视图中的顺序执行,其他元素依据他们所处的作用域范围和类型进行处理,同种类型的元素按他们出现在tree视图的顺序进行处理;

例如:

Controller

   后置处理器 1

   Sampler1

   Sampler2

   Timer 1

  Assertion 1

   前置处理器 1 

   Timer 2

   后置处理器 2  

执行顺序:

  前置处理器 1

  Timer 1

  Timer 2

  Sampler 1

  后置处理器 1

  后置处理器 2

  Assertion 1

  前置处理器 1

  Timer 1

  Timer 2

  Sampler 2

  后置处理器 1

  后置处理器 2

  Assertion 1         

你可能感兴趣的:(测试类)