Web性能测试方案.docx
《Web性能测试方案.docx》由会员分享,可在线阅读,更多相关《Web性能测试方案.docx(16页珍藏版)》请在冰豆网上搜索。
Web性能测试方案
Web性能测试方案
1测试目
此处阐述本次性能测试目,包括必要性分析与扩展性描述。
性能测试最主要目是检验当前系统所处性能水平,验证其性能是否能满足未来应用需求,并进一步找出系统设计上瓶颈,以期改善系统性能,达到用户要求。
2测试范围
此处主要描述本次性能测试技术及业务背景,以及性能测试特点。
编写此方案目是为云应用产品提供web性能测试方法,因此方案内容主要包括测试环境、测试工具、测试策略、测试指标与测试执行等。
2.1测试背景
以云采业务为例,要满足用户在互联网集中采购要求,实际业务中通过云采平台询报价、下单频率较高,因此云采平台性能直接决定了业务处理效率,并能够支撑业务并发压力。
例如:
支撑100家企业用户集中访问,以及业务处理要求。
2.2性能度量指标
响应时间(TTLB)
即“timetolastbyte”,指是从客户端发起一个请求开始,到客户端接收到从服务器端返回响应结束,这个过程所耗费时间,响应时间单位一般为“秒”或者“毫秒”。
响应时间=网络响应时间+应用程序响应时间。
响应时间标准:
序号
时间度量标准
结果
1
小于2s
优
2
介于2s-5s
良
3
介于5s-8s
一般
4
大于8s
差
事务能力TPS(transactionpersecond)
服务器每秒处理事务数;
一个事务是指一个客户机向服务器发送请求然后服务器做出反应过程。
客户机在发送请求时开始计时,收到服务器响应后结束计时,一次来计算使用时间和完成事务个数。
它是衡量系统处理能力重要指标。
并发用户数
同一时刻与服务器进行交互在线用户数量。
吞吐率(Throughput)
单位时间内网络上传输数据量,也可指单位时间内处理客户端请求数量,是衡量网络性能重要指标。
吞吐率=吞吐量/传输时间
资源利用率
这里主要指CPU利用率(CPUutilization),内存占用率。
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.TimetoFirstImpression
表示从用户在浏览器键入URL按下回车键一刻开始,到页面开始有反应(用户可以在页面中看见一点点内容)为止。
直观信号就是网页开始显示title。
b.TimetoonLoadEvent
表示从页面开始显示内容,到浏览器开始触发OnLoad函数(开始执行js)这一时间段。
只有当初始文本和所引用对象加载完成,浏览器才开始触发OnLoad函数
c.TimetoFullyLoaded
表示从上一时间段末到整个网页完全加载完成(所有OnLoad函数以及相关动态资源加载完成)。
3.3.2资源情况指标
网页由初始html文本中嵌入图片以及通过XHR或者修改dom树动态加载内容组成,css负责样式,js负责行为。
a.TotalNumberofRequests
包括html网页请求,css、js资源下载及其它网络请求。
优化目标之一是要尽量减少请求数。
b.TotalNumberofHTTP300s/400s/500s
表示返回状态为300(重定向)、400(客户端错误)、500(服务器端错误)http请求。
尽量避免这些请求,以提高页面load时间。
造成这些状态原因经常是服务器实施、配置和部署问题。
c.TotalSizeofWebSite
构成网页元素总大小。
图片或者js库增加都会对下载时间造成重要影响。
d.TotalSizeofImages/CSS/JS
image、css、js在网页元素大小中占主要比例。
e.TotalNumberofXHR(XMLHttpRequest)Requests
通过js异步从服务器端获得数据请求数。
一些js框架提供了跟服务器端更新机器,就是XHR请求。
通过配置可以减少XHR请求数目。
3.3.3网络连接指标
浏览器底层网络连接对资源下载速度有很大影响。
资源下载过程分为很多阶段。
下面介绍这些阶段以及浏览器、网络、请求如何影响这些阶段时间。
a.DNSTime
dns查询时间。
网页请求会产生一次寻找该网页资源所在主机dns查询。
在同个域名进行网页切换不会造成新dns查询。
b.ConnectTime
指浏览器和服务器之间建立tcp/ip连接时间,对于ssl连接包括握手时间。
网络连接过慢、使用ssl、使用短连接而非常连接都是造成connecttime较多原因。
c.ServerTime
指收到请求后服务器逻辑处理时间,
d.TransferTime
这一指标与浏览器和服务器之间连接速度相一致,通过减小传输内容或使用cdn来降低TransferTime。
e.WaitTime
等待时间和同一个域中服务资源数量直接相关。
每个域浏览器物理网络限制,导致资源等待可用连接。
减少资源数量,或将资源散布在不同域,能将这一时间降低。
平均等待时间大小更能反映等待时间是否需要注意。
f.NumberofDomains/SingleResourceDomains
部署网站资源域主机数量是很重要,因为它影响DNS,连接和等待时间。
专门用户资源下载域是必要,他将直接减少等待时间。
应避免单一资源域,否则你将为dns查询以及资源下载付出昂贵代价。
4测试执行
此处包含性能测试软硬件环境准备,所需测试工具与测试步骤。
4.1环境与数据准备
4.1.1负载测试
主机
数量
配置详情
操作系统
数据库
中间件
测试工具
监控工具
4.1.2压力测试
主机
数量
配置详情
操作系统
数据库
中间件
测试工具
监控工具
4.1.3前端连接测试
略
4.2测试步骤与测试结果输出
4.2.1负载测试
4.2.1.1测试工具
Jmeter
ApacheJMeter是Apache组织开发基于Java压力测试工具,用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。
它可以用于测试静态和动态资源,例如静态文件、Java小服务程序、CGI脚本、Java对象、数据库、FTP服务器等等。
4.2.1.2测试步骤
1.建立测试计划
启动jmeter后,jmeter会自动生成一个空测试计划,用户可以基于该测试计划建立自己测试计划。
2.添加线程组
一个性能测试请求负载是基于一个线程组完成。
一个测试计划必须有一个线程组。
测试计划添加线程组非常简单。
在测试计划右键弹出下拉菜单(添加-->Threads(Users)--->线程组)中选择线程组即可。
jmeter中每个测试计划至少需要包含一个线程组,当然也可以在一个计划中创建多个线程组,那么多个线程组之间又会怎样顺序执行(串行还是并行)?
在测试计划下面多个线程是并行执行,也就是说这些线程组是同时被初始化并同时执行线程组下Sampler。
线程组主要包含三个参数:
线程数、准备时长(Ramp-UpPeriod(inseconds))、循环次数。
线程数:
虚拟用户数。
一个虚拟用户占用一个进程或线程。
设置多少虚拟用户数在这里也就是设置多少个线程数。
准备时长:
设置虚拟用户数需要多长时间全部启动。
如果线程数为20,准备时长为10,那么需要10秒钟启动20个线程。
也就是每秒钟启动2个线程。
循环次数:
每个线程发送请求次数。
如果线程数为20,循环次数为100,那么每个线程发送100次请求。
总请求数为20*100=2000。
如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
设置合理线程数对于能否达到测试目标有决定性影响。
在本例中,要求得到网站首页在20QPS负载情况下响应时间,如果如果线程数量设置过小,则很可能无法达到设定QPS要求。
另外,设置合理循环次数也很重要,除了上面介绍固定循环次数与永远外;也可以灵活选择设定测试运行时间。
勾选“调度器”,进行调度器配置。
3.添加HTTP请求
添加完成线程组后,在线程组上右键菜单(添加--->Sampler--->HTTP请求)选择HTTP请求。
对于jmeter来说,取样器(Sampler)是与服务器进行交互单元。
一个取样器通常进行三部分工作:
向服务器发送请求
记录服务器响应数据
记录相应时间信息
4.设置QPS限制
本次性能测试目是“了解云采首页在负载达到20QPS时响应时间”,因此需要控制向云采首页发送请求负载为20QPS。
QPS:
QueryPerSecond每秒查询率。
是一台查询服务器每秒能够处理查询次数。
在因特网上,作为域名系统服务器机器性能经常用每秒查询率来衡量。
4.2.2压力测试
4.2.2.1测试工具
UAPRunner
UAPRunner是一款面向树形数据结构,模拟用户(UAPRunner中表示为虚拟用户)通过浏览器访问B/S架构和UAP平台系统行为、实现向服务器端发送请求及对服务器端发回响应进行处理工具。
利用UAPRunner可以实现对Web轻量级和基于UAP平台性能负载测试,通过模拟上万用户实施并发负载。
4.2.2.2测试步骤
1.下载安装uaprunner
http:
//20.10.129.77:
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.以云采为例,在http:
//www.webpagetest.org/页面输入,Testlocation选择“
”,然后点击“
”开始测试。
2.系统会给出等待提示信息。
3.测试结束自动生成测试报告
4.点击“
”可以查看Firstbyte时间,DOMElements,以及Result(errorcode)等详细信息。
5.Test结果页面点击“
”可以查看改进建议。
5测试风险分析
此处描述测试过程中可能存在风险。
序号
风险描述
风险发生可能性(高、中、低)
风险对测试项目影响
规避方法
备注