随着软件行业的快速发展,现代的软件系统愈来愈复杂,功能愈来愈多,测试人员除了须要保证基本的功能测试质量,性能也随愈来愈受到人们的关注。可是一提到性能测试,不少人就直接连想到Loadrunner。认为LR就等于性能测试,其实这是不对的。LR只是性能测试的一个工具,但性能测试不只仅是LR。本文会从如下几个方面介绍基础的性能测试理论,后续也会持续更新相关文章,尽可能理论结合实践,让性能测试学习不在是工具的学习。html
目录:web
1、 什么是软件性能数据库
2、不一样群体眼中的性能apache
3、性能测试类型编程
4、性能测试应用场景tomcat
5、性能测试基本概念安全
6、理发店模型和地铁进站模型服务器
7、作好性能测试须要掌握的知识网络
正文:架构
1、 什么是软件性能
定义:软件的性能是软件的一种非功能特性,它关注的不是软件是否可以完成特定的功能,而是在完成该功能时展现出来的及时性。
由定义可知性能关注的是软件的非功能特性,因此通常来讲性能测试介入的时机是在功能测试完成以后。另外,由定义中的及时性可知性能也是一种指标,能够用时间或其它指标来衡量,一般咱们会使用某些工具或手段来检测软件的某些指标是否达到了要求,这就是性能测试。
性能测试定义:指经过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
2、不一样群体眼中的性能
不一样的人因为人生观、世界观、价值观以及教育背景、知识体系、人生阅历的不一样,对于同一事物或问题的见解可能不一样。对于软件性能也是如此,不一样的人因为视角的不一样,所关注的点也可能不一样。下面来看看在不一样的人群眼中性能分别是什么样的。
测试人员一般是作为软件质量控制的一个角色,不只仅是找bug,须要对整个软件的质量负责,性能也属于质量的一部分,所以测试人员眼中的性能应该是全面的,考虑的东西也须要全面:
一、测试人员须要考虑全面的性能,包括用户、开发、管理员等各个视角的性能。
二、测试人员在作性能测试时除开要关注表面的现象如响应时间,也须要关注本质,好比用户看不到的服务器资料利用率,架构设计是否合理?代码是否合理等言方方面面。
3、性能测试类型
4、性能测试应用场景(领域)
一、性能测试应用场景(领域)主要有:能力验证、规划能力、性能调优、缺陷发现、性能基准比较,下表简单介绍和对比了这几个场景的各自用途和特色:
主要用途 | 典型场景 | 特色 | 经常使用性能 测试方法 |
|
能力验证 | 关注在给定的软硬件条件下,系统可否具备预期的能力表现 | 在要求平均响应时间小于2秒的前提下,如何判断系统是否可以支持50万用户/天的访问量? | a)要求在已肯定的环境下运行 b)须要根据典型场景设计测试方案和用例,包括操做序列和并发用户量,须要明确的性能目标。 |
a)负载测试 b)压力测试 c)稳定性能测试 |
规划能力 | 关注如何使系统具备咱们要求的性能能力 |
某某系统计划在一年内获客量在到xxx万,系统到时候是否能支持这么多用户量?若是不能须要如何调整系统的配置? | a) 它是一种探索性的测试 b) 经常使用于了解系统性能和得到扩展性能的方法 |
a) 负载测试 b) 压力测试 c) 配置测试 |
性能调优 | 主要用于对系统性能进行调优 | 某某系统上线运行一段时间后响应速度愈来愈慢,此时应该如何办? | 每次只改变一个配置,切忌无 休止的调优 | a) 并发测试 b) 压力测试 c) 配置测试 |
缺陷发现 | 发现缺陷或问题重现、定位手段 | 某些缺陷只有在高负载的状况下才能暴露出来,如线程锁、资源竞争或内存泄露。 | 作为系统测试的补充,用来发现并发问题,或是对系统已经出现的问题进行重现和定位 | a) 并发测试 b) 压力测试 |
性能基准比较 | 经常使用于敏捷开发过程当中,敏捷开发流程的特色是小步快走,快速试错,迭代周期短,需求变化频繁。很难定义完善的性能测试目标,也没有时间在每一个迭代开展详细的性能测试,能够经过创建性能基线,经过比较每次迭代中的性能表现变化,判断迭代是否达到了目标。 |
二、一般在某个性能场景(领域)中须要联合使用多种性能测试方法一块儿进行性能测试,下表为性能测试应用领域与测试方法关联:
|
能力验证 |
规划能力 |
性能调优 |
缺陷发现 |
性能基准比较 |
基准测试 |
√ |
|
√ |
|
|
负载测试 |
√ |
√ |
√ |
|
|
压力测试 |
√ |
√ |
√ |
√ |
√ |
并发测试 |
|
|
|
√ |
√ |
稳定性测试 |
√ |
|
|
|
|
5、性能测试基本概念
一、响应时间
a)定义:从用户发送一个请求到用户接收到服务器返回的响应数据这段时间就是响应时间
b) 关键路径:下图为一次http请求通过的路径,请求会通过网络发送到web服务器进行处理,若是须要操做DB,再由网络转发到数据库进行处理,而后返回值给web服务器,web服务器最后把结果数据经过网络返回给客户端。
c) 计算方法:Response time = (N1+N2+N3+N4)+ (A1+A2+a3),即:(网络时间 + 应用程序处理时间)
d) 响应时间-负载对应关系:
图中拐点说明:
一、响应时间忽然增长
二、意味着系统的一种或多种资源利用达到的极限
三、一般能够利用拐点来进行性能测试分析与定位
二、吞吐量
a)定义:单位时间内系统处理的客户端请求的数量
b)计算单位:通常使用请求数/秒作为吞吐量的单位,出可使用 页面数/秒表表示。
另外,从业务角度来讲也可使用 访问人数 /天 或 页面访问量/天 作为单位。
c)计算方法:Throughput = (number of requests) / (total time).
d)吞吐量-负载对应关系:
图中拐点说明:
一、吞吐量逐渐达到饱和
二、意味着系统的一种或多种资源利用达到的极限
三、一般能够利用拐点来进行性能测试分析与定位
三、并发数:
并发用户数:某一物理时刻同时向系统提交请求的用户数,提交的请求多是同一个场景或功能,也能够是不一样场景或功能。
在线用户数:某段时间内访问系统的用户数,这些用户并不必定同时向系统提交请求
系统用户数:系统注册的总用户数据
三者之间的关系:系统用户数 >= 在线用户数 >= 并发用户数
四、资源利用率
a) 定义:指的是对不一样系统资源的使用程度,一般以占用最大值的百分比来衡量
b) 一般须要关注的服务器资源以下:
一、CPU:就像人的大脑,主要负责相关事情的判断以及实际处理的机制
二、内存:大脑中的记忆块区,将眼睛,皮肤等收集到的信息记录起来的地方,以供cpu进行判断,可是是临时的,访问速度快,若是关机或断电这里的数据会消失。
三、磁盘IO:大脑中的记忆区块,将重要的数据保存起来(永久保存,关机或断电不会丢失,速度慢),以便未来再次使用这些数据。
四、网络:
c)资源利用-负载对应关系:
图中拐点说明:
一、服务器某荐资源使用逐渐达到饱和
二、一般能够利用拐点来进行性能测试分析与定位
五、其它经常使用概念:
a) TPS:Transactions Per Second,每秒事务数
b) 思考时间:用户每一个操做后的暂停时间,或者叫操做之间的间隔时间,此时间内是不对服务器产生压力的
c) 点击数:每秒钟用户向WEB服务器提交的HTTP请求数。这个指标是WEB应用特有的一个指标:WEB应用是"请求-响应"模式,用户发出一次申请,服务器就要处理一次,因此点击是WEB应用可以处理的交易的最小单位。若是把每次点击定义为一个交易,点击率和TPS就是一个概念。容易看出,点击率越大,对服务器的压力越大。点击率只是一个性能参考指标,重要的是分析点击时产生的影响。须要注意的是,这里的点击并不是指鼠标的一次单击操做,由于在一次单击操做中,客户端可能向服务器发出多个HTTP请求.
d)PV:访问一个URL,产生一个PV(Page View,页面访问量),每日每一个网站的总PV量是形容一个 网站规模的重要指标。
UV:做为一个独立的用户,访问站点的全部页面均算做一个UV(Unique Visitor,用户访问)
6、理发店模型和曲线拐点模型
上面介绍了不少性能测试中的基本概念,比较抽象,能够经过性能测试理发店模型 或 地铁进站模型来帮忙咱们更好的理解这些概念。这里不作详细介绍了,须要的可直接查看原文。
7、作好性能测试须要掌握的知识: