近期做了一个资金账户管理系统,在测试阶段采用了Apache自带的ab工具进行压力测试,期间遇到了很多问题,摸索许久之后才测试成功,现用这篇文章做个记录。
先简单介绍一下被测试的系统的情况:
1)首先需要测试登录的接口,涉及post请求和json传参;
2)接着测试需要登录后实现的功能的接口,涉及post请求、json传参以及表单中使用到的cookie-session。
(被测试的系统使用express的中间件cookie-session进行会话管理,因此在传参时会以req.session.xxx的形式传递某些参数)
接下来是测试登录接口:
1)在任意文件夹中新建一个txt文件,此处我命名为userLogin.txt。文件内容如下:
注意除了type为number的不需要加引号,其它都需要加引号。
{"capitalaccountid": 1000001,"cashpassWord": "19770422"}
2)以管理员身份运行cmd,进入Apache安装位置的bin文件夹下。
3)运行以下指令:
ab -n 10000 -T application/json -p D:\Apache24\my-files\userLogin.txt "http://localhost:3000/userLogin/capitalUsersLogin"
ab:使用Apache自带的ab压测工具;
-n 10000:请求数为10000;
-T application/json:采用json传参的方式;
-p D:\xxx.txt:POST时的数据文件,此处为1)中创建的参数文件;
最后为需要压测的接口路径。
4)指令运行结果如下:
其中比较主要的几个性能数据为:
Requests per second吞吐率:是指在某并发用户数下单位时间内处理的请求数。
Time per request用户平均请求等待时间,Time per request across all concurrent requests服务器平均请求等待时间。
接下来测试需要登录后实现的功能的接口,此处以存款为例:
1)新建txt文件,命名为userDeposit,文件内容如下:
注意由于被测试的系统采用了cookie-session,才有session.xxx的写法。依旧注意引号。
{session.capitalaccountid: 1000002, "cashpassWord": "123456", "currencytype": "RMB", "depositamount":5}
2)以管理员身份运行cmd,进入Apache安装位置的bin文件夹下。
3)运行以下指令:
ab -n 10000 -T application/json -p D:\Apache24\my-files\userDeposit.txt "http://localhost:3000/userLogin/capitalAccountFundIn"
4)指令运行结果如下:
测试完毕。