分享一款Web压力测试工具Pylot

来源:互联网 发布:公共基础知识考试软件 编辑:程序博客网 时间:2024/05/02 05:00

http://www.cnblogs.com/limengqiang/archive/2013/02/07/Pylot.html

1、什么是Pylot?

   Pylot是一个免费的开源工具,用于测试Web服务的性能和可扩展性。它运行HTTP负载测试,这是有用的容量规划,基准,分析和系统调整。

   Pylot产生并发负载(HTTP请求),验证服务器的响应,并制作报告的度量。测试套件的执行和监测,从一个GUI或shell /控制台。

   Pylot基于Python开发,和著名的Apache压力测试工具ab一样,默认在命令行运行,也可以通过参数触发GUI界面,当然前提是安装了wxPython的。

2、Pylot如何工作?

   你开始在一个XML文件(testcases.xml)中定义你的测试用例。测试用例是验证你指定的请求(URL,Method,Body等)。可以验证服务器响应的正则表达式匹配的内容,HTTP状态码。您可以通过调整负载的工作量控制GUI或命令行设置,然后再开始测试运行(数目的代理,请求的时间间隔,上升时间,测试时间)。这些设置,您可以根据不同的负载情况下的模型试验。在运行加载的情况下,并传递到负载产生引擎。代理调度和运行,同时发送HTTP请求到你的web服务。它在执行过程中生成实时的统计和错误报告,通过这个报告可以很方便的进行监控。

 

3、Pylot应用场景

   开发人员,测试人员和性能工程师需要测试和调整他们的Web服务的性能和可扩展性。也可以使Python程序员集成到更大的测试套件。使用这个工具可以使你更加熟悉HTTP,XML和性能测试。

4、产品特点

  • HTTP和HTTPS(SSL)支持
  • 多线程负载生成器
  • 自动cookie处理
  • 响应验证与正则表达式
  • 执行/监控控制台
  • 实时统计
  • 结果报告和图形
  • 定制的timer
  • GUI模式
  • 外壳/控制台模式
  • 跨平台

5、入门指南

平台:

控制台和阻塞模式

控制台和隔离模式运行在所有平台上的Python 2.5 +可以安装。视窗XP,Vista中,Ubuntu 8.04/8.10,华硕Eee PC,Mac的OS测试。

GUI模式

Pylot,GUI将运行在所有平台上支持Python和wxWidgets。大多被开发的GUI测试在Windows,但Linux和Mac看起​​来体面。应用程序代码是纯Python和使用一个跨平台的工具包。

安装Pylot

第1步:下载并解压缩最新的Pylot发布

获取最新版本: 下载Pylot

第2步:安装Python 2.5 +

获取安装程序从这里开始:http://www.python.org/download

第3步:安装wxPython(可选 - 用于GUI模式)

从这里获取安装程序:http://www.wxpython.org/download.php

第4步:安装numpy的(可选 - 用于报告以图表)

从这里获取安装程序:http://sourceforge.net/projects/numpy

第5步:安装matplotlib的(可选 - 用于报告以图表)

从这里获取安装程序:http://sourceforge.net/projects/matplotlib

第6步:运行Pylot

GUI模式:

> python run.py -G

控制台和阻塞模式 - 命令行选项:

用法:run.py [选项] ARGS  -A, - 代理= NUM​​_AGENTS的代理数量  -D, - 持续时间:测试时间以秒为单位  -r时, - 斜坡上升=斜坡上升:斜坡上升在几秒钟内  -I, - 间隔=间隔:间隔时间(以毫秒为单位)  -X  -  XMLFILE = TEST_CASE_XML:测试的情况下,XML文件  -O, -  OUTPUT_DIR = path:输出目录  -N, -  = testname代表:姓名测试  -L, -  log_msgs:日志消息  -B, - 阻塞:阻塞模式  -G, -  GUI:启动GUI  -P, - 端口PORT:XML-RPC监听端口  

远程启动Pylot:

,Pylot包含一个XML-RPC服务器,可以启动,这样你就可以开始测试与远程客户端。

配置选项:

“的文件/核心/ config.py的包含了一些全局配置选项。您可以设置某些defauls和改变某些行为。如果在命令行上指定这些选项是覆盖。

