资源描述
Web性能测试方案
1测试目标
此处叙述此次性能测试目标,包含必需性分析和扩展性描述。
性能测试最关键目标是检验目前系统所处性能水平,验证其性能是否能满足未来应用需求,并深入找出系统设计上瓶颈,以期改善系统性能,达成用户要求。
2测试范围
此处关键描述此次性能测试技术及业务背景,和性能测试特点。
编写此方案目标是为云应用产品提供web性能测试方法,所以方案内容关键包含测试环境、测试工具、测试策略、测试指标和测试实施等。
2.1测试背景
以云采业务为例,要满足用户在互联网集中采购要求,实际业务中经过云采平台询报价、下单频率较高,所以云采平台性能直接决定了业务处理效率,并能够支撑业务并发压力。
比如:支撑100家企业用户集中访问,和业务处理要求。
2.2性能度量指标
响应时间(TTLB)
即“time to last byte”,指是从用户端提议一个请求开始,到用户端接收到从服务器端返回响应结束,这个过程所花费时间,响应时间单位通常为“秒”或“毫秒”。响应时间=网络响应时间+应用程序响应时间。
响应时间标准:
序号
时间度量标准
结果
1
小于2s
优
2
介于2s-5s
良
3
介于5s-8s
通常
4
大于8s
差
事务能力TPS(transaction per second)
服务器每秒处理事务数;
一个事务是指一个用户机向服务器发送请求然后服务器做出反应过程。
用户机在发送请求时开始计时,收到服务器响应后结束计时,一次来计算使用时间和完成事务个数。它是衡量系统处理能力关键指标。
并发用户数
同一时刻和服务器进行交互在线用户数量。
吞吐率(Throughput)
单位时间内网络上传输数据量,也可指单位时间内处理用户端请求数量,是衡量网络性能关键指标。
吞吐率=吞吐量/传输时间
资源利用率
这里关键指CPU利用率(CPU utilization),内存占用率。
3测试内容
此处对性能测试整体计划进行描述,包含测试内容和关注性能指标。
Web性能测试内容包含:压力测试、负载测试、前端连接测试。
3.1负载测试
负载测试是为了测量Web系统在某一负载等级上性能,以确保Web系统在需求范围内能正常工作。负载等级能够是某个时刻同时访问Web系统用户数量,也能够是在线数据处理数量。比如:Web应用系统能允很多少个用户同时在线?假如超出了这个数量,会出现什么现象?Web应用系统能否处理大量用户对同一个页面请求?
负载测试应该安排在Web系统公布以后,放在Internet上接收负载测试。
3.2压力测试
在一定饱和状态下系统处理能力,在负载测试基础上,继续加压到一定阶段即是压力测试。压力测试通常设定cpu使用率达成75%以上,内存使用率达成70%以上,用于测试系统在压力环境下稳定性。
进行压力测试是指实际破坏一个Web应用系统,测试系统反应。压力测试是测试系统限制和故障恢复能力,也就是测试Web应用系统会不会瓦解,在什么情况下会瓦解。黑客常常提供错误数据负载,直到Web应用系统瓦解,接着当系统重新开启时取得存取权。
3.3前端连接测试
用户连接到Web应用系统速度依据上网方法改变而改变,她们或许是电话拨号,或是宽带上网。当下载一个程序时,用户能够等较长时间,但假如仅仅访问一个页面就不会这么。假如Web系统响应时间太长(比如超出5秒钟),用户就会因没有耐心等候而离开。
另外,有些页面有超时限制,假如响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。而且,连接速度太慢,还可能引发数据丢失,使用户得不到真实页面。
以上需要关注前端性能指标,关键包含以下三个指标:
3.3.1加载时间指标
a.Time to First Impression
表示从用户在浏览器键入URL按下回车键一刻开始,到页面开始有反应(用户能够在页面中看见一点点内容)为止。直观信号就是网页开始显示title。
b.Time to onLoad Event
表示从页面开始显示内容,到浏览器开始触发OnLoad函数(开始实施js)这一时间段。只有当初始文本和所引用对象加载完成,浏览器才开始触发OnLoad函数
c.Time to Fully Loaded
表示从上一时间段末到整个网页完全加载完成(全部OnLoad函数和相关动态资源加载完成)。
3.3.2资源情况指标
网页由初始html文本中嵌入图片和经过XHR或修改dom树动态加载内容组成,css负责样式,js负责行为。
a. Total Number of Requests
包含html网页请求,css、js资源下载及其它网络请求。优化目标之一是要尽可能降低请求数。
b. Total Number of HTTP 300s/400s/500s
表示返回状态为300(重定向)、400(用户端错误)、500(服务器端错误)http请求。尽可能避免这些请求,以提升页面load时间。造成这些状态原因常常是服务器实施、配置和布署问题。
c. Total Size of Web Site
组成网页元素总大小。图片或js库增加全部会对下载时间造成关键影响。
d. Total Size of Images/CSS/JS
image、css、js在网页元素大小中占关键百分比。
e. Total Number of XHR(XMLHttpRequest) Requests
经过js异步从服务器端取得数据请求数。部分js框架提供了跟服务器端更新机器,就是XHR请求。经过配置能够降低XHR请求数目。
3.3.3网络连接指标
浏览器底层网络连接对资源下载速度有很大影响。资源下载过程分为很多阶段。下面介绍这些阶段和浏览器、网络、请求怎样影响这些阶段时间。
a. DNS Time
dns 查询时间。网页请求会产生一次寻求该网页资源所在主机dns查询。在同个域名进行网页切换不会造成新dns查询。
b. Connect Time
指浏览器和服务器之间建立tcp/ip连接时间,对于ssl连接包含握手时间。网络连接过慢、使用ssl、使用短连接而很连接全部是造成connect time较多原因。
c. Server Time
指收到请求后服务器逻辑处理时间,
d. Transfer Time
这一指标和浏览器和服务器之间连接速度相一致,经过减小传输内容或使用cdn来降低Transfer Time。
e. Wait Time
等候时间和同一个域中服务资源数量直接相关。每个域浏览器物理网络限制,造成资源等候可用连接。降低资源数量,或将资源散布在不一样域,能将这一时间降低。平均等候时间大小更能反应等候时间是否需要注意。
f. Number of Domains / Single Resource Domains
布署网站资源域主机数量是很关键,因为它影响DNS,连接和等候时间。专门用户资源下载域是必需,她将直接降低等候时间。应避免单一资源域,不然你将为dns查询和资源下载付出昂贵代价。
4测试实施
此处包含性能测试软硬件环境准备,所需测试工具和测试步骤。
4.1环境和数据准备
4.1.1负载测试
主机
数量
配置详情
操作系统
数据库
中间件
测试工具
监控工具
4.1.2压力测试
主机
数量
配置详情
操作系统
数据库
中间件
测试工具
监控工具
4.1.3前端连接测试
略
4.2测试步骤和测试结果输出
4.2.1负载测试
4.2.1.1测试工具
Jmeter
Apache JMeter是Apache组织开发基于Java压力测试工具,用于对软件做压力测试,它最初被设计用于Web应用测试,但以后扩展到其它测试领域。 它能够用于测试静态和动态资源,比如静态文件、Java小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器等等。
4.2.1.2测试步骤
1.建立测试计划
开启jmeter后,jmeter会自动生成一个空测试计划,用户能够基于该测试计划建立自己测试计划。
2.添加线程组
一个性能测试请求负载是基于一个线程组完成。一个测试计划必需有一个线程组。测试计划添加线程组很简单。在测试计划右键弹出下拉菜单(添加-->Threads(Users)--->线程组)中选择线程组即可。
jmeter中 每个测试计划最少需要包含一个线程组,当然也能够在一个计划中创建多个线程组,那么多个线程组之间又会怎样次序实施(串行还是并行)?在测试计划下面多个线程是并行实施,也就是说这些线程组是同时被初始化并同时实施线程组下Sampler。
线程组关键包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。
线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。
准备时长: 设置虚拟用户数需要多长时间全部开启。假如线程数为20 ,准备时长为10 ,那么需要10秒钟开启20个线程。也就是每秒钟开启2个线程。
循环次数:每个线程发送请求次数。假如线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。总请求数为20*100= 。假如勾选了“永远”,那么全部线程会一直发送请求,一到选择停止运行脚本。
设置合理线程数对于能否达成测试目标有决定性影响。在本例中,要求得到网站首页在20 QPS 负载情况下响应时间,假如假如线程数量设置过小,则很可能无法达成设定QPS要求。另外,设置合理循环次数也很关键,除了上面介绍固定循环次数和永远外;也能够灵活选择设定测试运行时间。勾选“调度器”,进行调度器配置。
3. 添加HTTP请求
添加完成线程组后,在线程组上右键菜单(添加--->Sampler--->HTTP请求)选择HTTP请求。对于jmeter来说,取样器(Sampler)是和服务器进行交互单元。一个取样器通常进行三部分工作:
向服务器发送请求
统计服务器响应数据
统计对应时间信息
4.设置QPS限制
此次性能测试目标是“了解云采首页在负载达成20 QPS时响应时间”,所以需要控制向云采首页发送请求负载为20QPS。
QPS : Query Per Second 每秒查询率。是一台查询服务器每秒能够处理查询次数。在因特网上,作为域名系统服务器机器性能常常见每秒查询率来衡量。
4.2.2压力测试
4.2.2.1测试工具
UAPRunner
UAPRunner 是一款面向树形数据结构,模拟用户(UAPRunner 中表示为虚拟用户)经过浏览器访问B/S 架构和UAP 平台系统行为、实现向服务器端发送请求及对服务器端发回响应进行处理工具。利用UAPRunner 能够实现对Web 轻量级和基于UAP 平台性能负载测试,经过模拟上万用户实施并发负载。
4.2.2.2测试步骤
1.下载安装uaprunner
:8080/gitlab/test-team/download/tree/master/UAPRUNNER
2.配置UAPRunner
3.录制并生成脚本
4. 创建用例流、场景
5. 编辑事务
6. 参数化
7. 增加虚拟用户
8. 查看测试结果
9. 压力数据:cpu使用率达成75%以上,内存使用率达成70%以上,查看系统稳定性(事务响应时间、事务经过率)
4.2.3前端连接测试
4.2.3.1测试工具
WebPagetest
WebPageTest是一款很强大Web页面性能评测工具,已经开源。在该网站输入你url,就会生成1个url加载时间瀑布图,对全部加载资源(css,js,image等等)列出优化清单。
4.3.2.2测试步骤
1.以云采为例,在 页面输入 ,Testlocation选择“”,然后点击“”开始测试。
2.系统会给出等候提醒信息。
3.测试结束自动生成测试汇报
4.点击“”能够查看Firstbyte时间,DOM Elements,和Result(error code)等具体信息。
5.Test结果页面点击“”能够查看改善提议。
5测试风险分析
此处描述测试过程中可能存在风险。
序号
风险描述
风险发生可能性(高、中、低)
风险对测试项目标影响
规避方法
备注
展开阅读全文