最近项目上在对网站和wap作性能优化(目标是支持200个并发,在登陆和课程详情页的相关操做),借此机会学习性能测试html
1.了解性能测试的基础知识前端
2.性能测试的流程;web
3.怎么样录制脚本;数据库
4.怎样配置参数,实施压测;性能优化
5.怎么输出报告;服务器
6.怎么分析报告;网络
一、《性能测试基础知识》 https://www.cnblogs.com/imyalost/p/5640818.html架构
一、定义并发
对响应时间的评估、分析,结合应用的架构和实现细节找出问题,并最终确认问题获得解决的过程 框架
二、影响软件性能的因素
网络环境、数据库服务器、应用服务器、业务逻辑的实现方式、系统采用的架构、代码的优化程度、使用者的使用方式等
三、测试模型
通用的软件测试过程模型(PTGM)、敏捷软件测试模型(ATPM)
四、软件性能测试的应用领域
能力验证、规划能力、性能调优、瓶颈发现、性能基准比较
一:基础篇
一、软件性能测试的基本概念
1.1 性能是一种指标(软件性能对其及时性要求的符合程度)
性能的及时性用响应时间或者吞吐量表示
响应时间:对请求作出响应所须要的时间
例子:交互式的应用(web):用户感觉到的响应时间
非交互式的应用(嵌入式或者银行等业务处理系统):系统对事件产生响应的time
1.1.1 用户视角的软件性能
端→端
用户操做——数据操做请求——(应用服务器)服务端响应——返回数据——用户端
1.1.2 管理员视角的软件性能
服务器资源使用情况是否合理 资源利用率
数据库资源使用情况是否合理 资源利用率
系统可否能够实现扩展 系统可扩展性
系统的最大并发,压力是多少
并发:最多能支持多少用户访问 系统容量
压力:最大的业务处理量
系统可能的瓶颈在哪里 系统可扩展性
更换什么设备能提高系能 系统可扩展性
可否支持7*24小时的业务访问 系统稳定性
1.1.3 开发视角的软件性能 ???
架构设计是否合理 系统架构
数据库设计是否存在问题 数据库设计
代码是否存在性能方面的问题 代码
系统中是否存在不合理的内存使用方式 代码
系统中是否存在不合理的线程同步方式 设计与代码
系统中是否存在不合理的资源竞争 设计与代码
1.1.4 web前端性能
Web应用的前端响应时间:页面加载时间
其中包括:
1.对HTML的解析读取
2.对页面图片及CSS等文件的获取和加载
3.客户端脚本(JavaScript)的执行时间
4.对页面进行展示所花的时间
1.2软件性能的几个主要术语
1.2.1
合理的响应时间取决于实际用户需求
1.2.2
并发用户数:N数值的用户同时访问系统
1.服务器实际承受的压力不仅取决于并发用户数,还取决于用户的业务场景
2.服务端承受的最大并发访问数取决于并发用户数+业务场景
业务场景:经过服务器日志的分析得出的结果
1.2.3 吞吐量
定义:单位时间内系统处理客户请求的数量
通常来讲,请求数/每秒OR页面数/每秒来衡量
从业务角度来讲,访问人数/天OR处理的业务数/小时来衡量(PV、UV)
从网络角度来讲,字节数/天来考察网络流量
对于交互式应用,吞吐量指标反映服务器承受的压力,在容量规划测试中,吞吐量是个很重要的指标,由于它能说明系统级别的负载能力
Web系统的性能测试中,吞吐量指标能够在两个方面发挥做用
1.协助设计性能测试场景,以及衡量性能测试场景是否达到预期的设计目标
2.协助分析性能瓶颈
PS:大部分性能测试中,单击数(Hits)指客户端发出的HTTP的请求数量,而不是指用户在页面上的一次单击事件。
好比:一次单击事件请求页面A,页面A包含3张图片和一个框架(Frame),则此次单击共产生了5个Hits(包括对页面A自己的请求)
1.2.4性能计数器(Counter)
定义:描述服务器或者操做系统性能的一些数据指标
做用:监控、分析
分析系统可扩展性,进行性能瓶颈的定位时,计数器取值很是关键
相关指标:资源利用率:系统各类资源的使用状况
1.2.5思考时间(Think Time)
休眠时间:用户操做时间每一个请求的间隔时间
体如今脚本中,就是操做之间放一个Think函数,使脚本在执行两个操做之间等待一段时间
R=T/Ts (请求数=时间/请求间隔时间)
推荐一个计算思考时间的方法:
1.首先计算出系统的并发用户数
2.统计出系统平均的吞吐量
3.统计出平均每用户发出的请求数量
4.根据上面的公式得出请求时间
二、《性能测试类型》 https://www.cnblogs.com/imyalost/p/5653342.html
一、负载测试(可置性测试)
定义:在被测系统上不断增长压力,直到性能指标(如响应时间)超过预期指标或者某种资源使用已经达到饱和状态。能够找到系统的处理极限,为系统调优提供数据
特色:
1):该方法主要目的是找到系统处理能力的极限
2):该方法在给定的测试环境下进行,一般须要考虑被测系统的业务压力量和典型场景
3):该方法通常用来了解系统的性能容量,或者是配合性能调优来使用
性能容量:系统在保证必定响应时间的状况下可以容许多少并发用户的访问
二、压力测试
定义:系统在必定饱和状态下,例如CPU、内存等饱和状况下,系统可以处理的会话能力,以及系统是否会出现错误
特色:
1)该方法通常经过模拟负载等方法,使得系统的资源使用达到较高的水平
2)该方法的主要目的是检查系统处于压力状况下是应用的性能表现
该方法经过增长访问压力,是系统资源使用保持在必定水平,检验此时应用的表现,重点在于有误出错信息产生,系统对应用的响应时间等
并发测试:简单理解就是业务场景短期内有大量的请求须要处理,通常出如今登录或者某些比较重要的模块,按钮
四、配置测试
定义:经过对被测系统软硬件环境的调整,了解各类不一样环境对系统性能影响的程度,从而找到系统各项资源的最优分配原则
特色:
1)该方法主要目的是了解各类不一样因素对系统系能影响的程度,从而判断出最值得进行的调优操做
2)该方法通常在对系统性能情况有初步了解后进行
须要在肯定的环境、操做步骤和压力条件下进行
3)该方法通常用于性能调优和规划能力
五、并发测试
定义:模拟多用户并发访问同一个应用、模块或者数据记录时是否存在死锁或者其余性能问题
特色:
1)该方法主要目的是发现系统中可能存在的并发访问时的问题
2)该方法主要关注系统中可能存在的并发问题。好比:内存泄漏、线程锁和资源争用等问题
3)该方法能够在开发的各个阶段使用,须要相关的测试工具的配合和支持
经常使用工具:商业软件loadrunner:功能完整强大,内存占用大,须要收费
开源工具jmeter:开源免费,自由,操做较简单,能辅助完成平常的一些测试工做
六、可靠性测试
定义:给系统施加必定的业务压力,让其持续运行一段时间,测试在这种条件下可否稳定运行
特色:
1)该方法的主要目的是验证系统是否支持长期稳定的运行
2)该方法须要在压力下持续一段时间的运行
3)测试过程当中须要关注系统的运行状况
好比:内存使用或者其余资源的使用以及响应时间有无明显变化