当前位置: 首页 > 科技观察

性能测试你需要知道的

时间:2023-03-16 21:49:15 科技观察

随着每个企业的业务发展,用户数量和数据量的不断增加,系统的压力也会越来越大,服务系统的性能也会随之提高严重影响企业利益。因此,性能测试的重要性和需求也越来越强烈。常见性能测试目的性能测试是确定系统在特定工作负载下的稳定性和响应能力。在进行性能测试之前,首先要明确性能测试的目的。针对不同的目的,相应的解决方案会有很大差异。性能测试最常见的目的(或机会)有3种:(1)评估当前系统性能,通过性能测试,了解系统当前性能是否达到预期。例如:新系统上线前、技术升级后,都会进行性能测试,确保系统上线稳定可靠运行。(2)发现瓶颈,优化性能。已知系统存在性能问题,并执行测试以查找瓶颈以优化其性能。例如:用户指出业务运行响应时间长,需要定位问题,调整性能;系统运行一段时间后,速度变慢,找到瓶颈,然后进行优化(3)通过性能测试预测系统未来的性能和可扩展性。将来达到一定负载量时系统的性能。以便提前预防和降低风险。具有非常好的可扩展性的系统,其性能随着资源的扩展呈线性或接近线性增长。不同类型的性能测试(1)BenchmarkTest基准测试:当系统处于低压状态时,检查系统的运行状态并记录相关数字作为基本参考。(2)负载测试负载测试是逐步增加系统负载,测试系统性能的变化,最终确定系统在满足性能指标的情况下所能承受的最大负载。目的:确定系统的性能能力(如在保证一定响应时间的情况下,系统可以允许多少并发用户),以及各种系统指标,如吞吐量、响应时间、CPU负载、内存使用率等,如何确定系统的性能。(3)压力测试压力测试是通过确定系统的瓶颈或不可接受的性能点来获得系统所能提供的最大服务水平的测试。目标:压力测试是为了发现在什么情况下您的应用程序的性能变得不可接受。(4)并发性能测试负载测试和压力测试通常统称为并发性能测试。即大并发场景下的系统性能,当多个用户同时访问时,检查系统能否稳定运行。平均并发用户数C=nL/Tn:平均每日访问用户数(登录会话数);L:一天内用户从登录到退出的平均时间(登录会话的平均时长);T:调查的时间段长度(用户一天使用系统多长时间);并发峰值数:C'≈C+3*rootC(5)大数据量测试大数据量测试包括独立数据量测试和综合数据量测试。独立数据量测试是指对某系统的存储、传输、统计、查询等业务进行的大数据量测试。综合数据量测试是指在系统有一定数据量的情况下,在负载压力测试下,检查业务能否正常运行的测试。目的:测试系统在大数据量时的性能。(6)容量测试容量测试的目的是通过测试预先分析出反映软件系统应用特性(如最大并发用户数)的某个指标的极限值。系统无任何软件故障,可在其极限状态下正常运行。.(7)配置测试通过调整被测系统的软硬环境,了解各种环境对系统性能的影响,从而找到各种系统资源的优化分配原则。(8)稳定性测试稳定性是通过给系统加载一定的压力,让系统连续运行一段时间(通常是7x24小时)来测试系统是否能够稳定运行。稳定性试验又称疲劳强度试验,属于可靠性试验的范畴。目的:测试系统长期稳定无故障运行的能力(9)故障恢复测试故障恢复测试是针对有冗余备份或负载均衡的系统,检查系统容灾措施是否可以启动通常如果出现部分系统故障,用户是否可以继续使用。(如:集群、双机热备等)目的:通过故障恢复测试来评估系统的健壮性和可恢复性。在实际项目中,可以根据不同的性能测试目的选择相应的性能测试方法。性能测试监控指标在进行各种性能测试时,需要同步检测系统的各项性能指标,以分析系统的实际响应能力和稳定性。常用的性能监控指标有四种:业务性能指标、资源性能指标、中间件监控指标和数据库监控指标。业务性能指标Transactionspersecond(TPS):系统每秒可以处理的事务或交易的数量。响应时间:从请求者发起请求到请求者收到服务器返回的过程所花费的时间。并发用户数:是指系统能够同时承载的能够正常使用系统功能的用户数,即给定时间内正在使用系统的用户数。在线用户数:会话状态为在线但未提交请求的用户数。吞吐量:指单位时间内系统处理的请求数。即系统在给定时间内完成的交易数量。(1)互联网企业响应时间行业标准:小于500毫秒,如淘宝业务10毫秒左右。金融企业:1秒以内为佳,部分复杂业务3秒以内。保险公司:3秒以内为佳。制造:最好在5秒以下。时间窗:不同的数据量结果不同。在数据量大的情况下,可以在2小时内完成。(2)TPS行业标准互联网企业:小于500毫秒,如某宝业务10毫秒左右。金融业:1000TPS~50000TPS,不包括互联网活动保险业:100TPS~100000TPS,不包括互联网活动制造业:10TPS~5000TPS互联网电子商务:10000TPS~1000000TPS互联网中型网站:1000TPS~50000TPS互联网小型网站:500TPS~10000TPS资源性能CPU指标:主要指CPU使用率和使用率,包括用户态(user)、系统态(sys)、等待态(wait)、空闲态(idle)。正常情况下,CPU利用率和使用率都低于75%的预警值范围。Memory/SWAP:内存利用率100%并不代表内存有瓶颈。系统的瓶颈主要取决于SWAP(exchangewithvirtualmemory)交换空间的利用率。一般来说,SWAP的交换空间利用率应该低于70%。过多的交换会导致系统性能不佳。磁盘吞吐量:磁盘吞吐量是指在没有磁盘故障的情况下单位时间内通过磁盘的数据量。磁盘繁忙率、磁盘队列数、平均服务时间、平均等待时间、空间利用率。其中,磁盘繁忙率是直接反映磁盘是否存在瓶颈的重要依据。一般磁盘忙率低于70%。网络吞吐量:网络吞吐量是指在没有网络故障的情况下单位时间内通过网络的数据量。一般不能超过设备或链路最大传输容量的70%。资源性能(CPU、内存、磁盘)行业标准:CPU利用率应低于行业警戒值范围,即≤75%;CPUsys%小于或等于30%;CPUwait%小于等于5%SWAPSwap空间利用率小于70%磁盘繁忙率小于70%网络吞吐量不能超过最大传输容量的70%中间件指标中间件监控指标主要包括JVM、线程池、JDBC连接池、常用中间件如:Tomcat、Weblogic等中间件监控内容及行业标准:线程数最小设置为50,最大设置为200比较合适。JDBC最小设置50,最大设置200是合适的。JVM最小堆大小和最大堆大小分别设置为1024M比较合适。数据库性能指标SQL:SQL执行耗时Throughput:Transactionspersecond(TPS),Queriespersecond(QPS)Locks:Lockwaitingtimes和lockwaitingtimeHitratio:Indexbufferhitratio,threadcachehitratio,Tablecachehit比率,查询缓存命中率等。数据库监控内容和行业标准:SQL耗时越短越好,一般在微秒级。命中率越高越好,一般不低于95%。锁等待次数越少越好,等待时间越短越好。操作系统内核参数主要包括信号量、进程和文件句柄。性能测试过程首先要制定测试计划,明确目的、策略等,根据测试计划逐步进行性能测试。明确性能测试目标确定本次性能测试的目标,包括性能测试对象、需求范围、性能指标符合性要求,即测试退出条件。制定性能测试计划在确定了测试对象和测试需求后,需要制定性能测试计划来指导性能测试工作。包括:简介、测试环境、测试场景、测试数据、测试策略、测试时间和人员安排。(1)测试环境描述了性能测试环境的物理结构。(2)测试场景针对每个业务功能模块,设计不同测试类型(稳定性测试、负载测试、压力测试)的单场景和组合场景测试。(3)测试数据描述了每个性能测试场景下的数据量需求。压压多少数据需要提前和业务方对接。系统现有的数据量和年增长率也可以和业务人员(产品经理)一起确定。当然,也可以采用一些经验方法或公式进行估算。比如:有并发数和峰值的公式,有基于28原理的估算方法。【并发用户数计算公式】:C=nL/T。C:平均并发用户数;n:日均访问用户数(登录次数);L:一天内用户从登录到退出的平均时间(平均登录会话时长);T:lengthoftimeperiodinvestigated(用户一天使用系统多长时间);【并发用户峰值数公式】:C'≈C+3*根C。其中:C:公式1中的平均并发用户数;【二八原则预估考试强度】:每个工作日80%的业务在20%的时间内完成。例如:业务集中在每年8个月,每月20个工作日,每个工作日8小时,即80%的业务在每天1.6小时内完成。去年处理了大约100万笔业务,其中15%的业务处理需要为每笔业务向应用服务器提交7次请求;70%的业务处理需要每笔业务向服务器发出5次请求;剩下的15%在业务处理中,每个业务需要向应用服务器提交3次请求。(根据以往统计结果,每年业务增长15%。考虑到未来三年业务发展的需要,测试量应为现有业务量的2倍。)(4)性能测试策略描述性能测试方法和过程与工具等。需要什么类型的测试。(5)测试时间及人员安排描述性能测试涉及的人员,以及性能测试时间计划。执行性能测试根据性能测试计划进行测试,准备测试环境,构建测试数据,执行测试用例,记录测试结果。在此过程中,如果发现性能问题,提交bug,修正bug。性能测试报告性能测试完成后,编写性能测试报告,总结本次性能测试的背景、目的、测试范围、测试指标要求、测试环境和工具、测试内容、测试结果和分析。其中,测试结果与分析主要列出测试指标结果数据和图表,并对测试结果和发现的性能问题进行总结分析。性能测试报告示例见下图:性能测试工具为了更高效地进行性能测试,选择合适的测试工具非常重要。下面列出一些常用的性能测试工具,供参考。