# （四）创建一个简单的性能测试





<br>
请先参考[Jmeter介绍与安装](/jmeter/install-jmeter/) ，启动Jmeter。

* 建立测试计划
启动jmeter后，jmeter会自动生成一个空的测试计划，用户可以基于该测试计划建立自己的测试计划。

<br>
#### 添加线程组
----
一个性能测试请求负载是基于一个线程组完成的。一个测试计划必须有一个线程组。测试计划添加线程组非常简单。在测试计划右键弹出下拉菜单（添加-->Threads(Users)--->线程组）中选择线程组即可。

 jmeter中 每个测试计划至少需要包含一个线程组，当然也可以在一个计划中创建多个线程组，那么多个线程组之间又会怎样的顺序执行（串行还是并行）？在测试计划下面多个线程是并行执行的，也就是说这些线程组是同时被初始化并同时执行线程组下的Sampler的。

![](http://img.testclass.net/add_thread.png)

![](http://img.testclass.net/thread_group.png)

线程组主要包含三个参数：线程数、准备时长（Ramp-Up Period(in seconds)）、循环次数。

__线程数：__ 虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。

__准备时长：__ 设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ，准备时长为10 ，那么需要10秒钟启动20个线程。也就是每秒钟启动2个线程。

__循环次数:__ 每个线程发送请求的次数。如果线程数为20 ，循环次数为100 ，那么每个线程发送100次请求。总请求数为20*100=2000 。如果勾选了“永远”，那么所有线程会一直发送请求，直到选择停止运行脚本。

设置合理的线程数对于能否达到测试目标有决定性的影响。除了上面介绍的固定循环次数与永远外；也可以灵活的选择设定测试运行时间。勾选“调度器”，进行调度器配置。

* 设置：线程数为10，其它参数默认。

<br>
#### 添加HTTP请求
----
添加完成线程组后，在线程组上右键菜单（添加--->Sampler--->HTTP请求）选择HTTP请求。对于jmeter来说，取样器（Sampler）是与服务器进行交互的单元。一个取样器通常进行三部分的工作：
```
1、向服务器发送请求

2、记录服务器的响应数据

3、记录响应时间信息
```

![](http://img.testclass.net/add_http.png)

![](http://img.testclass.net/http_request.png)

一个HTTP请求有着许多的配置参数，下面将详细介绍：

__名称：__ 本属性用于标识一个取样器，建议使用一个有意义的名称。

__注释：__ 对于测试没有任何作用，仅用户记录用户可读的注释信息。

__服务器名称或IP ：__ HTTP请求发送的目标服务器名称或IP地址。

__端口号：__ 目标服务器的端口号，默认值为80 。

__协议：__ 向目标服务器发送HTTP请求时的协议，可以是http或者是https ，默认值为http 。

__方法：__ 发送HTTP请求的方法，可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。

__Content encoding ：__ 内容的编码方式，默认值为iso8859

__路径：__ 目标URL路径（不包括服务器地址和端口）

__自动重定向：__ 如果选中该选项，当发送HTTP请求后得到的响应是302/301时，JMeter 自动重定向到新的页面。

__Use keep Alive ：__  当该选项被选中时，jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信，默认选中。

__Use multipart/from-data for HTTP POST ：__ 当发送HTTP POST 请求时，使用Use multipart/from-data方法发送，默认不选中。

* 在这里我们添加一个HTTP请求: http://www.testclass.net

<br>
#### 添加监听器（Listener）
----

脚本的主要部分设置完成后，需要通过某种方式获得性能测试中的测试结果，在本例中，我们关心的是请求的响应时间。

Jmeter 中使用监听器元件收集取样器记录的数据并以可视化的方式来呈现。Jmeter有各种不同的监听器类型，因为上面添加的为HTTP请求，这里添加聚合报告，更为直观的查看测试结果。

添加聚合报告，右键点击线程组，在弹的菜单（添加--->监听器--->聚合报告）中选择聚合报告。

![](http://img.testclass.net/add_report.png)

点击工具栏上的 ```绿色运行按钮``` 或者通过菜单栏（运行--->启动）来运行测试。

查看 __"聚合报告"__ 的运行结果：

![](http://img.testclass.net/test_report.png)

__Label：__ 请求的名称，就是我们在进行测试的httprequest sampler的名称

__Samples：__ 总共发给服务器的请求数量

__Average：__ 单个请求的平均响应时间，单位是毫秒

__Median：__ 50%的请求的响应时间

__90%Line：__ 90%的请求的响应时间

__95%Line：__ 95%的请求的响应时间

__99%Line：__ 99%的请求的响应时间

__Min：__ 最小的响应时间

__Max：__ 最大的响应时间

__Error%：__ 错误率=错误的请求的数量/请求的总数

__Throughput：__  吞吐量即表示每秒完成的请求数

__Received KB/sec：__  每秒从服务器端接收到的数据量

__Sent KB/Sec：__ 每秒从发送到服务器端的数据量

<br>
到此，一个简单的性能测试完成了。




原始封面

![课程图片](https://images.unsplash.com/photo-1508081803367-63a3f657e987?w=300)


