性能测试概述
一、什么是性能测试
软件测试的一种,它的主要方向是测试系统在一定的负荷压力下,系统的响应时间,吞吐量,稳定性,系统的可扩展性等性能指标。
结合应该用的架构和实现细节找出问题,并最终确认问题得到解决的过程。
大部分的性能测试,是将程序部署在服务器上,测得是服务器的性能。
也有可执行程序(APP,exe)---客户端性能
二、性能测试的目的
1、基本目的
a、验证是否达到用户的性能指标
b、发现软件中存在的性能瓶颈并优化
2、评估系统的能力
a、测试中得到的负荷和响应时间数据,用于验证所计划的能力
b、帮助做出决策
3、识别体系中的弱点
a、受控的负荷可以被增加到一个极端的水平,并突破它
b、修复体系的瓶颈或薄弱的地方
4、系统调优
a、重复运行测试,验证调整系统的活动是否得到了预期的结果
b、改进性能。eg:长时间的测试执行可导致内存泄漏
5、验证稳定性
在一定生产负荷下执行测试一定的时间评估系统稳定性和可靠性是否满足要求
三、不同视角的性能测试
1、从用户的角度:
a、还让我等多久?---响应时间
b、为什么总是失败?---稳定性
2、从管理员的角度(运维人员):
a、服务器资源使用合理么?---资源利用率
b、数据库使用合理吗?---资源利用率
c、系统能否实现扩展?---可扩展性
d、最多支撑多少用户访问?---系统容量
e、最大业务处理量?---系统容量
f、系统有哪些潜在的瓶颈?---可扩展性
g、更换哪些设备,添加哪些机器可以提高系统性能?---可扩展性
h、7*24 小时连续不间断业务访问?---稳定性
3、从开发的角度
a、架构设计是否合理?---架构设计
b、数据库设计是否合理?---数据库设计
c、代码是否存在性能问题?---代码
d、是否有不合理的内存使用?---代码
e、是否有不合理的线程同步操作?---代码
f、是否有不合理的资源竞争?---代码
g、代码算法是否还能有进一步提升?---代码
4、从测试人员的角度
a、测试人员眼中的性能应该是全面的
b、包括用户、开发、管理员等各个视角的性能
c、测试人员在做性能测试时要关注表面的现象,如响应时间
d、关注本质,比如用户看不到的服务器资料利用率,架构设计是否合理?代码是否合理等方面
5、性能测试设计的事项
a、评估系统的可行性
b、评估系统的性能指标
c、比较多个不同系统或是不同系统配置时的性能特征
d、找出系统性能问题并确认问题根源
e、做系统性能调优
f、找出系统吞吐量的不同等级
性能测试关键指标
一、响应时间
概念: 对请求做出响应所需要的时间,是用户感知软件性能的主要指标。
响应时间包括:
a、用户客户端呈现时间
b、请求/响应数据网络传输时间
c、应用服务器处理时间
d、数据库系统处理时间
响应时间多少合理?
对于一个web系统,普遍接受的响应时间标准为2/5/8秒
2秒钟之内响应客户是非常好的,5秒钟之内响应客户是可以接受的,8秒钟是客户能接受的响应的上限
二、并发用户数
1、系统用户数:软件系统注册的用户总数(基于此做性能测试)
2、在线用户数:某段视角内访问的用户数,这些用户只是在线;不一定同时做某一件事情
3、并发用户数:某一个时间内同时向软件提交请求的用户数;场景不已定是同一个
三、吞吐量
性能测试:指单位时间内系统处理用户的请求数
从业务角度看:吞吐量可以用:请求数/秒、页面数/秒、人数/天或处理业务数/小时等单位来衡量
从网络角度看:吞吐量可以用:字节/秒来衡量
对于交互式应用来说,吞吐量指标反映的是服务器承受的压力,他能说明系统的负载能力
TPS:每秒事务数
以不同方式表达的吞吐量可以说明不同层次的问题
以字节数/秒方式:表示数要受网络基础设施、服务器架构、应用服务器制约等方面的瓶颈
已请求数/秒的方式:主要是受应用服务器和应用代码的制约体现出的瓶颈