AGENTS = 1DURATION = 60  # secsRAMPUP = 0  # secsINTERVAL = 0  # millisecsTC_XML_FILENAME = 'testcases.xml'OUTPUT_DIR = NoneTEST_NAME = NoneLOG_MSGS = FalseGENERATE_RESULTS = TrueSHUFFLE_TESTCASES = False  # randomize order of testcases per agentWAITFOR_AGENT_FINISH = True  # wait for last requests to complete before stoppingSMOOTH_TP_GRAPH = 1  # secs.  smooth/dampen throughput graph based on an intervalSOCKET_TIMEOUT = 300  # secsCOOKIES_ENABLED = TrueHTTP_DEBUG = False  # only useful when combined with blocking mode  BLOCKING = False  # stdout blocked until test finishes, then result is returned as XMLGUI = False

使用Pylot

 

步骤1:创建测试案例

测试案例名为“testcases.xml”的,或在命令行上指定一个不同的XML文件中声明一个XML文件。这是的格式测试引擎可以理解的。

使用下面的语法定义一个测试例。只有URL元素是必需的。

<case>  <url>URL</url>  <method>HTTP METHOD</method>  <body>REQUEST BODY CONTENT</body>  <add_header>ADDITIONAL HTTP HEADER</add_header>  <verify>STRING OR REGULAR EXPRESSION</verify>  <verify_negative>STRING OR REGULAR EXPRESSION</verify_negative>  <timer_group>TIMER GROUP NAME</timer_group></case>

下面是一个例子,最简单的可能的测试案例文件。它包含了一个测试案例,试运行期间,将连续执行。的测试用例包含一个URL下测试的服务。由于身体没有一种方法或定义,它会默认发送一个HTTP GET到这个资源。由于没有验证的定义,它会通过/失败测试案例的基础上的HTTP状态代码(通过,如果状态是<400)。

<testcases>  <case>    <url>http://www.example.com/foo</url>  </case></testcases>

我们可以添加正面和负面的验证。一个积极的验证是在响应主体必须包含一个字符串或正则表达式。负的验证是一个字符串或正则表达式,必须不包含在响应主体。

<case>    <url>http://www.goldb.org/foo</url>    <verify>Copyright.*Corey Goldberg</verify>    <verify_negative>Error</verify_negative><case>

 

饼干:

Cookies是自动处理的。如果收到一个响应的“设置Cookie”头,cookie将被设置在头的后续请求并传回。

 

例:雅虎搜索的Web服务(REST API)

雅虎提供各种REST Web服务来访问搜索结果。在这个例子中,我将展示如何创建Pylot的REST API进行交互的测试用例。

下面是一个简单的GET请求对服务:

 

http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&query=foo

申请一个Pylot测试案例是这样的:

<case>  <url>http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&amp;query=foo</url></case>

请注意符号(&)的URL逃脱的代码:“&” 
这是becasue的某些字符(“<”和“&”)是非法的XML文件。由于我们是在一个XML文档definig测试用例,我们必须避开这些符号代码,或将它们放置在一个CDATA部分。

 

雅虎还允许POST数据块来传递查询参数。在这种情况下,我们还必须改变“内容类型”HTTP头:“应用程序/ x - www的形式,进行了urlencoded”。(Pylot默认为text / xml“)

下面是一个POST请求对服务:

<case>  <url>http://search.yahooapis.com/WebSearchService/V1/webSearch</url>  <method>POST</method>  <body><![CDATA[appid=YahooDemo&query=webinject]]></body>  <add_header>Content-type: application/x-www-form-urlencoded</add_header></case>

现在,我们知道如何创建单独的情况下,我们可以创建一个测试案例文件,其中包含几个这样的。在这个例子中,我们的测试情况下,文件包含Yahoo等搜索查询为:“富”,“酒吧”,“巴兹”

<testcases>  <case>    <url>http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&amp;query=foo</url>  </case>    <case>    <url>http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&amp;query=bar</url>  </case>    <case>    <url>http://search.yahooapis.com/WebSearchService/V1/webSearch?appid=YahooDemo&amp;query=baz</url>  </case></testcases>

 

例如:SOAP API

谈任何HTTP API,我们可以模拟我们的测试用例。这个例子展示了如何将请求发送到一个SOAP服务。我们需要发送的SOAP信封将被封装在HTTP POST主体。

