浅谈性能测试
最近在做性能测试的东西,顺便做一些整理总结。
首先,什么是性能测试?
谈到性能测试,我们经常会听到三个概念:性能测试、压力测试、负载测试,这三个名词的含义,我们先了解一下。
性能测试:指通过模拟真实的并发用户操作,来判断产品是否能够满足用户的需求;也是为了获得系统在某种特定的条件下(特定的负载条件下)的性能指标数据。比如:微信需要同时支持4亿个用户的接入为一个真实的用户需求,但是我们不可能真实的去接入4亿个用户,只能够通过模拟4亿个真实用户去接入,如果我们通过模拟的方式达到该目标了,就说明满足了这个需求。
压力测试:指在一定的负载情况(资源占用、接入用户量等)下,验证产品的功能是否还能够正常运行以及系统本身是否正常。也指在什么极限情况下系统会崩溃,系统崩溃后是否具有自我恢复性。通过强负载(大数据量、大量并发用户等)下的测试,查看应用系统在峰值使用情况下操作行为,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。
负载测试:系统正常工作时所能承受的最大负载,也可称为“容量测试”。模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其它加载方式来观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,以发现系统可能存在的性能瓶颈、内存泄漏、不能实时同步等问题。
总结为:
负载测试是性能测试、压力测试所使用的一种方法。
压力测试的目的是为了看在怎样的条件下系统会崩溃以发现各个组件的不足。
性能测试的目的则是为了看不同负载情况下的系统表现,可以说压力测试是一种极限的性能测试方式。
其次,了解下性能测试的相关指标?
1)响应时间:是指系统对请求作出响应的时间,从用户发送一个请求到用户接收到服务器返回的响应数据这段时间就是响应时间。这里的响应时间只是一个很笼统的概念,其实响应时间可以被进一步分解为系统响应时间和呈现时间。。
一般我们理解为请求到响应的过程:一次http会经过网络发送到web服务器进行处理,如果需要操作DB,再由网络转发到数据库进行处理,然后返回值给web服务器,web服务器最后把结果数据通过网络返回给客户端。响应时间是衡量一个系统性能的重要指标,但需要说明的是,软件性能的高低实际上取决于用户多该响应时间的接受程度。
计算方法:Response time = 网络时间 + 应用程序(WEB Server+DB Server)处理时间
2)吞吐量:是指系统在单位时间内处理请求的数量,吞吐量大表明系统单位时间能处理的请求数越多。对无并发的应用系统而言,吞吐量与响应时间成严格的反比关系,此时吞吐量就是响应时间的倒数。
谈到吞吐量,我们谈谈两个概念TPS和QPS:
TPS:Transactions Per Second,每秒事务数。它是软件测试结果的测量单位。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成的事务个数。
QPS:Queries Per Second,每秒查询率。它是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。
区别及理解:
A.TPS即每秒处理事务数,包括:”用户请求服务器”、”服务器自己的内部处理”、”服务器返回给用户”,这三个过程,每秒能够完成N个这三个过程,TPS也就是3
B.QPS基本类似于TPS,但是不同的是,对于一个页面的一次访问,形成一个TPS;但一次页面请求,可能产生多次对服务器的请求,服务器对这些请求,就可计入QPS之中。
C.一般的,评价系统性能均以每秒钟完成的技术交易的数量来衡量。系统整体处理能力取决于处理能力最低模块的TPS值。
D.QPS对应fetches/sec,即每秒的响应请求数,也即是最大吞吐能力。
3)并发用户数:是指系统可以同时承载的正常使用系统功能的用户数量,某一物理时刻同时向系统提交请求的用户数,提交的请求可能是同一个场景或功能,也可以是不同场景或功能。与吞吐量相比,并发数量是一个更直观但也是更笼统的性能指标。
4)资源利用率:资源利用率反映的是在一段时间内资源平均占用的情况。
通常需要关注的服务器资源如下:
A.CPU
定义:中央处理器是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit)。它的功能主要是解释计算机指令以及处理计算机软件中的数据。CPU Load: 系统正在干活的多少的度量,队列长度。系统平均负载。
标准:CPU指标主要指的CPU利用率,包括用户态(user)、系统态(sys)、等待态(wait)、空闲态(idle)。CPU 利用率要低于业界警戒值范围之内,即小于或者等于75%;CPU sys%小于或者等于30%, CPU wait%小于或者等于5%。单核CPU也需遵循上述指标要求。CPU Load要小于CPU 核数。
B.内存
定义:与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。
标准:现代的操作系统为了最大利用内存,在内存中存放了缓存,因此内存利用率100%并不代表内存有瓶颈,衡量系统内有有瓶颈主要靠SWAP(与虚拟内存交换)交换空间利用率,一般情况下,SWAP交换空间利用率要低于70%,太多的交换将会引起系统性能低下。
C.磁盘吞吐量
定义:磁盘吞吐量是指在无磁盘故障的情况下单位时间内通过磁盘的数据量。
标准:磁盘指标主要有每秒读写多少兆,磁盘繁忙率,磁盘队列数,平均服务时间,平均等待时间,空间利用率。其中磁盘繁忙率是直接反映磁盘是否有瓶颈的的重要依据,一般情况下,磁盘繁忙率要低于70%。
D.网络吞吐量
定义:网络吞吐量是指在无网络故障的情况下单位时间内通过的网络的数据数量。单位为Byte/s。网络吞吐量指标用于衡量系统对于网络设备或链路传输能力的需求。当网络吞吐量指标接近网络设备或链路最大传输能力时,则需要考虑升级网络设备。
标准:网络吞吐量指标主要有每秒有多少兆流量进出,一般情况下不能超过设备或链路最大传输能力的70%。
5)性能计数器:是描述服务器或操作系统性能的一些数据指标。例如对Windows系统来说,使用内存数、进程时间等都是常见的计数器
6)思考时间:也被称为"休眠时间",从业务的角度来说,这个时间指的是用户在进行操作时,每个请求之间的间隔时间。从自动化测试实现的角度来说,要真实地模拟用户操作,就必须在测试脚本中让各个操作之间等待一段时间,具体而言,就是在脚本中放置一个函数,使得脚本在执行两个两个操作之间等待一段时间。
7)点击数:每秒钟用户向WEB服务器提交的HTTP请求数。这个指标是WEB应用特有的一个指标:WEB应用是”请求-响应”模式,用户发出一次申请,服务器就要处理一次,所以点击是WEB应用能够处理的交易的最小单位。如果把每次点击定义为一个交易,点击率和TPS就是一个概念。容易看出,点击率越大,对服务器的压力越大。点击率只是一个性能参考指标,重要的是分析点击时产生的影响。需要注意的是,这里的点击并非指鼠标的一次单击操作,因为在一次单击操作中,客户端可能向服务器发出多个HTTP请求.
最后,性能测试的相关工具?
1)性能测试工具,从理论上来讲在性能测试过程中使用到的所有工具都可以称其为性能测试工具,通常分为以下几类
引用:https://www.cnblogs.com/puresoul/p/5503134.html
说明:
- 服务器端性能测试工具:需要支持产生压力和负载,录制和生成脚本,设置和部署场景,产生并发用户和向系统施加持续的压力。
- web前端性能测试工具:需要关于心浏览器等客户端工具对具体需要展现的页面的处理过程。
- 移动端性能测试工具:同web端性能测试工具也需要关心页面的处理过程,另外还要具体数据采集的功能,比如:手机CPU、内存、电量,启动时间等数据的记录。
- 资源监控工具:这个主要是能够收集性能测试过程中的数据以及良好的结果展现方式。
2)重点介绍下Jmeter和LoadRunner
- JMeter:采用的是多线程模型,扩展性很强,不过制造压力没有那么高。它很适合用来压一些Tomcat服务,或者一些后端接口。JMeter的缺点是压力值不能精确控制,难以适应高并发的情况,而且由于是JAVA编写的,本身比较消耗资源。
- LoadRunner:更像是一个模拟器,它比较适用于前端构造较复杂场景的情况,比如模拟100个用户登录的场景,LoadRunner对非技术人员提供了很好的支持。LoadRunner不适用后端接口。
Jmeter和LoadRunner的对比
3)其他性能测试工具介绍和了解 https://www.jianshu.com/p/a21b42196f8c
如转载还请保留出处及作者姓名keena_jiao,谢谢!