性能测试简介

一、前言
话说20世纪90年代初的某一天,国内第一台自主研发的大型固话交换机,终于千呼万唤地“闪亮”登场了。于是乎,这家公司马上向用户大力推销这款设备,但是用户提出了一个很实际的问题,彻底难住了这家公司,问题很简单,就是需要一份性能测试报告来证明这台设备真能支持宜称的话务容量那时候还没有成熟的电信领域性能测试工具,该怎么办呢?幸好有聪明的领导想出了一个中国式的解决办法某天下午,全公司的员工都放下了手头的工作,每人怀抱一部老式电话机(还要靠转盘来拨号),等领导倒数“三、二、一”后集体打电话。据说当时人数不够,达不到用户要求的通话量,甚至出现了一个人操作两部电话机的情况。 
当今社会“云计算”绝对是当前最热的T词汇,甚至沾上一点“云”概念的股票都会一飞冲天。“云”听起来很虚幻,其实就是瘦客户端加网格计算。今后客户端不再会有大量的计算任务,计算和存储都被放在云上。今后的客户端应该就是一个浏览器,用户的所有操作都是通过浏览器来实现的。 Google刚发布的操作系统 Chrome OS,就是基于这一理念设计的。B/S和C/S架构的软件系统,应该会慢慢演进到 Browser/Coud(浏览器/云)模式。如此看来,在“云计算”时代,Web性能测试依然很重要,而且会越来越重要。
 
二、什么是性能测试  
性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试。性能测试的目的是验证被测系统能否达到用户提出的性能指标,同时发现被测系统的性能瓶颈,为性能优化指引方向,从而达到优化系统性能的目的。  
性能测试包括以下几个方面:  
■评估系统的能力:测试中得到的负荷和响应时长数据可以被用于验证所计划的模型的能力,并帮助做出决策。  
■识别体系中的弱点:受控的负荷可以被增加到一个极端的水平并突破它,从而修复体系的瓶颈或薄弱的地方  
■系统调优:重复运行测试,验证调整系统的活动是否得到了预期的结果,从而改进性能。检测软件中的问题:长时间的测试执行可导致程序发生由于内存泄露引起的失败,揭示程序中隐含的问题或冲突。  
■验证稳定性( Resilience)、可靠性( Reliability):在一个生产负荷下执行测试一定的时间是评估系统稳定性和可靠性是否满足要求的唯一方法。
  
三、性能测试流程
完整的性能测试流程如下图:
在这里插入图片描述

四、性能测试分类  
性能测试包括基准测试、负载测试、压力测试、容量测试和稳定性测试等。 
基准测试(Benchmarking Testing): 基准测试是指在设定的基准条件的性能测试,并把此结果作为基准,为其他条件的测试提供参考。常指单用户循环100或50次得出各请求的响应情况,用于衡量请求本身是否存在性能瓶颈。
负载测试( Load Testing):  负载测试是指通过测试系统在资源超负荷情况下的表现,来发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,如响应时长、事务处理速率和其他与时间相关的性能指标。  
压力测试( Stress Testing):  在软件工程中,压力测试是对系统不断施加压力的测试,是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。例如测试一个Web站点在大量的负荷下,何时系统的响应会退化或失败。  
容量测试( Volume Testing):  容量测试确定系统可处理同时在线的最大用户数。
稳定性测试(Resilience Testing): 稳定性测试检测系统长时间运行是否稳定可靠(24小时*n),一般采用容量测试中最大用户数的80%进行长时间测试,检查业务响应是否稳定,硬件资源运行是否稳定,是否存在内存泄露,是否存在各类空间不足等。
负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是当负载逐渐增加时,测试系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能供的最大服务级别的测试。

五、性能测试指标  
对于B/S架构的软件,一般会关注如下Web服务器性能指标:  
■ Avg Rps:平均每秒钟的响应次数=总请求次数秒数。 
■ Successful Rounds:成功的请求。  
■ Failed Rounds:失败的请求。  
■ Successful Hits:成功的点击次数  
■ Failed Hits:失败的点击次数。  
■ Hits Per Second:每秒点击次数。  
■ Successful Hits Per Second:每秒成功的点击次数  
■ Failed Hits Per Second:每秒失败的点击次数。  
■ Attempted Connections:尝试连接数。  
■ Throughput:吞吐率  
对于C/S架构的程序,由于软件后台通常为数据库,所以我们更注重数据库的测试指标:  
■ User Connections:用户连接数,也就是数据库的连接数量;  
■ Number of Deadlocks:数据库死锁;  
■ Butter Cache Hit:数据库 Cache的命中情况。
测试指标折算  
测试环境平均并发数=(最大在线人数*10%)n  
n是生产环境和测试环境服务器配置折算比,例如:n=公倍数( (生产Web服务器数/测试web服务器数),(生产APP服务器数/测试APP服务器数) )
(生产服务器cpu/测试服务器cpu),一般算下来n=4。

六、测试结果收集与分析  
所有没有数据的分析都是耍流氓,收集的数据越多,才能分析得越充分。
收集数据:执行结果、硬件资源、数据库、应用软件、中间件等。
数据分析:由易到难、抓大放小、根据系统特性分析、根据错误分析、统计法、分段法、排除法。

七、生成性能测试报告
如何生成一份准确严谨的性能测试报告,是一项技巧性的工作。读者朋友只要遵循一定原则,并掌握一些文字技巧就不难办到。一份性能测试报告,至少应该包含如下内容:  
■测试基本信息:包含测试目的、报告目标读者、术语定义、参考资料。  
■测试环境描述:包含服务器软/硬件环境、网络环境、测试工具、测试人员。  
■性能测试案例执行分析:需要详细描述钢个测试案例的执行情况,以及对应的测试结果分析。  
■测试结果综合分析及建议:对本次性能测试做综合分析,并给出测试结论和改进建议。

本文主体转载于网络,如涉版权,请通知博主。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值