<case>  <url>http://www.example.org/StockPrice</url>  <method>POST</method>  <add_header>Content-Type: application/soap+xml; charset=utf-8</add_header>  <body><!    [CDATA[          <!-- This is the SOAP Envelope  -->        <?xml version="1.0"?>      <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope"        soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">        <soap:Body xmlns:m="http://www.example.org/stock">          <m:GetStockPrice>            <m:StockName>IBM</m:StockName>          </m:GetStockPrice>        </soap:Body>      </soap:Envelope>          ]]>  </body></case>

 

例如:设置静态变量/参数

你可以在你的测试用例文件中定义的全局参数。这是非常有用的,如果你有一个值之间共享一些测试情况下,你经常改变。在下面的例子中,我们定义了一个“http_server”参数,然后使用该令牌在一个测试案例。

<testcases>  <param name="http_server" value="http://www.example.com" />  <case>    <url>${http_server}/foo</url>  </case></testcases>

 

例如:基于文件的HTTP有效载荷

您可能希望,POST数据存储在一个外部文件中,而不是直接宣布它在你的测试用例XML文件。这是非常有用的,如果你有非常大的POST人体的或要发送的二进制数据不能被嵌入到XML。使用下面的语法将数据从一个文件,它张贴在运行。

<case>  <url>http://www.example.com/foo</url>  <method>POST</method>  <body file="./myfile.dat"></body></case>

 

第2步:模型工作负载方案

定义的工作负载使用的用户界面上的控件。使用下面的选项。您可以创建一个的稳态或增加负载测试。

  • 代理:代理(虚拟用户)来运行
  • 斜坡上升时间跨度代理开始。他们将被均匀地分布在整个这段时间内。(参见下面的注释)
  • 每个用户发送请求的时间间隔:间隔。每个用户代理的请求,节奏均匀的时间间隔(,除非反应,分析反应时间比较慢的文天生定义的时间间隔)
  • 播放时间:时间跨度的测试

 

第3步:执行和监控

 

运行模式

  • 控制台模式:在测试过程中,您可以查看实时统计在用户界面(UI)
  • 阻塞模式:STDOUT被阻塞,直到测试结束后,返回结果为XML
  • GUI模式:管理和运行测试的GUI界面

测试运行结束时,自动生成一个HTML报告,表示测试结果和图表。

 

第4步:查看结果

当测试完成后,结果目录创建并自动生成一份报告,总结测试结果。它包括各种统计数据和图表,响应时间和吞吐量。结果报告的样本可以在这里看到:

报告样本

Pylot结果写入到CSV文本文件,因此你可以导入到您最喜爱的电子表格处理数字,生成统计数据,并创建图表。


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 旅行箱密码锁打不开怎么办 梅花夏季干支了怎么办 红梅树初夏落叶怎么办 电脑主机开关坏了怎么办 iqos加热片断了怎么办 眼睛容易出泪水怎么办 盖髓后牙齿疼痛怎么办 补牙材质掉了怎么办 补牙上药后痛怎么办 儿童牙缝隙大怎么办 牙齿塞药掉了怎么办啊 补牙后按压疼痛怎么办 补过的牙齿疼怎么办 堵完牙后牙涨疼怎么办 补牙到牙神经怎么办 想换飘窗窗户 大理石面怎么办 出差三个月绿萝怎么办 口红吊兰根烂怎么办 金鱼吊兰干枝怎么办 口红吊兰不开花怎么办 单位上班座位不好怎么办 简易办公室夏天闷热怎么办 开发商不让用公积金贷款怎么办 夏天脚底开裂缝怎么办 晚上脚丫子痒怎么办丫 栀子花长白粉虱怎么办 栀子花花骨朵变黄怎么办 栀子花苞焉了怎么办 水培栀子花焉了怎么办 三角梅叶子焉了怎么办 换瓣手术后出现漏洞怎么办 牙2瓣了怎么办 二件瓣反流已有20多年了怎么办 小阴唇静脉畸形怎么办 帝舵手表氧化怎么办? 脸干不易吸收怎么办 水粉画颜料裂了怎么办 吃粉条胃不舒服怎么办 胃营养吸收不好怎么办 猫咪老是挠人怎么办 去水上乐园头发怎么办