性能测试主要用于评价一个网络应用系统在多用户访问时系统的处理能力。性能测试主要关注系统上线时的性能指标评估,在高负载高压力时系统是否能稳定工作,以及长时间运行时的稳定性。
1.性能测试的关注点
.判断客户端的响应时间是否满足要求,评估系统处理速度是否达标
.判断服务器的资源使用情况是否合理,评估系统硬件配置是否合理
.判断应用服务器和数据库资源使用情况是否合理,评估服务器资源使用情况是否合理
.判断最大访问数,最大业务处理量是多少,评估系统处理能力
.分析系统可能存在的瓶颈在哪里
.判断是否支持7x24小时的业务访问,评估系统的稳定性
.判断架构和数据库设计是否合理,便于对系统进行优化
.判断内存和线程资源是否能正常回收,评估系统崩溃的风险
.判断代码或SQL语句是否存在性能问题
.如果系统出现不稳定的情况,分析其可恢复的性如何
2.性能测试的原理
对于web应用程序,通常我们回从3个方面进行测试,分别是代码层面,应用层面和协议层面,只有将这3个层面都覆盖了,才能确保测试的完整性,对于web系统更是如此。
协议级自动化测试通常包含基于协议的功能测试和性能测试两部分。
.基于协议的功能测试原理是,从客户端角度发送协议数据包到服务端,并通过检查服务端返回的响应内容来测试其功能。
.基于协议的性能测试原理是,通过模拟大量的客户端向服务器发送请,来评估服务器的处理能力和系统的响应时间等性能指标,同时也需要关注在高负载的情况下系统在功能上是否正常,从而验证系统的稳定性
对于基于协议的性能测试,只需要满足一下3个条件即可。
.基于协议:当通过协议发送请求时,只需要关注请求与响应,可以忽略软件产品在界面的操作
.多线程并发:当多线程并发向服务器发送请求时,对服务进行负载和压力测试。
.模拟真实场景:必须真实再现用户场景,否则性能测试数据将没有参考价值。
3.性能测试方法
通常使用两种方法进行性能测试,一种为负载测试,一种为压力测试,这两种方法最主要的差别如下。
.负载测试关注的是不同负载水平下系统的性能指标,主要用于评估系统性能指标,比如,可以评估系统在200个并发用户时的性能指标,在500个并发时的性能指标,在800个并发时的性能指标。200个,500个,800个用户就是指不同的负载水平,通过这种方法可以找到系统的最大用户数和最佳用户数。最大用户数是指系统的负载极限,比如CPU利用率打到100%,或者网络带宽被占满,或者响应时间很慢,任何一个指标打到极限都意味着系统已经达到了极限,这可以用于确定系统的瓶颈,最佳用户数则是指在当前负载水平下系统各方面都表现良好,而又不存在资源浪费,比如,如果CPU利用率只有20%,则说明CPU中很大的处理能力被浪费,它最好在80%左右,其他指标也可以用80%作为一个判断标准。
.压力测试则关注在超高负载的情况下,系统是否还能稳定运行,如果不能稳定运行,那么系统还能坚持多久,在系统慢慢崩溃的过程中,他表现出了怎样的特征,压力测试不需要考虑性能指标,毫无疑问,性能指标是肯定无法满足的,其重点是关注系统是如何失效的,以便于系统正式上线后采取风险控制措施,系统正式上线后若出现性能问题,我们可以快速定位到问题的根源,并对其进行修复,另外,最好不要让系统出现性能问题,在压力测试完成后就开始着手对系统进行优化或者使用该井算法,避免系统在运行时超过其最大用户数。