Jmeter测试详记
对于系分的小型项目,决定在用mocha做完单元测试的基础上,再用Jemter进行压力测试。Jmeter是比较简单的压力测试工具,只需配置一些参数,即可生成一份性能报告。
首先 右键Test Plan,Add->Threads(User)->Threads Group 新增线程组
http 默认设置
右键Threads Group,Add->Config Element->HTTP Request Defaults. 在http 默认设置中先设置好我们需要测试的server地址,因为我们的网站是基于https,所以在protocol处填写https,端口号填写443 
http header 设置
右键Threads Group,Add->Config Element->HTTP Header Manager.因为很多API中要求Post data的格式是application/json,因此需要另外设置Content-Type。

http cookie manager设置
右键Threads Group,Add->Config Element->HTTP Cookie Manager.在许多项目中,都会涉及登录账号的操作,因此,就需要一个cookie管理器来保存登录账户的cookie。添加http cookie manager,它就会帮你自动保存账户的cookie,所以再来完成其他操作时就会自动在http header添加cookie字段。 
http request 设置
右键Test Plan->Add->Sampler->HTTP Request,根据你测试的接口修改method和url,这里的protocol,server,port number已经在http request default中设置后,所以不用再另外设置了。

参数化
-
在parameters中传递参数,以name-value的形式输入,如下图输入就会生成
/restaurant/self/order?page=0&number=10&state=accepted,paid,created&keyword=1的请求url
-
在body data中传递数据,body data默认传递
application/x-www-form-urlencoded的格式
线程组设置
接下来要讲的是性能测试的核心——线程组。线程组可以规定x个线程(用户)并发执行测试计划中的操作,通过设定Ramp-Up,可以设定在x秒后执行下一组操作。
测试结果
-
每一个测试用例的结果
在线程组右键 Add->Listener->View Result Trees,添加
察看结果树就可以查看每一个测试用例的request、response数据,便于分析接口是否运行正确。

-
聚合报告
在线程组右键 Add->Listener->Aggregate Report,添加
聚合报告,在聚合报告中,Jmeter会返回多项参数,其中包括:- Label:JMeter的每个HTTP Request的name属性值
- Samples:请求数,表示本次测试一共发出了多少个请求
- Average:单个HTTP Request的平均响应时间
- Median:50%用户的响应时间
- 90% Line:90%用户的响应时间
- 95% Line:95%用户的响应时间
- 99% Line:99%用户的响应时间
- Min:最小响应时间
- Max:最大响应时间
- Error%:错误率,即错误请求数 / 请求总数
- Throughtput:吞吐量,每秒完成的请求数
- Received KB/Sec:每秒从服务器端接收到的数据量
- Sent KB/Sec:每秒发送到服务器端的数据量

我们可以从聚合报告中得到某个url的响应速度,进而分析服务器的性能。
总结
Jmeter总体来说是一个非常轻量级的工具,它可以完成简单的压力测试,是小型项目测试的利器。这次因为时间有限还没有挖掘更多的新功能如导入csv文件执行多项测试,多个用户并发测试等等。新手上路,若文中有错,请多多指点。