很好的博客
http://www.nj-test.com/post/75-1.html
:http://www.51testing.com/?uid-116228-action-spacelist-type-blog-itemtypeid-19906
很好的; http://blog.****.net/zeeslo/article/details/1859147
loadruner报错:Step download timeout(120 seconds)的一个解决方法
分类: 性能测试2006-08-13 19:58 3232人阅读 评论(20) 收藏 举报 一个网友问了我一个问题如下:loadruner报错:Error -27728: Step download timeout (120 seconds) 如何解决
语法检查通过,但是在并发执行一个查询时候报错Action.c(16): Error -27728: Step download timeout (120 seconds) has expired when downloading non-resource(s),请问有啥子解决方法,我使用web_set_timeout ,好象不起作用,直接在option中设置timeout时间为600,(单位应该是秒吧)还是没有起作用,结果都还是提示(120seconds),说明还是以120秒来判断的;使用lrs_set_recv_timeout,语法检查不过,说明库函数里面没有这个函数。
尝试步骤:
设置超时时间到600秒,回放还是出错。
后来我设置了runt time setting中的internet protocol-preferences中的advaced区域有一个winlnet replay instead of sockets选项,选项后再回放就成功了。
kernzhang解释如下(这里谢谢kernzhang):
这个问题很有意思!呵呵!首先LR是通过Microsoft WinInet DLL去录制web协议的!但是在Control运行的时候它默认通过socket去模拟请求,因为这些可以真实的模拟带宽,而采用Microsoft WinInet DLL通过这个DLL去访问网卡方式去模拟带宽,使得模拟不是很精确!而且也不支持unix的应用,但是使用这个确实有时无法处理winnet Dll的一些请求,我认为是它的一些BUG,比如说:回放时它会检查Content-Length,但是网页支持receive more data时,这时socket模拟会一直等待直到timeout!
先说了一些优缺点,最后回到这个问题!这个问题分两个方面分析:
第一:你要明白web_set_timeout()这个函数的适用范围!比如说一个web_submit_data()中实际涵盖了10个对Server 端的请求,这个函数是针对10个请求的总和时间的!(别犯低级错误,timeout分了connect,receive以及download三个部分:) )
第二:就是我解释的上面的一些BUG问题!
WinInet dll在新版本中处理请求时可以异步的,就是不再是那种连接等待然后超时模式!但是LR用的socket是同步请求!只有等到timeout才会退出!microsoft已经明确表示INTERNET_OPTION_RECEIVE_TIMEOUT 不再适用于 Microsoft Internet Explorer 5.0,显而易见,他们处理请求采取了异步处理的方式!呵呵!这下大概可以圆满解释你的问题了!呵呵
这里,我补充如下:
VuGen专用的基于套接字的重播是一种可伸缩以便进行负载测试的轻型引擎。使用线程时是准确的。基于套接字的引擎不支持socks代理服务器。如果在这样的环境中录制,应该使用winInet重播引擎。
包括性能测试工具和功能测试工具,前十大测试工具排名如下:
业级自动化测试工具WinRunner
Mercury Interactive公司的WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。通过自动录制、检测和回放用户的应用操作,WinRunner能够有效地帮助测试人员对复杂的企业级应用的不同发布版进行测试,提高测试人员的工作效率和质量,确保跨平台的、复杂的企业级应用无故障发布及长期稳定运行。
工业标准级负载测试工具Loadrunner
LoadRunner 是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
全球测试管理系统testdirector
TestDirector 是业界第一个基于Web的测试管理系统,它可以在您公司内部或外部进行全球范围内测试的管理。通过在一个整体的应用系统中集成了测试管理的各个部分,包括需求管理,测试计划,测试执行以及错误跟踪等功能,TestDirector极大地加速了测试过程。
功能测试工具Rational Robot
IBM Rational Robot 是业界最顶尖的功能测试工具,它甚至可以在测试人员学习高级脚本技术之前帮助其进行成功的测试。它集成在测试人员的桌面 IBM Rational TestManager 上,在这里测试人员可以计划、组织、执行、管理和报告所有测试活动,包括手动测试报告。这种测试和管理的双重功能是自动化测试的理想开始。
单元测试工具xUnit系列
目前的最流行的单元测试工具是xUnit系列框架,常用的根据语言不同分为JUnit(java),CppUnit(C++),DUnit (Delphi ),NUnit(.net),PhpUnit(Php )等等。该测试框架的第一个和最杰出的应用就是由Erich Gamma (《设计模式》的作者)和Kent Beck(XP(Extreme Programming)的创始人 )提供的开放源代码的JUnit.
功能测试工具SilkTest
Borland SilkTest 2006属于软件功能测试工具,是Borland公司所提出软件质量管理解决方案的套件之一。这个工具采用精灵设定与自动化执行测试,无论是程序设计新手或资深的专家都能快速建立功能测试,并分析功能错误。
性能测试工具WAS
Microsoft Web Application Stress Tool 是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的Client端计算机仿真大量用户上线对网站服务所可能造成的影响。
自动化白盒测试工具Jtest
Jtest是parasoft公司推出的一款针对java语言的自动化白盒测试工具,它通过自动实现java的单元测试和代码标准校验,来提高代码的可靠性。parasoft同时出品的还有C++ test,是一款C/C++白盒测试工具。
功能和性能测试的工具JMeter
JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。
性能测试和分析工具WEBLODE
webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;webload通过模拟真实用户的操作,生成压力负载来测试web的性能。
Popularity: 13%
1. LoadRunner:支持多种常用协议多且个别协议支持的版本比较高;可以设置灵活的负载压力测试方案,
可视化的图形界面可以监控丰富的资源;报告可以导出到Word、Excel以及HTML格式。
2. WebLoad:webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;
webload通过模拟真实用户的操作,生成压力负载来测试web的性能用户创建的是基于javascript的测试脚本,称为议程agenda,
用它来模拟客户的行为,通过执行该脚本来衡量web应用程序在真实环境下的性能。
3. E-Test Suite:由Empirix公司开发的测试软件,能够和被测试应用软件无缝结合的Web应用测试工具。
工具包含e-Tester、e-Load和e- Monitor,这三种工具分别对应功能测试、压力测试以及应用监控,每一部分功能相互独立,
测试过程又可彼此协同。
4. QALoad:
(1).测试接口多;
(2)可预测系统性能;
(3)通过重复测试寻找瓶颈问题;
(4)从控制中心管理全局负载测试;
(5)可验证应用的扩展性;
(6)快速创建仿真的负载测试;
(7)性能价格比较高。
此外,QALoad不单单测试Web应用,还可以测试一些后台的东西,比如SQL Server等。只要它支持的协议,都可以测试。
5. Benchmark Factory: 首先它可以测试服务器群集的性能;其次,可以实施基准测试;最后,可以生成高级脚本。
6. JMeter:是开源测试工具,专门为运行和服务器负载测试而设计、100%的纯Java桌面运行程序。
原先它是为Web/HTTP测试而设计的,但是它已经扩展以支持各种各样的测试模块。
它和HTTP和SQL(使用JDBC)的模块一起运行。它可以用来测试静止或活动资料库中的服务器运行情况,
可以用来模拟服务器或网络系统在重负载下的运行情况。它也提供了一个可替换的界面用来定制数据显示,
测试同步及测试的创建和执行。
7. WAS:是Micro$oft提供的免费的Web负载压力测试工具,应用广泛。
WAS可以通过一台或者多台客户机模拟大量用户的活动。WAS支持身份验证、加密和Cookies,
也能够模拟各种浏览器和Modem速度,它的功能和性能可以与数万美元的产品媲美。
8. ACT:或称MSACT,它是微软的Visual Studio和Visual Studio.net带的一套进行程序压力测试的工具。
ACT不但可以记录程序运行的详细数据参数,用图表显示程序运行情况,而且安装和使用都比较简单,结果阅读方便,
是一套较理想的测试工具。
9. OpenSTA:它的全称是Open System Testing Architecture。
OpenST的特点是可以模拟很多用户来访问需要测试的网站,它是一个功能强大、自定义设置功能完备的软件。
但是,这些设置大部分需要通过Script来完成,因此在真正使用这个软件之前,必须学习好它的Script编写。
如果需要完成很复杂的功能,Script的要求还比较高。当然这也是它的优点,一些程序员不会在意编写Script的。
10. PureLoad:一个完全基于Java的测试工具,它的Script代码完全使用XML。所以,编写 Script很简单。
它的测试包含文字和图形并可以输出为HTML文件。由于是基于Java的软件,
因此PureLoad可以通过Java Beans API来增强软件功能。
linux网站压力测试工具中的小强Siege简介
作者: freemouse 日期 2011年11月2日 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://www.cnphp.info/web-loading-test-tool-siege.html
Linux站长们在网站发布之前,一般会用压力测试工具,来衡量服务器的实际最大负载能力。今天笔者为各位介绍一款linux下的网站压测工具Siege。
在Siege搭建的测试环境中,站长们通过观察实验结果,来找出网站性能方面的问题。如果你还没有做过类似的实验,一起来跟着做吧。值得一说的是,Siege是一款开源软件,你可以在遵循GPLv2 协议的基础上修改、完善它^_^,动手能力强的站长可以修改它以满足自己的要求。
如何安装
在Debian和Ubuntu下我们可以直接使用apt-get来安装Siege,笔者在这里不再赘述。类Redhat(Fedora、CentOS)和openSUSE下没有现成的软件包直接下载安装。可以通过tarball编译的方式来安装软件。
?123456789 #auhtor freemouse #source http://www.cnphp.info/web-loading-test-tool-siege.html wget http://www.joedog.org/pub/siege/siege-2.70.tar.gz tar zxf siege-2.70.tar.gz cd siege-2.70/ ./configuremake && make install#查看是否安装成功 siege –V
siege当前最新的版本是2.7。如果你想安装更新的版本,可以自行去作者的网站查看更新并下载。
安装完成后,会生成一个叫siege.config的配置文件。这是类似模板的配置文件,你可以根据你的需要自行设定一些参数。例如:测试结果的输出格式,可以选择生成CSV文件;压力测试中的参数,如:模拟用户数量、程序执行间隔等等。当然,有的时候可能需要不停地变换这些参数,以达到不同目的,一个配置文件似乎不够用。别担心,siege会在用户的家目录下的.siege.rc文件夹中存放不同的配置文件。切换时,直接使用
export SIEGERC=/filename 或者 siege -R siegerc.手动切换
如何使用
Siege可以快读地读取web请求的HTTP头。如果想查看这些HTTP头,请使用siege –g URL命令。下面再看看用siege做压力测试的示例:
?12 #模拟50个用户,web请求间隔时间10秒 siege -d10 -c50 http://www.cnphp.info/blog/index.php
需要注意的是-d参数中指定10秒代表请求的间隔时间在0到10秒之间。有可能是0秒,也有可能是5秒,但不会超过10秒。
在实际的测试中,需要测试的页面不止一个。只要把这些网址放在家目录指定的文本文件中,每行一个网址(~/etc/urls.txt)或者通过-f 参数指定文本位置。在测试的时候调用这个文本,使用-i参数随机抽取urls列表中的网址。
?1 siege -d10 -c50 -i -f cnphp.txt
更多的参数解析,用户可以去官网查看使用手册或在linux下调用 man siege命令。
注意事项
对于小内存的VPS用户,使用siege的时候要注意内存消耗的情况。另外,大规模的测试有可能会被ISP提供商视为DDOS攻击。在测试前需要协调好。目前看来,在笔者1G内存的VPS上测试运行不成问题。总体来说,用siege来一款小巧、功能强大的网站压力测试工具。需要的朋友不妨一试^_^。
下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的WEB应用能够顶得住多少的并发量,以及你的网站的性能。我相信,北京奥组委的订票网站的开发团队并不知道有这样的测试工具。
Grinder – Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提供了便利。 支持用于执行测试脚本的Jython脚本引擎HTTP测试可通过HTTP代理进行管理。根据项目网站的说法,Grinder的 主要目标用户是“理解他们所测代码的人——Grinder不仅仅是带有一组相关响应时间的‘黑盒’测试。由于测试过程可以进行编码——而不是简单地脚本 化,所以程序员能测试应用中内部的各个层次,而不仅仅是通过用户界面测试响应时间。
Pylot -Pylot是一款开源的测试web service性能和扩展性的工具,它运行HTTP 负载测试,这对容量计划,确定基准点,分析以及系统调优都很有用处。Pylot产生并发负载(HTTP Requests),检验服务器响应,以及产生带有metrics的报表。通过GUI或者shell/console来执行和监视test suites。
Web Capacity Analysis Tool (WCAT) – 这是一种轻量级负载生成实用工具,不仅能够重现对 Web 服务器(或负载平衡服务器场)的脚本 HTTP 请求,同时还可以收集性能统计数据供日后分析之用。WCAT 是多线程应用程序,并且支持从单个源控制多个负载测试客户端,因此您可以模拟数千个并发用户。该实用工具利用您的旧机器作为测试客户端,其中每个测试客户端又可以产生多个虚拟客户端(最大数量取决于客户端机器的网络适配器和其他硬件)。您可以选择使用 HTTP 1.0 还是 HTTP 1.1 请求,以及是否使用 SSL。并且,如果测试方案需要,您还可以使用脚本执行的基本或 NTLM 身份验证来访问站点的受限部分。(如果您的站点使用 cookie、表单或基于会话的身份验证,那您可以创建正确的 GET 或 POST 请求来对测试用户进行身份验证。)WCAT 还可管理您站点可能设置的任何 cookie,所以配置文件和会话信息将永久保存。 fwptt – fwptt 也是一个用来进行WEB应用负载测试的工具。它可以记录一般的请求,也可以记录Ajax请求。它可以用来测试 asp.net, jsp, php 或是其它的Web应用。
JCrawler –
JCrawler是一个开源( CPL) 的WEB应用压力测试工具。通过其名字,你就可以知道这是一个用Java写的像网页爬虫一样的工具。只要你给其几个URL,它就可以开始爬过去了,它用一种特殊的方式来产生你WEB应用的负载。这个工具可以用来测试搜索引擎对你站点产生的负载。当然,其还有另一功能,你可以建立你的网站地图和再点击一下,将自动提交Sitemap给前5名的搜索引擎!
Apache JMeter –
Apache JMeter是一个专门为运行和服务器装载测试而设计的、100%的纯Java桌面运行程序。原先它是为Web/HTTP测试而设计的,但是它已经扩展以支持各种各样的测试模块。它和用于HTTP和SQL数据库(使用JDBC)的模块一起运送。它可以用来测试静止资料库或者活动资料库中的服务器的运行情况,可以用来模拟对服务器或者网络系统加以重负荷以测试它的抵抗力,或者用来分析不同负荷类型下的所有运行情况。它也提供了一个可替换的界面用来定制数据显示,测试同步及测试的创建和执行。
OpenSTA –
OpenSTA是一个免费的、开放源代码的web性能测试工具,能录制功能非常强大的脚本过程,执行性能测试。例如虚拟多个不同的用户同时登陆被测试网站。其还能对录制的测试脚本进行,按指定的语法进行编辑。在录制完测试脚本后,可以对测试脚本进行编辑,以便进行特定的性能指标分析。其较为丰富的图形化测试结果大大提高了测试报告的可阅读性。OpenSTA 基于CORBA 的结构体系,它通过虚拟一个proxy,使用其专用的脚本控制语言,记录通过proxy 的一切HTTP/S traffic。通过分析OpenSTA的性能指标收集器收集的各项性能指标,以及HTTP 数据,对系统的性能进行分析。 欢迎您留下你认为不错的WEB应用性能测试的工具。 当一套程序写完或者一台服务器配置完成后,相必很多朋友会像我一样,非常想知道它到底能够承受多大的负载压力,那在本文中,就给大家介绍十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的Web应用能够顶得住多少的并发量,以及你的网站的性能。
Grinder
Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提供了便利。支持用于执行测试脚本的Jython脚本引擎HTTP测试可通过HTTP代理进行管理。根据项目网站的说法,Grinder的主要目标用户是“理解他们所测代码的人——Grinder不仅仅是带有一组相关响应时间的‘黑盒’测试。由于测试过程可以进行编码——而不是简单地脚本化,所以程序员能测试应用中内部的各个层次,而不仅仅是通过用户界面测试响应时间。
Pylot
Pylot是一款开源的测试Webservice性能和扩展性的工具,它运行HTTP负载测试,这对容量计划,确定基准点,分析以及系统调优都很有用处。Pylot产生并发负载(HTTPRequests),检验服务器响应,以及产生带有metrics的报表。通过GUI或者shell/console来执行和监视testsuites。 Web Capacity Analysis Tool(WCAT) 这是一种轻量级负载生成实用工具,不仅能够重现对Web服务器(或负载平衡服务器场)的脚本HTTP请求,同时还可以收集性能统计数据供日后分析之用。WCAT是多线程应用程序,并且支持从单个源控制多个负载测试客户端,因此您可以模拟数千个并发用户。该实用工具利用您的旧机器作为测试客户端,其中每个测试客户端又可以产生多个虚拟客户端(最大数量取决于客户端机器的网络适配器和其他硬件)。 您可以选择使用HTTP 1.0还是HTTP 1.1请求,以及是否使用SSL。并且,如果测试方案需要,您还可以使用脚本执行的基本或NTLM身份验证来访问站点的受限部分。(如果您的站点使用cookie、表单或基于会话的身份验证,那您可以创建正确的GET或POST请求来对测试用户进行身份验证。)WCAT还可管理您站点可能设置的任何cookie,所以配置文件和会话信息将永久保存。
fwptt
fwptt也是一个用来进行Web应用负载测试的工具。它可以记录一般的请求,也可以记录Ajax请求。它可以用来测试ASP.NET,JSP,PHP或是其它的Web应用。 JCrawler JCrawler是一个开源(CPL)的Web应用压力测试工具。通过其名字,你就可以知道这是一个用Java写的像网页爬虫一样的工具。只要你给其几个URL,它就可以开始爬过去了,它用一种特殊的方式来产生你Web应用的负载。这个工具可以用来测试搜索引擎对你站点产生的负载。当然,其还有另一功能,你可以建立你的网站地图和再点击一下,将自动提交Sitemap给前5名的搜索引擎!
Apache JMeter
Apache JMeter是一个专门为运行和服务器装载测试而设计的、100%的纯Java桌面运行程序。原先它是为Web/HTTP测试而设计的,但是它已经扩展以支持各种各样的测试模块。它和用于HTTP和SQL数据库(使用JDBC)的模块一起运送。它可以用来测试静止资料库或者活动资料库中的服务器的运行情况,可以用来模拟对服务器或者网络系统加以重负荷以测试它的抵抗力,或者用来分析不同负荷类型下的所有运行情况。它也提供了一个可替换的界面用来定制数据显示,测试同步及测试的创建和执行。
OpenSTA
OpenSTA是一个免费的、开放源代码的Web性能测试工具,能录制功能非常强大的脚本过程,执行性能测试。例如虚拟多个不同的用户同时登陆被测试网站。其还能对录制的测试脚本进行,按指定的语法进行编辑。在录制完测试脚本后,可以对测试脚本进行编辑,以便进行特定的性能指标分析。其较为丰富的图形化测试结果大大提高了测试报告的可阅读性。OpenSTA基于CORBA的结构体系,它通过虚拟一个proxy,使用其专用的脚本控制语言,记录通过proxy的一切HTTP/Straffic。通过分析OpenSTA的性能指标收集器收集的各项性能指标,以及HTTP数据,对系统的性能进行分析。
http://www.uzzf.com/soft/1628.html
http://down.zdnet.com.cn/detail/1/5555.shtml
【IT168技术文档】
Web 服务处于分布式计算的核心位置,它们之间的交互通常很难测试。分布式开发、大型的开发者团队以及对代码日益组件化的期望都有可能使 Web 服务的开发变得越来越容易隐藏错误。这些类型的错误极难检测出来。压力测试是检测这类代码错误的一种有效方法,但是只有在压力系统设计得比较有效的情况下才能发挥作用。本文将让您深入了解一下这种压力系统的基本要求。
测试方法
传统的测试方法包括某种形式的简单单元测试,通常由开发人员执行。设计这些测试需要了解软件的内部知识,并且这些测试几乎总是针对产品的非常小的、特定的部分。这些类型的测试非常适合与其他代码组件极少交互,甚至没有交互的简单 Web 服务。
功能验证(Functional Verification) 也是一种测试过程,在这个过程中,对产品源代码了解有限的设计者进行测试以确认产品或服务的核心功能。设计这种测试是为了证明这个核心功能符合某个规范。举个例子,我的在线拍卖显示的是输入的正确出价吗? 我的保险经纪人系统找到最便宜的报价了吗?如果这些测试失败,通常就意味着检测到了产品的一个基本问题(这个问题通常是可以直接修复)。这种测试也是适合简单的 Web 服务,使您可以检查服务是否能够正确执行它的各个功能。
系统测试(System Test) 通常是在功能验证阶段完成,验证了核心功能后进行。它倾向于把整个系统作为一个整体来查找问题 — 弄清 Web 服务作为系统的一部分怎样运作,以及 Web 服务相互之间如何交互。由于系统测试是在开发生命周期快结束时才进行,所以通常不能给它分配足够的时间来完成。又因为紧张的发行日程安排以及开发的各个重要阶段的后移,系统测试阶段经常被忽略,并且一些通常都可以发现的、少见的错误都不能被检测到。即使发现了这种错误,这时也来不及确定错误的原因并设法修复它们了。因此,在查找代码错误时,必需把系统测试应用设计得尽可能高效。系统测试通常由三部分组成,它们是:
性能(Performance): 这涉及到确定相关的产品统计数据的过程。例如:每秒有多少条消息?一个服务可同时接受多少个用户?
案例(Scenario): 这是重新创建客户所需的确切配置的过程。因此在案例中发现的任何问题都可以在客户使用该产品之前被检测出来。
压力(或称工作负载平衡): 它与另两个部分不同,因为它被设计为通过应用很大的工作负载来使软件超负荷运转。如果压力测试通过对产品保持高强度的使用(但不超过性能统计数字确定的限制)能有效地执行,那么它就经常能够发现许多隐蔽的错误,而这些错误用上面提到的任何其他技术都是发现不了的(这些错误也经常是最难修复的)。
从检测代码错误这方面来说,可以证明这三个系统测试组件中效率最高的是压力测试部分。但由于这个过程经常跟系统的其他要素或功能测试混淆在一起,所以这个过程涉及到的方法还没有被正确着手处理或实现。
压力下的错误
使用压力测试,您有希望找到很多种用其他测试方法更难发现的错误。有两种错误类型是:
内存泄漏(Memory leak): 一种极难检测的现象。内存泄漏经常发生在已发行的产品中,原因很简单,很难设计测试用例来检测它们。使用简单的功能测试,几乎发现不了内存泄漏问题,因为在产品完成之前测试没对产品进行足够多的使用。内存泄漏通常要求操作作要重复非常多的次数以使内存消耗达到能引起注意的程度。尽管与其它编程语言(如 C/C++)相比,Java 程序更难引入内存泄漏错误,但只要程序仍保持着对对象的引用,该对象仍有可能被实例化并且它占用的内存永远不会被释放。
并发与同步(Concurrency and Synchronization): 压力测试在查找并发性问题上非常出众,这是因为在任何一个测试生命周期中,它都应用了许多不同的代码路径和定时条件。一般的规则是,压力测试运行的时间越长,涉及并应用的代码路径组合和定时条件就越多。当然,这也的确使得这些问题很难再现(错误可以在 5 分钟或 5 天后发生)。死锁、线程泄漏以及任何一般的同步问题通常只能在压力测试阶段被检测出来。这些类型的问题很难通过执行单元测试来发现。开发人员不会一直考虑他或她的代码将与其他地方的代码(在执行单元测试时这些代码可能还没写出来)进行交互。
现有的压力测试工具
有许多声称能够对产品进行压力测试的可用工具目前正在开发中。被广泛应用的是针对 Web 服务的那些工具。然而,这些工具中有许多只是简单的 HTML/SOAP 生成器,它们模拟许多客户机连接,并因此对 Web 服务器生成高负载(这对于查找 Web 服务器的问题很有用,但对于查找 Web 服务的问题就没那么有用了)。这些工具对基本的压力测试比较有用,但它们经常是仅仅扩展功能验证阶段来重复地执行相同的功能任务。如果足够的时间和资源可用,就可以通过创建定制构建的压力测试系统来实现更有效的测试。由于压力系统的设计者通常对要测试的产品和 Web 服务有更多的了解,所以他们将能够确保压力系统可以用于哪些具体的代码区域。
设计压力应用
设计试图对 Web 服务进行压力测试的压力测试系统时,要让它们以某种特定的方式运行代码。这些风格超越了功能验证,目的是要弄清楚被测试的 Web 服务是不是不仅能做我们认为它能做的事,而且在被施加了某些高强度压力的情况下仍然继续正常运行。压力测试必须对 Web 服务应用四个基本条件。许多已建立的压力系统应用了这些条件。有效的压力测试系统将应用以下这些关键条件:
重复 (Repetition): 或许最明显的且最容易理解的压力条件就是测试的重复。换句话说,测试的重复就是一遍又一遍地执行某个操作作或功能,比如重复调用一个 Web 服务。功能验证测试可以用来被弄清楚一个操作作能否正常执行。而压力测试将确定一个操作作能否正常执行,并且能否继续在每次执行时都正常。这对于推断一个产品是否适用于某种生产情况至关重要。客户通常会重复使用产品,因此压力测试应该在客户之前发现代码错误。许多最简单的压力系统只实现这一个条件,但简单地扩展功能验证测试来多次重复并不能构成一个有效的压力测试。当与下面的一些原则结合起来使用时,重复就可以发现许多隐蔽的代码错误。
并发(Concurrency): 并发是同时执行多个操作作的行为。换句话说,就是在同一时间执行多个测试,例如在同一个服务器上同时调用许多 Web 服务。这个原则不一定适用于所有的产品(比如无状态服务),但是多数软件都具有某个并发行为或多线程行为元素,这一点只能通过执行多个代码示例才能测出来。功能测试或单元测试几乎不会与任何并发设计结合。压力系统必须超越功能测试,要同时遍历多条代码路径。至于怎么做到这一点取决于具体的产品。例如,一个 Web 服务压力测试需要一次模拟多个客户机。Web 服务(或者任何多线程代码)通常会访问多个线程实例间的一些共享数据。因额外方面的编程而增加的复杂性通常意味着代码会具有许多因并发引起的错误。由于引入并发性意味着一个线程中的代码有可能被其他线程中的代码中断,所以错误只在一个指令集以特定的顺序(例如以特定的定时条件)执行时才会被发现。把这个原则与重复原则结合在一起,您可以应用许多代码路径和定时条件。
量级(Magnitude): 压力系统应该应用于产品的另一个条件考虑到了每个操作作中的负载量。压力测试可以重复执行一个操作作,但是操作作自身也要尽量给产品增加负担。例如,一个 Web 服务允许客户机输入一条消息,您可以通过模拟输入超长消息的客户机来使这个单独的操作作进行高强度的使用。换句话说就是,您增加了这个操作作的量级。这个量级总是特定于应用的,但是可以通过查找产品的可被用户计量和修改的值来确定它。例如,数据的大小、延迟的长度、资金数量的转移、输入速度以及输入的变化等等。单独的高强度操作作自身可能发现不了代码错误(或者仅能发现功能上的缺陷),但与其他压力原则结合在一起时,您将可以增加发现问题的机会。
随机变化: 最后一点,任何压力系统都多多少少具有一些随机性。如果您随机使用前面的压力原则中介绍的无数变化形式,您就能够在每次测试运行时应用许多不同的代码路径。下面是几个关于怎样在测试生命周期内改变测试的示例。使用重复时,在重新启动或重新连接服务之前,您可以改变重复操作作间的时间间隔、重复的次数,或者也可以改变被重复的 Web 服务的顺序。使用并发,您可以改变一起执行的 Web 服务、同一时间运行的 Web 服务数目,或者也可以改变关于是运行许多不同的服务还是运行许多同样的实例的决定。量级或许是最容易更改的 — 每次重复测试时都可以更改应用程序中出现的变量(例如,发送各种大小的消息或数字输入值)。如果测试完全随机的话,因为很难一致地重现压力下的错误,所以一些系统使用基于一个固定随机种子的随机变化。这样,用同一个种子,重现错误的机会就会更大。
一个压力测试通常会结合上述的所有原则,并且在允许的范围内尽可能长时间地运行。测试被允许的执行时间越长,就可以遍历越多的代码路径,并且发现的错误也越多。当然,一旦找到错误就必须诊断并修复它。由于一个代码错误可以在压力测试运行多日以后自己显示出来,所以系统必须保证当出现错误时所有可用的调试信息都被生成,否则可能就必须花费同样多的时间来重现这个错误。
结束语
测试是软件开发过程中至关重要的部分,并且一个重要的、经常被曲解或忽略的部分是压力测试。遵循上面详细说明的原则,您就可以设计并实现有效的压力测试系统,用来查找一些与您的代码相关的、比较隐蔽的问题。无论是利用预先写好的工具,还是创建一个完全专用的压力系统,压力测试都是用于查找 Web 服务(或其他任何程序)问题的本质方法。
Web压力测试工具
Web压力测试是目前比较流行的话题,利用Web压力测试可以有效地测试一些Web服务器的运行状态和响应时间等等,对于Web服务器的承受力测试是个非常好的手法。Web 压力测试通常是利用一些工具,例如微软的Web Application Stress、Linux下的siege、功能全面的Web-CT等等,这些都是非常优秀的Web压力测试工具。
虽然这些工具给我们测试服务器承受能力带来方便,但是它们的危害却更是惊人,甚至于利用随便一种比较全面的测试工具就可以对一台小型的 Web服务器发动灾难性的拒绝式攻击。下面我就带大家利用微软的Web Application Stress进行一次Web压力测试,其目的是为了让大家看到它的巨大危害。
一、工具简单介绍
Microsoft Web Application Stress Tool 是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的客户端计算机仿真大量用户上线对网站服务所可能造成的影响,在网站实际上线之前先对您所设计的网站进行如同真实环境下的测试,以找出系统潜在的问题,对系统进行进一步的调整、设置工作。就是因为这些特性,才使它具备了D.O.S轰炸的功能。
小提示:D.O.S(拒绝服务攻击)通过使你的服务计算机崩溃或把它压跨来阻止你提供服务。简单来说,就是让你的计算机提供可能多的服务从而使你的计算机陷入崩溃的边缘或崩溃。
二、工具简单设置
打开Web Application Stress Tool,很简洁的一个页面(如图1),上面是工具栏,左下方是功能选项,右下方是详细设置选项。在对目标Web服务器进行压力测试之前,先对它进行一些必要的设置。
http://www.vpser.net/opt/webserver-test.html
2. WebLoad:webload是RadView公司推出的一个性能测试和分析工具,它让web应用程序开发者自动执行压力测试;
webload通过模拟真实用户的操作,生成压力负载来测试web的性能用户创建的是基于javascript的测试脚本,称为议程agenda,
用它来模拟客户的行为,通过执行该脚本来衡量web应用程序在真实环境下的性能。
3. E-Test Suite:由Empirix公司开发的测试软件,能够和被测试应用软件无缝结合的Web应用测试工具。
工具包含e-Tester、e-Load和e- Monitor,这三种工具分别对应功能测试、压力测试以及应用监控,每一部分功能相互独立,
测试过程又可彼此协同。
4. QALoad:
(1).测试接口多;
(2)可预测系统性能;
(3)通过重复测试寻找瓶颈问题;
(4)从控制中心管理全局负载测试;
(5)可验证应用的扩展性;
(6)快速创建仿真的负载测试;
(7)性能价格比较高。
此外,QALoad不单单测试Web应用,还可以测试一些后台的东西,比如SQL Server等。只要它支持的协议,都可以测试。
5. Benchmark Factory: 首先它可以测试服务器群集的性能;其次,可以实施基准测试;最后,可以生成高级脚本。
7. WAS:是Micro$oft提供的免费的Web负载压力测试工具,应用广泛。
WAS可以通过一台或者多台客户机模拟大量用户的活动。WAS支持身份验证、加密和Cookies,
也能够模拟各种浏览器和Modem速度,它的功能和性能可以与数万美元的产品媲美。
8. ACT:或称MSACT,它是微软的Visual Studio和Visual Studio.net带的一套进行程序压力测试的工具。
ACT不但可以记录程序运行的详细数据参数,用图表显示程序运行情况,而且安装和使用都比较简单,结果阅读方便,
是一套较理想的测试工具。
9. OpenSTA:它的全称是Open System Testing Architecture。
OpenST的特点是可以模拟很多用户来访问需要测试的网站,它是一个功能强大、自定义设置功能完备的软件。
但是,这些设置大部分需要通过Script来完成,因此在真正使用这个软件之前,必须学习好它的Script编写。
如果需要完成很复杂的功能,Script的要求还比较高。当然这也是它的优点,一些程序员不会在意编写Script的。
10. PureLoad:一个完全基于Java的测试工具,它的Script代码完全使用XML。所以,编写 Script很简单。
它的测试包含文字和图形并可以输出为HTML文件。由于是基于Java的软件,
因此PureLoad可以通过Java Beans API来增强软件功能。
注意事项
对于小内存的VPS用户,使用siege的时候要注意内存消耗的情况。另外,大规模的测试有可能会被ISP提供商视为DDOS攻击。在测试前需要协调好。目前看来,在笔者1G内存的VPS上测试运行不成问题。总体来说,用siege来一款小巧、功能强大的网站压力测试工具。需要的朋友不妨一试^_^。
下面是十个免费的可以用来进行Web的负载/压力测试的工具,这样,你就可以知道你的服务器以及你的WEB应用能够顶得住多少的并发量,以及你的网站的性能。我相信,北京奥组委的订票网站的开发团队并不知道有这样的测试工具。
Grinder – Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提供了便利。 支持用于执行测试脚本的Jython脚本引擎HTTP测试可通过HTTP代理进行管理。根据项目网站的说法,Grinder的 主要目标用户是“理解他们所测代码的人——Grinder不仅仅是带有一组相关响应时间的‘黑盒’测试。由于测试过程可以进行编码——而不是简单地脚本 化,所以程序员能测试应用中内部的各个层次,而不仅仅是通过用户界面测试响应时间。
Pylot -Pylot是一款开源的测试web service性能和扩展性的工具,它运行HTTP 负载测试,这对容量计划,确定基准点,分析以及系统调优都很有用处。Pylot产生并发负载(HTTP Requests),检验服务器响应,以及产生带有metrics的报表。通过GUI或者shell/console来执行和监视test suites。
Web Capacity Analysis Tool (WCAT) – 这是一种轻量级负载生成实用工具,不仅能够重现对 Web 服务器(或负载平衡服务器场)的脚本 HTTP 请求,同时还可以收集性能统计数据供日后分析之用。WCAT 是多线程应用程序,并且支持从单个源控制多个负载测试客户端,因此您可以模拟数千个并发用户。该实用工具利用您的旧机器作为测试客户端,其中每个测试客户端又可以产生多个虚拟客户端(最大数量取决于客户端机器的网络适配器和其他硬件)。您可以选择使用 HTTP 1.0 还是 HTTP 1.1 请求,以及是否使用 SSL。并且,如果测试方案需要,您还可以使用脚本执行的基本或 NTLM 身份验证来访问站点的受限部分。(如果您的站点使用 cookie、表单或基于会话的身份验证,那您可以创建正确的 GET 或 POST 请求来对测试用户进行身份验证。)WCAT 还可管理您站点可能设置的任何 cookie,所以配置文件和会话信息将永久保存。 fwptt – fwptt 也是一个用来进行WEB应用负载测试的工具。它可以记录一般的请求,也可以记录Ajax请求。它可以用来测试 asp.net, jsp, php 或是其它的Web应用。
http://down.zdnet.com.cn/detail/1/5555.shtml
【IT168技术文档】
Web 服务处于分布式计算的核心位置,它们之间的交互通常很难测试。分布式开发、大型的开发者团队以及对代码日益组件化的期望都有可能使 Web 服务的开发变得越来越容易隐藏错误。这些类型的错误极难检测出来。压力测试是检测这类代码错误的一种有效方法,但是只有在压力系统设计得比较有效的情况下才能发挥作用。本文将让您深入了解一下这种压力系统的基本要求。
测试方法
传统的测试方法包括某种形式的简单单元测试,通常由开发人员执行。设计这些测试需要了解软件的内部知识,并且这些测试几乎总是针对产品的非常小的、特定的部分。这些类型的测试非常适合与其他代码组件极少交互,甚至没有交互的简单 Web 服务。
功能验证(Functional Verification) 也是一种测试过程,在这个过程中,对产品源代码了解有限的设计者进行测试以确认产品或服务的核心功能。设计这种测试是为了证明这个核心功能符合某个规范。举个例子,我的在线拍卖显示的是输入的正确出价吗? 我的保险经纪人系统找到最便宜的报价了吗?如果这些测试失败,通常就意味着检测到了产品的一个基本问题(这个问题通常是可以直接修复)。这种测试也是适合简单的 Web 服务,使您可以检查服务是否能够正确执行它的各个功能。
系统测试(System Test) 通常是在功能验证阶段完成,验证了核心功能后进行。它倾向于把整个系统作为一个整体来查找问题 — 弄清 Web 服务作为系统的一部分怎样运作,以及 Web 服务相互之间如何交互。由于系统测试是在开发生命周期快结束时才进行,所以通常不能给它分配足够的时间来完成。又因为紧张的发行日程安排以及开发的各个重要阶段的后移,系统测试阶段经常被忽略,并且一些通常都可以发现的、少见的错误都不能被检测到。即使发现了这种错误,这时也来不及确定错误的原因并设法修复它们了。因此,在查找代码错误时,必需把系统测试应用设计得尽可能高效。系统测试通常由三部分组成,它们是:
性能(Performance): 这涉及到确定相关的产品统计数据的过程。例如:每秒有多少条消息?一个服务可同时接受多少个用户?
案例(Scenario): 这是重新创建客户所需的确切配置的过程。因此在案例中发现的任何问题都可以在客户使用该产品之前被检测出来。
压力(或称工作负载平衡): 它与另两个部分不同,因为它被设计为通过应用很大的工作负载来使软件超负荷运转。如果压力测试通过对产品保持高强度的使用(但不超过性能统计数字确定的限制)能有效地执行,那么它就经常能够发现许多隐蔽的错误,而这些错误用上面提到的任何其他技术都是发现不了的(这些错误也经常是最难修复的)。
从检测代码错误这方面来说,可以证明这三个系统测试组件中效率最高的是压力测试部分。但由于这个过程经常跟系统的其他要素或功能测试混淆在一起,所以这个过程涉及到的方法还没有被正确着手处理或实现。
压力下的错误
使用压力测试,您有希望找到很多种用其他测试方法更难发现的错误。有两种错误类型是:
内存泄漏(Memory leak): 一种极难检测的现象。内存泄漏经常发生在已发行的产品中,原因很简单,很难设计测试用例来检测它们。使用简单的功能测试,几乎发现不了内存泄漏问题,因为在产品完成之前测试没对产品进行足够多的使用。内存泄漏通常要求操作作要重复非常多的次数以使内存消耗达到能引起注意的程度。尽管与其它编程语言(如 C/C++)相比,Java 程序更难引入内存泄漏错误,但只要程序仍保持着对对象的引用,该对象仍有可能被实例化并且它占用的内存永远不会被释放。
并发与同步(Concurrency and Synchronization): 压力测试在查找并发性问题上非常出众,这是因为在任何一个测试生命周期中,它都应用了许多不同的代码路径和定时条件。一般的规则是,压力测试运行的时间越长,涉及并应用的代码路径组合和定时条件就越多。当然,这也的确使得这些问题很难再现(错误可以在 5 分钟或 5 天后发生)。死锁、线程泄漏以及任何一般的同步问题通常只能在压力测试阶段被检测出来。这些类型的问题很难通过执行单元测试来发现。开发人员不会一直考虑他或她的代码将与其他地方的代码(在执行单元测试时这些代码可能还没写出来)进行交互。
现有的压力测试工具
有许多声称能够对产品进行压力测试的可用工具目前正在开发中。被广泛应用的是针对 Web 服务的那些工具。然而,这些工具中有许多只是简单的 HTML/SOAP 生成器,它们模拟许多客户机连接,并因此对 Web 服务器生成高负载(这对于查找 Web 服务器的问题很有用,但对于查找 Web 服务的问题就没那么有用了)。这些工具对基本的压力测试比较有用,但它们经常是仅仅扩展功能验证阶段来重复地执行相同的功能任务。如果足够的时间和资源可用,就可以通过创建定制构建的压力测试系统来实现更有效的测试。由于压力系统的设计者通常对要测试的产品和 Web 服务有更多的了解,所以他们将能够确保压力系统可以用于哪些具体的代码区域。
设计压力应用
设计试图对 Web 服务进行压力测试的压力测试系统时,要让它们以某种特定的方式运行代码。这些风格超越了功能验证,目的是要弄清楚被测试的 Web 服务是不是不仅能做我们认为它能做的事,而且在被施加了某些高强度压力的情况下仍然继续正常运行。压力测试必须对 Web 服务应用四个基本条件。许多已建立的压力系统应用了这些条件。有效的压力测试系统将应用以下这些关键条件:
重复 (Repetition): 或许最明显的且最容易理解的压力条件就是测试的重复。换句话说,测试的重复就是一遍又一遍地执行某个操作作或功能,比如重复调用一个 Web 服务。功能验证测试可以用来被弄清楚一个操作作能否正常执行。而压力测试将确定一个操作作能否正常执行,并且能否继续在每次执行时都正常。这对于推断一个产品是否适用于某种生产情况至关重要。客户通常会重复使用产品,因此压力测试应该在客户之前发现代码错误。许多最简单的压力系统只实现这一个条件,但简单地扩展功能验证测试来多次重复并不能构成一个有效的压力测试。当与下面的一些原则结合起来使用时,重复就可以发现许多隐蔽的代码错误。
并发(Concurrency): 并发是同时执行多个操作作的行为。换句话说,就是在同一时间执行多个测试,例如在同一个服务器上同时调用许多 Web 服务。这个原则不一定适用于所有的产品(比如无状态服务),但是多数软件都具有某个并发行为或多线程行为元素,这一点只能通过执行多个代码示例才能测出来。功能测试或单元测试几乎不会与任何并发设计结合。压力系统必须超越功能测试,要同时遍历多条代码路径。至于怎么做到这一点取决于具体的产品。例如,一个 Web 服务压力测试需要一次模拟多个客户机。Web 服务(或者任何多线程代码)通常会访问多个线程实例间的一些共享数据。因额外方面的编程而增加的复杂性通常意味着代码会具有许多因并发引起的错误。由于引入并发性意味着一个线程中的代码有可能被其他线程中的代码中断,所以错误只在一个指令集以特定的顺序(例如以特定的定时条件)执行时才会被发现。把这个原则与重复原则结合在一起,您可以应用许多代码路径和定时条件。
量级(Magnitude): 压力系统应该应用于产品的另一个条件考虑到了每个操作作中的负载量。压力测试可以重复执行一个操作作,但是操作作自身也要尽量给产品增加负担。例如,一个 Web 服务允许客户机输入一条消息,您可以通过模拟输入超长消息的客户机来使这个单独的操作作进行高强度的使用。换句话说就是,您增加了这个操作作的量级。这个量级总是特定于应用的,但是可以通过查找产品的可被用户计量和修改的值来确定它。例如,数据的大小、延迟的长度、资金数量的转移、输入速度以及输入的变化等等。单独的高强度操作作自身可能发现不了代码错误(或者仅能发现功能上的缺陷),但与其他压力原则结合在一起时,您将可以增加发现问题的机会。
随机变化: 最后一点,任何压力系统都多多少少具有一些随机性。如果您随机使用前面的压力原则中介绍的无数变化形式,您就能够在每次测试运行时应用许多不同的代码路径。下面是几个关于怎样在测试生命周期内改变测试的示例。使用重复时,在重新启动或重新连接服务之前,您可以改变重复操作作间的时间间隔、重复的次数,或者也可以改变被重复的 Web 服务的顺序。使用并发,您可以改变一起执行的 Web 服务、同一时间运行的 Web 服务数目,或者也可以改变关于是运行许多不同的服务还是运行许多同样的实例的决定。量级或许是最容易更改的 — 每次重复测试时都可以更改应用程序中出现的变量(例如,发送各种大小的消息或数字输入值)。如果测试完全随机的话,因为很难一致地重现压力下的错误,所以一些系统使用基于一个固定随机种子的随机变化。这样,用同一个种子,重现错误的机会就会更大。
一个压力测试通常会结合上述的所有原则,并且在允许的范围内尽可能长时间地运行。测试被允许的执行时间越长,就可以遍历越多的代码路径,并且发现的错误也越多。当然,一旦找到错误就必须诊断并修复它。由于一个代码错误可以在压力测试运行多日以后自己显示出来,所以系统必须保证当出现错误时所有可用的调试信息都被生成,否则可能就必须花费同样多的时间来重现这个错误。
结束语
测试是软件开发过程中至关重要的部分,并且一个重要的、经常被曲解或忽略的部分是压力测试。遵循上面详细说明的原则,您就可以设计并实现有效的压力测试系统,用来查找一些与您的代码相关的、比较隐蔽的问题。无论是利用预先写好的工具,还是创建一个完全专用的压力系统,压力测试都是用于查找 Web 服务(或其他任何程序)问题的本质方法。
Web压力测试工具
Web压力测试是目前比较流行的话题,利用Web压力测试可以有效地测试一些Web服务器的运行状态和响应时间等等,对于Web服务器的承受力测试是个非常好的手法。Web 压力测试通常是利用一些工具,例如微软的Web Application Stress、Linux下的siege、功能全面的Web-CT等等,这些都是非常优秀的Web压力测试工具。
虽然这些工具给我们测试服务器承受能力带来方便,但是它们的危害却更是惊人,甚至于利用随便一种比较全面的测试工具就可以对一台小型的 Web服务器发动灾难性的拒绝式攻击。下面我就带大家利用微软的Web Application Stress进行一次Web压力测试,其目的是为了让大家看到它的巨大危害。
一、工具简单介绍
Microsoft Web Application Stress Tool 是由微软的网站测试人员所开发,专门用来进行实际网站压力测试的一套工具。透过这套功能强大的压力测试工具,您可以使用少量的客户端计算机仿真大量用户上线对网站服务所可能造成的影响,在网站实际上线之前先对您所设计的网站进行如同真实环境下的测试,以找出系统潜在的问题,对系统进行进一步的调整、设置工作。就是因为这些特性,才使它具备了D.O.S轰炸的功能。
小提示:D.O.S(拒绝服务攻击)通过使你的服务计算机崩溃或把它压跨来阻止你提供服务。简单来说,就是让你的计算机提供可能多的服务从而使你的计算机陷入崩溃的边缘或崩溃。
二、工具简单设置
打开Web Application Stress Tool,很简洁的一个页面(如图1),上面是工具栏,左下方是功能选项,右下方是详细设置选项。在对目标Web服务器进行压力测试之前,先对它进行一些必要的设置。
http://www.vpser.net/opt/webserver-test.html
在运维工作中,压力测试是一项非常重要的工作。比如在一个网站上线之前,能承受多大访问量、在大访问量情况下性能怎样,这些数据指标好坏将会直接影响用户体验。
但是,在压力测试中存在一个共性,那就是压力测试的结果与实际负载结果不会完全相同,就算压力测试工作做的再好,也不能保证100%和线上性能指标相同。面对这些问题,我们只能尽量去想方设法去模拟。所以,压力测试非常有必要,有了这些数据,我们就能对自己做维护的平台做到心中有数。
目前较为常见的网站压力测试工具有webbench、ab(apache bench)、tcpcopy、loadrunner
软件名称简介优缺点
webbench由Lionbridge公司开发,主要测试每秒钟请求数和每秒钟数据传输量,同时支持静态、动态、SSL
部署简单,静动态均可测试。适用于小型网站压力测试(单例最多可模拟3万并发)
ab(apache bench)Apache自带的压力测试工具,主要功能用于测试网站每秒钟处理请求个数
多见用于静态压力测试,功能较弱,非专业压力测试工具
tcpcopy基于底层应用请求复制,可转发各种在线请求到测试服务器,具有分布式压力测试功能,所测试数据与实际生产数据较为接近后起之秀,主要用于中大型压力测试,所有基于 tcp的packets均可测试
loadrunner压力测试界的泰斗,可以创建虚拟用户,可以模拟用户真实访问流程从而录制成脚本,其测试结果也最为逼真模拟最为逼真,并可进行独立的单元测试,但是部署配置较为复杂,需要专业人员才可以。
#webbench -c 2000 -t 60 http://blog.luwenju.com/index.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://blog.luwenju.com/index.php
2000 clients, running 60 sec.
Speed=2154 pages/min, 1968292 bytes/sec.
Requests: 2076 susceed, 78 failed.
当并发2000时,网站便出现“502 Bad Gateway”,由此可见web服务器已无法再处理用户访问请求
总结:
1、压力测试工作应该放到产品上线之前,而不是上线以后
2、测试时尽量跨公网进行,而不是内网
3、测试时并发应当由小逐渐加大,比如并发100时观察一下网站负载是多少、打开是否流程,并发200时又是多少、网站打开缓慢时并发是多少、网站打不开时并发又是多少
4、 应尽量进行单元测试,如B2C网站可以着重测试购物车、推广页面等,因为这些页面占整个网站访问量比重较大