Badboy+Jmeter对项目进行测试
Badboy+Jmeter对项目进行测试
本文将使用Badboy编写Jmeter压力测试脚本,并使用Jmeter对课程SE305大作业进行不同并发数的压力测试
主要涉及内容
- Badboy
- Jmeter
- 压力测试
- 系统设计与分析
压力测试相关产品
1.tsung
tsung是erlang开发的一个开源的多协议分布式负载测试工具,它能用来压力测试HTTP, WebDAV, SOAP, PostgreSQL, MySQL, LDAP 和 Jabber/XMPP的服务器。它可以分布在多个客户机,并能够模拟成千上万的虚拟用户数并发。
2.LoadRunner
LoadRunner,是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。企业使用LoadRunner能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。 LoadRunner可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能。
3.Jmeter
Meter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。JMeter用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。你可以用JMeter提供的图形化界面分析性能指标或者在高负载情况下测试服务器/脚本/对象的行为。本次SE305大作业使用Jmeter进行负载测试。
制作Jmeter script
对比与LoadRunner,Jmeter提供的录制脚本的功能缺乏易用性。
需要:
1.把Jmeter配置成一个Web代理,用Jmter自己来录制脚本
2.创建http 代理服务器
3.录制脚本
得到的录制脚本会发现包含大量的图片和js文件,缺乏用户体验。
所以我们需要寻找其他工具录制脚本。BadBoy提供脚本录制功能,操作简单并且能够导出能用的jmx文件。
打开Badboy
为了便于测试,我们使用swagger-ui进行api测试,我们压力测试的内容也很简单,登陆swagger-ui进行模拟使用比如 1.获取movies 2.获取用户 3.登陆等操作。在Badboy地址栏输入url进入ui,并进行点击,每一次点击可以看到左方的step会有增加:
再点击File导出为jmx格式
使用Jemeter
使用Jemeter打开jmx文件
设置线程数为500,间隔和循环次数均对应不同的负载程度
添加监听器
点击运行
性能报告
500并发数性能报告
1.聚合报告
可以看到有几项url对应的error率为100%
2.曲线
主要观察吞吐率情况
3.响应速度
1000并发数性能报告
1.聚合报告
2.响应速度
总结
可以看到本次压力测试反映出有几处url对应的api出现了缺陷,在线程数更多的时候,对服务器的压力更大,会有更慢的响应速度,但吞吐率到达了瓶颈。