性能测试理论知识
一、性能测试简介
1.什么是软件性能
定义:软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。
不同群体眼中的性能
不同的人由于人生观、世界观、价值观以及教育背景、知识体系、人生阅历的不同,对于同一事物或问题的看法可能不同。对于软件性能也是如此,不同的人由于视角的不同,所关注的点也可能不同。下面来看看在不同的人群眼中性能分别是什么样的。
· 用户眼中的性能
· 开发眼中的性能
· 系统管理员眼中的性能
· 测试眼中的性能是什么样的呢?
测试人员通常是做为软件质量控制的一个角色,不仅仅是找bug,需要对整个软件的质量负责,性能也属于质量的一部分,因此测试人员眼中的性能应该是全面的,考虑的东西也需要全面:
1、测试人员需要考虑全面的性能,包括用户、开发、管理员等各个视角的性能。
2、测试人员在做性能测试时除开要关注表面的现象如响应时间,也需要关注本质,比如用户看不到的服务器资料利用率,架构设计是否合理?代码是否合理等言方方面面。
2.什么是性能测试
定义:借助一定的工具、技术对软件的指标进行负载测试、压力测试、配置测试、并发测试、可靠性测试,来验证软件性能是否满足用户特定的性能需求。
目的:为了验证系统是否达到用户提出的性能指标,同时发现系统中存在的性能瓶颈,起到优化系统的目的。
3.为什么要进行性能测试
为了检测软件中的缺陷,验证系统是否达到要求的性能指标,并起到优化系统的目的;
简单来说就是,检测系统的不足处并对其进行调整和优化让系统又快又好用
4.什么时候进行性能测试
性能测试是在单元、集成、功能测试等完成后才进行的,要站在用户的角度去进行测试
5.性能测试的特点
①基本且常用的功能, 如登录注册,收邮件,查询邮件,用户使用频率高的功能
②对响应时间有要求的
6.怎么做性能测试
7.性能测试指标
7.1 响应时间 (Response time)
a)定义:从用户发送一个请求到用户接收到服务器返回的响应数据这段时间就是响应时间
b) 关键路径:下图为一次http请求经过的路径,请求会经过网络发送到web服务器进行处理,如果需要操作DB,再由网络转发到数据库进行处理,然后返回值给web服务器,web服务器最后把结果数据通过网络返回给客户端。
c) 计算方法:Response time = (N1+N2+N3+N4)+ (A1+A2+a3),即:(网络时间 + 应用程序处理时间)
d) 响应时间-负载对应关系:
图中拐点说明:
1、响应时间突然增加
2、意味着系统的一种或多种资源利用达到的极限
3、通常可以利用拐点来进行性能测试分析与定位
7.2 吞吐量 (Throughput)
a)定义:单位时间内系统处理的客户端请求的数量
b) “吞”进去的是请求,“吐”出来的是结果;在规定的单位时间内系统处理的客户请求数量,吞吐量反映的是服务器所承受的压力
c)计算方法:Throughput = (number of requests) / (total time).
d)吞吐量-负载对应关系:
图中拐点说明:
1、吞吐量逐渐达到饱和
2、意味着系统的一种或多种资源利用达到的极限
3、通常可以利用拐点来进行性能测试分析与定位
7.3 并发用户数 (Concurrent users)
并发用户数:某一物理时刻同时向系统提交请求的用户数,提交的请求可能是同一个场景或功能,也可以是不同场景或功能。
在线用户数:某段时间内访问系统的用户数,这些用户并不一定同时向系统提交请求
系统用户数:系统注册的总用户数据
三者之间的关系:系统用户数 >= 在线用户数 >= 并发用户数
7.4 资源利用率 (Resource utilization)
a) 定义:指的是对不同服务器系统中不同硬件资源被使用的程度
b) 通常需要关注的服务器资源:
CPU、内存、磁盘IO、网络IO (IO:input,output)
c) 计算方法:资源利用率=实际使用量/总的可用资源量
d)资源利用-负载对应关系:
图中拐点说明:
1、服务器某荐资源使用逐渐达到饱和
2、通常可以利用拐点来进行性能测试分析与定位
7.5 TPS (Transactions Per Second)
a) 定义:每秒系统能够处理的事务数
b) 事务:一个或者多个操作的过程
7.6 点击数 (Hits per second)
a) 定义:每秒钟用户向WEB服务器提交的HTTP请求数
b) 点击率越大,对服务器的压力越大。点击率只是一个性能参考指标,重要的是分析点击时产生的影响。需要注意的是,这里的点击并非指鼠标的一次单击操作,因为在一次单击操作中,客户端可能向服务器发出多个HTTP请求.
8.性能测试类型
性能测试类型 | |
负载测试 | 通过逐步给系统增加负载,在超负荷的情况下系统的最大加载能力;负载测试不关注系统的稳定性,主要是观察负载情况下程序的响应时间,cpu,内存等的消耗 |
压力测试 | 在负荷情况下系统长时间运行时的稳定性;压力测试主要关注系统反应是否缓慢,是否会内存泄漏导致系统逐渐崩溃尤其是短时间大量并发户访问时系统的抗压能力. |
配置测试 | 通过调整系统软/硬件环境,了解各种不同环境对系统性能的影响,从而找到系统的最优配置 |
并发测试 | 通过模拟用户并发访问,测试多用户同时访问同一应用、模块或数据,观察系统是否存在死锁、系统处理速度是否明显下降等其他的一些性能问题。 |
可靠性测试 | 当系统在一定的业务压力下,让系统持续运行一段时间,观察系统是否达到要求的稳定性 |
二、性能测试流程
三、性能测试工具
1.常见工具:
2.LoadRunner的简介
3. LoadRunner的操作步骤
>>详情请看