what is 压力测试
软件压力测试是一种基本的质量保证行为,它是每个重要软件测试工作的一部分。软件压力测试的基本思路很简单:不是在常规条件下运行手动或自动测试,而是在计算机数量较少或系统资源匮乏的条件下运行测试。通常要进行软件压力测试的资源包括内部内存、CPU 可用性、磁盘空间和网络带宽。
压力测试的目的是为了需要了解AUT(被测应用程序)一般能够承受的压力,同时能够承受的用户访问量(容量),最多支持有多少用户同时访问某个功能。
工具
jmeter
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用
测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、
Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下
测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的
程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
过程
报告生成过程
1.一般我们需要在本机上录制脚本,脚本录制方法参见jmeter测试--自带录制脚本功能。
2.真正的测试我们一般会放到服务器上,因为服务器的性能比自己的电脑要强大的多,所以利用服务器测试的结果更具有可靠性。这个时候我们就要用到xshell进行远程连接和winscp或xftp进行文件上传。
3.服务器测好的报告,拖到自己的电脑上,查看聚合报告和查看结果树。
分析过程
上方的表格的红框数据均超过500ms(即0.5s),说明并发量40(图中的#Samples)并不是最优并发量,红框仍然是可优化的地方(具体哪个文件参见图中的label就可以找到可优化文件)。
优化方向
1.上述标红的文件,找到文件,进行代码优化。
2.进行服务器分析,压测过程中查看服务器CPU和内存情况,从而判断是否应该增加服务器或者做一下负载均衡。如下图:
cpu利用率达到了100%,说明就可以针对对应的服务器做优化和处理了!
总结
jmeter模仿多终端进行压力测试,深刻体会到工具为我们带来了极大地便利,当然,具体的脚本录制、报告分析网上有很多资源,大家感兴趣可以自行查看!