对于系分的小型项目,决定在用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 request DEFAULTS

http header 设置

右键Threads Group,Add->Config Element->HTTP Header Manager.因为很多API中要求Post data的格式是application/json,因此需要另外设置Content-Type

HTTP HHEADER

右键Threads Group,Add->Config Element->HTTP Cookie Manager.在许多项目中,都会涉及登录账号的操作,因此,就需要一个cookie管理器来保存登录账户的cookie。添加http cookie manager,它就会帮你自动保存账户的cookie,所以再来完成其他操作时就会自动在http header添加cookie字段。 http cookie

http request 设置

右键Test Plan->Add->Sampler->HTTP Request,根据你测试的接口修改method和url,这里的protocol,server,port number已经在http request default中设置后,所以不用再另外设置了。

http request

参数化

  • 在parameters中传递参数,以name-value的形式输入,如下图输入就会生成/restaurant/self/order?page=0&number=10&state=accepted,paid,created&keyword=1的请求url parameters

  • 在body data中传递数据,body data默认传递application/x-www-form-urlencoded的格式 body data

线程组设置

接下来要讲的是性能测试的核心——线程组。线程组可以规定x个线程(用户)并发执行测试计划中的操作,通过设定Ramp-Up,可以设定在x秒后执行下一组操作。

测试结果

  • 每一个测试用例的结果

    在线程组右键 Add->Listener->View Result Trees,添加察看结果树就可以查看每一个测试用例的request、response数据,便于分析接口是否运行正确。 result tree result tree

  • 聚合报告

    在线程组右键 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:每秒发送到服务器端的数据量

result

我们可以从聚合报告中得到某个url的响应速度,进而分析服务器的性能。

总结

Jmeter总体来说是一个非常轻量级的工具,它可以完成简单的压力测试,是小型项目测试的利器。这次因为时间有限还没有挖掘更多的新功能如导入csv文件执行多项测试,多个用户并发测试等等。新手上路,若文中有错,请多多指点。