一:性能测试概念
1.性能:事务,物品的某些特性的评价值;
2.软件性能测试:是用一定的技术,找出或验证某个性能指标值的测试;(技术:测试工具和手段对服务器模拟发起多种正常,峰值以及异常负载条件;)
负载测试和压力测试都属于性能测试的子集;性能测试是动力,负载测试是载重,压力测试是强度
性能测试:表示在给定的性能指标下能执行的最好情况
负载测试:在一定的不同的 负荷 下,给系统造成的负荷及响应的时间
压力测试:在 高负荷 的情况下,来对系统的稳定性(长时间运行的系统)进行测试,更有效的发现系统稳定性的隐患和系统在负载峰值的条件下的功能隐患
性能测试的必要性研究
关键项评估:1.主要部门,监管部门审查,2.涉及生命财产安全,3.大型新系统,4.核心系统,5.架构调整,6.业务剧增,7.重大缺陷修复,
可测性:---可量化为性能指标值
二:软件性能测试的目的
1)使软件达到一个正常的性能指标要求;
2)在异常情况下是否能正常使用;
3)系统在长时间稳定情况下能否正常使用;
4)找到系统的瓶颈并进行优化;
负载测试:测试在一定负载情况下的系统性能(不关注稳定性,也不关注长时间运行,只是为了得到不同负载下的相关性能指标)
例如:通常从比较小的负载开始,逐渐增加用户的数量来增加负载,观察不同负载下应用程序的响应时间,所耗资源,直到超时,或关闭资源耗尽,这就是所说的负载测试,它是测试系统的不同负载情况下的性能指标。
压力测试:测试在一定的负载下系统长时间运行的稳定性,但是这个负载不一定是应用系统本身造成的,比如:利用脚本或工具事先吃掉服务器的一部分cpu,内存或宽带等,创造出一定的负载环境,并测试被测应用系统在此环境下的事务处理能力,响应时间等等,压力测试尤其关注大业务量情况下长时间运行系统带来的性能变化,(比如是否反应变慢,是否会内存泄漏导致系统逐渐崩溃,是否能恢复)。
压力测试是测试系统的限制和故障恢复能力,两种情况
1.稳定性压力测试:在选定的压力值下,长时间持续运行,通过这类压力测试,可以考察各项性能指标是否在指定范围内,有无内存泄漏,有无功能性障碍等,
2.破坏性压力测试:在稳定性压力测试中可能会出现一些问题,如系统性能明显降低,但很难暴漏出其真实的原因,故可以通过破坏性不断加压的手段,往往能很快速造成系统的崩溃或让问题明显的暴漏出来。
三:性能测试的主要指标
1)响应时间---从发起请求到收到请求响应的时间(t1+t2+t3)
#网络传输时间(t1,t3)
#服务器处理时间(t2)
2)TPS---每秒通过事务数,最主要的性能指标
#每秒通过事务数
#服务器处理事务数
3)并发数---单位时间内发起请求的用户数
#线程数---虚拟用户
4)吞吐量/吞吐率(事务/s kb/s)(衡量网络的性能指标)
#吞吐量
#事务数
#吞吐率
#数据量
5)资源利用率
#CPU
#内存
#磁盘
#I/O(磁盘读写,网络的上行,下行)
四:测试工具
1)JMeter
2)Lr
3)自研
五:开展性能测试的必备条件
1.网络要求:内网(zoom域) 外网 独立分开 千万不要用内网跨外网
2.独立环境:功能测试不能和性能测试共用环境(数据库服务器环境也要分开)