性能测试基本知识
一、什么是性能测试
使用自动化工具,模拟不同的场景,对软件各项性能指标进行测试和评估的过程就是性能测试。
1. 后台处理程序的性能(代码性能)
2. 中间件、数据库、架构设计等是否存在瓶颈
3. 服务器资源消耗(CPU、内存、磁盘、网络)
中间件:是提供系统软件和应用软件之间连接的软件。如:Tomcat、Apache等
二、性能测试的指标是什么
1. 响应时间
客户端发送请求,到客户端收到服务器返回的响应,过程中所经历的全部时间,都是响应时间 响应时间
2. 并发数
并发测试的用户数(某一物理时刻同时向系统提交请求的用户数)
3. 吞吐量
吞吐量(Throughput)指的是单位时间内处理的客户端请求数量,直接体现软件系统的性能承载能力
注意:
1. 从业务角度来看,吞吐量也可以用“业务数/小时”、“业务数/天”、“访问人数/天”、“页面访问量/天”来衡量
2. 从网络角度来看,还可以用“字节数/小时”、“字节数/天”等来衡量网络的流量
3. 从技术指标来看,可以用每秒事务数(TPS)和每秒查询数(QPS)来衡量服务器具体性能处理能力
3.1、TPS
说明:Transactions Per Second,每秒事务数 (单位时间内系统处理的客户端请求的事务次数)
计算:TPS = 并发数/平均响应时间
事务:就是业务请求,对应一个或者多个操作。如支付请求,包括服务器查询用户余额,支付安全校验等多个操作。 一个业务请 求发送给服务器后,最终会定位到服务器对应的业务请求的代码,既有可能是一段代码也有可能是多段代码。
3.2、QPS
说明:QPS(Query Per Second)每秒查询数
应用:控制服务器每秒处理指定请求数(如:控制服务器达到每秒60QPS,服务器的性能各项性能指标是否正常)。 (衡量web 服务器处理能力一个重要指标)
4. 点击数
点击数是衡量Web服务器处理能力的一个重要指标.
提示:
1. 点击数不是通常一般人认为的访问一个页面就是1次点击数,点击数是该页面包含的元素(图片、链接、框架等)向Web服 务器发出的请求数量。
5. 错误率
错误率指系统在负载情况下,失败业务的概率。错误率=(失败业务数/业务总数)*100%。
6. 资源利用率
是指系统各种资源的使用情况,一般用“资源的使用量/总的资源可用量×100%”形成资源利用率的数据
提示:通常,没有特殊需求的话
1.建议CPU不高于80%(±5)
2.内存不高于80%
3.磁盘不高于90% 4). 网络不高于80%
三、性能测试的目的
识别系统的弱点,评估系统能力,发现系统性能瓶颈,提高系统可靠性能和稳定性,系统调优,评估软件能否满足未来的性能需求。
四、性能测试的分类
基准测试
单个用户进行业务场景的测试,并统计性能的各项指标(为后续多用户性能测试做参考对 比)
负载测试
通过逐步增加系统负载量,测试系统性能的变化,在满足性能指标的前提下,系统所能够承受的最大负 载量的测试。
通过负载测试,一般能找到系统的最优负载和最大负载。
特点:
1):该方法主要目的是找到系统处理能力的极限
2):该方法在给定的测试环境下进行,通常需要考虑被测系统的业务压力量和典型场景
3):该方法一般用来了解系统的性能容量,或者是配合性能调优来使用
稳定性测试
在服务器稳定运行(业务正常的负载量)的情况下,进行长时间的测试,保证服务器能够正常运行。
长时间:1天、1周。
压力测试
系统在一定饱和状态下,例如CPU、内存等饱和情况下,系统能够处理的会话能力,以及系统是否会出现错误
特点:
1.该方法的主要目的是检查系统处于压力情况下是应用的性能表现 该方法通过增加访问压力,是系统资源使用保持在一定水平,检验此时应用的表现,重点在于有误出错信息产生,系统对应用的响应时间等
2.该方法一般通过模拟负载等方法,使得系统的资源使用达到较高的水平
配置测试
通过对被测系统软硬件环境的调整,了解各种不同环境对系统性能影响的程度,从而找到系统各项资源的最优分配原则
特点:
1.该方法主要目的是了解各种不同因素对系统系能影响的程度,从而判断出最值得进行的调优操作.
2.该方法一般在对系统性能状况有初步了解后进行,需要在确定的环境、操作步骤和压力条件下进行.
3.该方法一般用于性能调优和规划能力.
并发测试
测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题,几乎所有的性能测试都会涉及一些并发测试。
容量测试
关注系统在极限情况下的各种极限参数值。
在一定的软、硬件条件下,在数据库中构造不同数量级的记录数量,通过运行一种或多种业务场景在一定虚拟用户数量的情况下,获取不同数量级别的性能指标,从而得到数据库能够处理的最大会话能力,最大容量等。系统可处理同时在线的最大用户数,通常和数据库有关。
可靠性测试
通过给系统加载一定的业务压力(如CPU资源在70%~90%的使用率)的情况下,运行一段时间,检查系统是否稳定因为运行时间较长,通常可以测试出系统是否有内存泄漏等问题。
失败性测试
对于有冗余备份和负载均衡的系统,通过失败测试来检验如果系统局部发生故障,用户能否继续使用系统,用户受到多大的影响,如几台机器做均衡负载,一台或几台机器垮掉后系统能够承受的压力。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!