做者:ZBWlaravel
版本:v1.1
web
在Phylab的开发过程当中,对于生成报告接口的性能考量十分重要。原有的Latex接口虽然生成的报告美观,但编译Latex模板的速度一直不尽人意。除此以外往届同窗也出现过因为多人同时生成报告形成网站崩溃的状况。所以上一阶段咱们着手开发了基于Markdown模板的报告生成接口。开发结束以后,如何考量两个接口的性能成为了咱们须要关注的问题。正则表达式
因为测试者对Postman较为熟悉,咱们首先尝试使用Postman进行性能测试,但因为其功能有限,随后咱们又使用Jmeter进行了并发方面的测试。所以如下将简单介绍这两款工具的使用。chrome
Postman是一款强大的API测试工具,可以向服务器发起复杂的http请求,其请求头、请求体以及Cookie等均可以经过简单清晰的方式定制。结合额外的浏览器插件,Postman还可记录浏览器发生的请求。从而成为了编写脚本的好帮手apache
如下介绍Postman的Chrome浏览器App,其最大的优势是结合Postman Interceptor浏览器插件,无需额外配置便可捕捉浏览器正在发起的请求。(Postman本地应用须要额外配置浏览器代理信息)浏览器
缺点是此Chrome App已经处于停滞开发的状态,启动时会收到Deprecated的警告。但因为本文涉及的功能较为简单,因此暂时不考虑此问题。服务器
下载连接:Chrome app, Postman Interceptorcookie
(1) 启动Postman Interceptor的接收状态,其中的输入框能够经过正则表达式过滤请求域名。session
(2) 打开Postman app多线程
左侧是软件发起过以及记录浏览器发起的请求列表,右侧是单个请求的详细信息。
(1) 输入请求相关信息 测试的第一步是构造请求,能够在右侧的长条状栏内输入请求指向的API,并指定请求的类型。以后填写下方的请求详细信息。
(2) 使用浏览器Cookie(使用Interceptor捕获请求)
这里咱们的问题是被测接口须要登录才能使用,而直接由Postman发起的请求默认是不带有任何额外Cookie的,请求结果是Unauthorized。所以这里的简便方法是在登录网站后在浏览器端点击生成报告,并经过interceptor获取浏览器发起的请求,此时请求内包含了登录的Cookie信息。
在浏览器发起请求后,Postman会直接记录下请求的详细信息。因为在浏览器上填好数据后点击生成报告,捕获的请求信息中已经包含了测试接口所需的数据。
(3) 发送及保存请求
最后点击Send便可发送请求,并在面板下方看到请求的结果。
能够将请求保存到Collection中备用。
Postman提供了Runner功能,能够自动运行Collection中的全部测试。
(1) 启动
点击界面右上角的Runner打开相应界面。其中在Runs下能够选择须要运行的collection。左侧可查看以前的测试结果。
(2)参数配置
中间部分主要用到参数的为Iteration,表明测试重复的次数;Delay表明每次重复之间的间隔;Data File部分能够上传相应的数据文件。
(3) 运行测试查看结果
点击Run即可运行测试。
例如咱们测试Markdown生成接口的平均耗时,可设置Iteration为10,运行后能够看到每次请求返回的时间及状态码。
可经过Export Test Result导出结果查看具体的报告。
Postman的一大缺点是其只能串行运行测试,而不能并行测试,从而没法测量服务器的并发性能。所以咱们开始考虑使用更复杂的工具Jmeter来测试。Jmeter是由Apache基金会旗下的一款负载测试软件,咱们仅仅应用了其中的HTTP请求测试,而实际上该软件还能够用于不少方面。
从这里下载Jmeter二进制文件压缩包:Download Apache Jmeter
该程序解压后便可使用。
解压后进入bin文件夹,Windows直接运行jmeter.bat便可,Linux下运行jmeter.sh。注意Jmeter的使用须要JRE支持。
Jmeter是一款模块化的软件,功能很是强大,但使用起来须要像搭积木同样增长本身所需的模块。从上手难度上讲要高于Postman。
Jmeter启动后默认打开了一个空的Test Plan。具体的测试内容须要咱们自行添加。Jmeter以多线程的方式并行发起请求,于是咱们首先须要添加线程组。
(1) 新建线程组
如图新建一个线程组,点击新增的线程组能够配置多线程的具体信息。
(2) 配置线程组
配置列表中,Number of Threads为线程的数量,此处180意味着咱们在单次测试中会启动180个线程,在咱们的测试状况中会发起180个请求。 Ramp-Up Period为建立以上数量线程的时间,这里设置为60意味着180个线程将在60秒内逐步启动。以上咱们模拟的是较为平均的高压力使用状况。倘若将此值设置为较小的数字,大量请求将同时发起,能够测试突发的状况。 循环次数表明这一线程组测试的次数。咱们仅运行1次。
(1) 添加http请求
右键设置好的线程组,添加Http请求。
(2) 配置http请求及cookie
这里即配置咱们发起请求的具体内容,其配置方式和Postman很是相似,照猫画虎便可。
注意这里的请求也是不附带任何Cookie信息的。所以咱们还须要添加HTTP Cookie Manager来附带额外的登录Cookie信息。Cookie的内容能够从Postman的测试中获取,也能够由浏览器F12获取。添加后填入须要的Cookie信息便可。这里咱们仅须要laravel_session以使网站识别咱们的登录帐户。
(3) 配置结果查看模块
除此以外咱们还须要添加查看结果的相关组件。在Thread Group下增长View Results Tree能够查看每次请求的结果,增长Aggregate Report能够查看累计运行测试的状况。
(1) 运行测试
在所有配置完成后点击界面上方的绿色三角按钮便可运行测试。
(2) 查看结果
能够在上述的两个监听器内查看结果,能够点击扫把状的按钮清空运行结果。(若是不清空结果Aggregate Report将持续记录)
在Aggregate Report的底部能够导出结果为csv文件。