性能测试、负载测试、稳定性测试、压力测试之间有何区别?刚开始自己也不能很好的区分,随着一些具体性能测试实践的开展,大概有一个基本的认识,总结如下:
首先,大致了解下软件产品的性能受哪些因素的影响
我们知道,软件总是运行在一定的环境下 ,这种环境包括支撑软件运行的软硬件环境和影响软件运行的外部条件。为了让客户使用软件系统感到满意,必须确保系统运行良好,达到高安全、高可靠和高性能。其中,系统是否具有高性能的运行特征,不仅取决于系统本身的设计和程序算法,而且取决于系统的运行环境(硬件环境)。系统的运行环境会依赖于哪些关键因素,例如:
从上面可以看出,使系统的性能达到一个最好的状态,不仅通过对处在特定环境下的系统进行测试以完成相关的验证,而且往往要根据测试的结果,对系统的设计、代码和配置等进行调整,提高系统的性能。 许多时候,系统性能的改善是测试调整、再测试再调整、一个持续改进的过程,这就是我们经常说的性能调优。在了解了这样一个背景之后 ,就比较容易理解为什么在性能测试中常常要谈负载测试。从测试的目的出发、从用户的需求出发,就比较容易区分性能测试、负载测试、稳定性测试、压力测试。
其次,如何理解性能测试、负载测试、稳定性测试、压力测试
性能测试、负载测试、稳定性测试、压力测试的测试目的不同,但其手段和方法在一定程度上比较相似,通常会使用相同的测试环境和测试工具,而且都会监控系统所占用资源的情况以及其它相应的性能指标,这也是造成我们容易产生概念混淆的主要原因。
性能测试类型
广义上性能测试指的是以下几种性能测试类型:
一般系统的性能指标
- 响应时间(系统为其服务所耗费的时间)。
- 吞吐量(简单讲就是系统在每单位时间内能处理多少个事务/请求/单位数据等)。
- 资源使用率(常见的资源有:CPU占用率、内存使用率、磁盘I/O、 络I/O)。
- 点击数(单位时间内,系统响应客户的请求,是系统处理能力的一个很有用的指标)。
- 并发用户数(并发用户数用来度量服务器并发容量和同步协调能力)。
我们取其中某几个性能指标,举个栗子。我们先假设一个场景:XX查询系统,其中一项产品规格(性能指标)为300用户并发查询,页面首屏结果请求响应时间不超过3秒。
随着被测系统的负载不断增大,系统TPS变化趋势图
图中 A/B/C/D四点表示:
A:产品规格(性能指标)
B :高于性能指标,接近系统资源临界点
C :高于性能指标,达到最大,出现性能拐点(可理解为最大并发用户数)
D :远高于性能指标,系统崩溃
性能测试
测试A点的系统性能。
性能测试是为了获得系统在某种特定的条件下(包括特定的负载条件下)的性能指标数据。
负载测试
测试 A点以下到C点系统性能。
负载测试的目标是测试在一定负载情况下系统性能(不关注稳定性,也就是说不关注长时间运行),实际中我们常从比较小的负载开始,逐渐增加模拟用户的数量(增加负载), 观察不同负载下应用程序响应时间、数据吞吐量、系统资源使用率(如CPU、内存)等,直到到系统的某项或多项性能指标达到安全临界值(如,系统内存已饱和),以发现系统可能存在的性能瓶预、内存泄漏、不能实时同步等问题(不关注稳定性,也就是说不关注长时间运行。它是测试系统的不同负载情况下的性能指标。
稳定性测试
测试 A点以下 到 B 点之间
稳定性测试是一般在低于性能值的前提下进行测试的,一般稳定性测试时间持续为 n*24 小时。测试时,我们需要结合用户实际情况控制测试中的负载量 ,使测试结果更具准确性和可靠性。
压力测试
测试B 点到D 点之间系统性能。
压力测试是在高于性能指标负载的前提下(超负载)对系统持续施加压力进行测试的,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐惠、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如124小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。
压力测试的几点注意
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!