- 性能测试的基本概念
- 什么是性能测试和性能测试目的
- 不同的视角看性能测试
- 性能测试的流程
- 性能测试的基本术语和概念
- 性能测试测试分类
- 应用程序是否能够很快的响应用户的要求?
- 应用程序是否能处理预期的用户负载并有盈余能力?
- 应用程序是否能处理业务所需要的事务数量?
- 在预期和非预期的用户负载下,应用程序是否稳定?
- 是否能确保用户在真正使用软件时获得舒服的体验?
开发人员
- 系统架构:架构设计是否合理?
- 数据库设计:数据库设计是否存在问题?数据库死锁?
- 代码和设计:代码是否存在性能问题?内存泄露?系统中是否存在不合理的线程同步方式和不合理的资源竞争?
系统管理人员:操作系统、网络、服务器等等
- 资源利用率:应用服务器和数据库资源使用状况合理吗?
- 系统容量:系统最多能支持多少用户的访问?系统最大的业务处理量是多少?(系统现在支持100个用户并发没有问题,那么将来支持200个用户并发时是否会出现性能问题?)
- 系统稳定性:系统是否能支持7X24小时的业务访问?
- 系统可扩展性:系统是否能够实现扩展?系统性能可能的瓶颈在哪里?更换哪些设备能够提高系统性能?
业务人员
参数:如何向用户提供参数,例如支持多少用户使用?响应时间是多少?
测试人员
以上所有层面都需要关注
是否能够发现系统中存在的瓶颈?
是否真实有效的评估系统性能能力?
用户
响应时间:过长时间的等待会让使用者烦躁不安;
对于一般的web网站来说,在欧美国家普遍的标准为原则3/5/8(2/5/10):
3: 3秒钟用户会觉得是一个很好的体验。
5: 5秒钟用户可能会觉得差了一点,还行,比较好。
8: 8秒钟是用户所能承受的最大极限
系统稳定性:出现HTTP500错误或数据库崩溃会让用户对系统失去信心
图源网络
- 何时进行性能测试:功能测试的中后期
以下也是性能测试中关注的一些方面
并发用户
- 广义的并发用户数:同一时刻,给服务器产生压力(发送请求)的用户数量(可以是不同的功能)
- 狭义的并发用户数:统一时刻,使用系统的同一个功能(发送请求)的用户数量
(后面的loadRunner 是使用的狭义的并发用户数)
用户数 - 系统用户数:注册这个系统的用户数量
- 在线用户数:某一时刻登录系统的用户数量
RT/ART
响应时间 RT(response time) / 平均响应时间ART(average response time)
- 响应时间 = 反应时间(人的反应时间)+网络的传送时间(来回 )+服务器处理时间+数据库响应时间
响应时间又叫请求响应时间:TTLB(time to last byte)
TRT
- 事务的响应时间 TRT (transaction response time) : 事务是一系列密切相关的操作的集合
- 是指服务器处理一个事务所用的时间
TPS
- 每秒事务通过数 TPS (transacation per second)
HPS
- 点击率 HPS(hit per second )每秒向服务器发送的HTTP请求的个数。点击率越大,服务器压力越大。
- 这里的点击并不是鼠标的一次点击,而是发送的http请求,一次鼠标点击可能会有多个http请求,从而可以产生点击率
Throughput
- 吞吐量throughput 服务器在单位时间处理的客户信息量
- 吞吐量的大小直接提现服务器的承载能力
- 可以使用bytes来衡量 单位时间内服务器处理的字节数,单位为 B/s
- 或者是使用TPS 每秒处理事务处理来表示
- 在实际测试过程中,测试前吞吐量是不知道的,必须通过不断添加VU来测试,才能得到吞吐量的拐点,亦即服务器吞吐量的最大值。随着并发用户数的增加,吞吐量增加,进入重压力区后逐步平稳,到达拐点区后急剧下降,说明系统已经达到了处理极限。可以看到拐点。
Throughout
- throughout 吞吐率 指单位时间内从服务器返回的字节数,也可以指单位时间内服务器处理客户提交的请求数。它是衡量网络性能的一个重要指标。- 吞吐率=吞吐量/测试时间,值越大,系统的负载能力越强。
thinktime - 思考时间 thinktime 就是用户进行操作时,每个请求或者操作之间的间隔时间
- 是为了更加真实地模拟用户的操作场景。
资源利用率 不同系统资源的使用情况。
资源利用率
CPU,Memory,磁盘,网络
软硬件配置
关注硬件配置
基准测试
- 对于一个新系统进行性能测试,记录各项性能指标,作为后续性能测试的基准。也可以说是第一次测试,方便日后比较。
负载测试
- 在被测的系统上,不断的增加压力。给系统定容定量,在系统上不断增加负载(用户数)找到系统处理能力的极限,看系统最大承受的用户负载是多少,看系统是否达到了需求所需要的性能指标(RT,TPS、吞吐率、资源利用率)
- 也就是说,这种方法是对一个系统持续不段的加压,看你在什么时候已经超出“我的要求”或系统崩溃
压力(强度)测试
- 为了找出系统的性能瓶颈,以及产生系统性能瓶颈的原因。
- 一般是让系统的用户负载达到饱和长时间运行,检查系统资源分配是否合理,同步问题,内存泄漏,检查原因
- 这种性能测试方法一般用于测试系统对业务高峰期的抗压和恢复能力。也就是说,这种测试是让系统处在很大强度的压力之下,看系统是否能暂时承受住这样的压力,高峰期压力过去后,系统能否自动恢复正常。
并发测试
- 多个用户同时访问系统。 负载测试和压力测试都是属于并发测试
配置测试
- 通过测试不同的应用服务器,网络环境(三大运营商),数据库不同的参数设置,不同的硬件设备,查看系统性能表现,找出最优最合理的资源配置。
可靠性测试
- 长时间运行系统在用户负载为最大负载的70% - 90% ,查看系统的性能指标(RT,TPS,点击率、吞吐量、资源利用率)是否稳定运行
大数据量测试
- 1.独立的数据量测试
针对某些系统存储、传输、统计、查询等业务进行大数据量测试 - 和压力测试、负载测试、并发测试、可靠性测试相结合的综合测试方案
失效恢复性测试
- 重在关注系统出现问题后能否根据预先制定的策略恢复,且恢复后能否正常运行。
- 一般是对有备份和具有负载均衡的系统进行的,主要是为了测试当系统局部发生故障时,是否会对全局产生大的影响,产生的影响是否在可以接受的范围内,以及用户能否继续使用系统。
这些测试类型其实是密切相关,甚至无法区别,例如几乎所有的测试都有并发测试。在实际中不用纠结具体的概念。而是要明确测试的目的。比起业务功能测试,性能测试才是高下立见。



