Web性能测试方案Word文件下载.docx
《Web性能测试方案Word文件下载.docx》由会员分享,可在线阅读,更多相关《Web性能测试方案Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
1
小于2s
优
2
介于2s-5s
良
3
介于5s-8s
一般
4
大于8s
差
事务能力TPS(transactionpersecond)
服务器每秒处理的事务数;
一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。
客户机在发送请求时开始计时,收到服务器响应后结束计时,一次来计算使用的时间和完成的事务个数。
它是衡量系统处理能力的重要指标。
并发用户数
同一时刻与服务器进行交互的在线用户数量。
吞吐率(Throughput)
单位时间内网络上传输的数据量,也可指单位时间内处理的客户端请求数量,是衡量网络性能的重要指标。
吞吐率=吞吐量/传输时间
资源利用率
这里主要指CPU利用率(CPUutilization),内存占用率。
3测试内容
此处对性能测试整体计划进行描述,包括测试内容以及关注的性能指标。
Web性能测试内容包含:
压力测试、负载测试、前端连接测试。
负载测试
负载测试是为了测量Web系统在某一负载级别上的性能,以保证Web系统在需求范围内能正常工作。
负载级别可以是某个时刻同时访问Web系统的用户数量,也可以是在线数据处理的数量。
Web应用系统能允许多少个用户同时在线?
如果超过了这个数量,会出现什么现象?
Web应用系统能否处理大量用户对同一个页面的请求?
负载测试应该安排在Web系统发布以后,放在Internet上接受负载测试。
压力测试
在一定饱和状态下系统的处理能力,在负载测试的基础上,继续加压到一定阶段即是压力测试。
压力测试通常设定cpu使用率达到75%以上,内存使用率达到70%以上,用于测试系统在压力环境下的稳定性。
进行压力测试是指实际破坏一个Web应用系统,测试系统的反映。
压力测试是测试系统的限制和故障恢复能力,也就是测试Web应用系统会不会崩溃,在什么情况下会崩溃。
黑客常常提供错误的数据负载,直到Web应用系统崩溃,接着当系统重新启动时获得存取权。
前端连接测试
用户连接到Web应用系统的速度根据上网方式的变化而变化,他们或许是电话拨号,或是宽带上网。
当下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。
如果Web系统响应时间太长(例如超过5秒钟),用户就会因没有耐心等待而离开。
另外,有些页面有超时的限制,如果响应速度太慢,用户可能还没来得及浏览内容,就需要重新登陆了。
而且,连接速度太慢,还可能引起数据丢失,使用户得不到真实的页面。
以上需要关注的前端性能指标,主要包含以下三个指标:
加载时间指标
toFirstImpression
表示从用户在浏览器键入URL按下回车键一刻开始,到页面开始有反应(用户可以在页面中看见一点点内容)为止。
直观信号就是开始显示title。
toonLoadEvent
表示从页面开始显示内容,到浏览器开始触发OnLoad函数(开始执行js)这一时间段。
只有当初始的文本和所引用的对象加载完成,浏览器才开始触发OnLoad函数
toFullyLoaded
表示从上一时间段末到整个网页完全加载完成(所有OnLoad函数以及相关的动态资源加载完成)。
资源情况指标
网页由初始的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请求的数目。
网络连接指标
浏览器底层的网络连接对资源的下载速度有很大影响。
资源的下载过程分为很多阶段。
下面介绍这些阶段以及浏览器、网络、请求如何影响这些阶段的时间。
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测试执行
此处包含性能测试的软硬件环境准备,所需测试工具与测试步骤。
环境与数据准备
主机
数量
配置详情
操作系统
数据库
中间件
测试工具
监控工具
略
测试步骤与测试结果输出
Jmeter
ApacheJMeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。
它可以用于测试静态和动态资源,例如静态文件、Java、CGI脚本、Java对象、数据库、FTP服务器等等。
测试步骤
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每秒查询率。
是一台查询每秒能够处理的查询次数。
在因特网上,作为域名系统的机器的性能经常用每秒查询率来衡量。
UAPRunner
UAPRunner是一款面向树形数据结构,模拟用户(UAPRunner中表示为虚拟用户)通过浏览器访问B/S架构和UAP平台系统的行为、实现向服务器端发送请求及对服务器端发回的响应进行处理的工具。
利用UAPRunner可以实现对Web轻量级和基于UAP平台的性能负载测试,通过模拟上万的用户实施并发负载。
1.下载安装uaprunner
配置UAPRunner
3.录制并生成脚本
4.创建用例流、场景
5.编辑事务
6.参数化
7.增加虚拟用户
8.查看测试结果
9.压力数据:
cpu使用率达到75%以上,内存使用率达到70%以上,查看系统稳定性(事务响应时间、事务通过率)
WebPageTest是一款非常强大的Web页面性能评测工具,已经开源。
在该网站输