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


    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 = 1
    DURATION = 60  # secs
    RAMPUP = 0  # secs
    INTERVAL = 0  # millisecs
    TC_XML_FILENAME = 'testcases.xml'
    OUTPUT_DIR = None
    TEST_NAME = None
    LOG_MSGS = False
    
    GENERATE_RESULTS = True
    SHUFFLE_TESTCASES = False  # randomize order of testcases per agent
    WAITFOR_AGENT_FINISH = True  # wait for last requests to complete before stopping
    SMOOTH_TP_GRAPH = 1  # secs.  smooth/dampen throughput graph based on an interval
    SOCKET_TIMEOUT = 300  # secs
    COOKIES_ENABLED = True
    
    HTTP_DEBUG = False  # only useful when combined with blocking mode  
    BLOCKING = False  # stdout blocked until test finishes, then result is returned as XML
    GUI = 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文本文件,因此你可以导入到您最喜爱的电子表格处理数字,生成统计数据,并创建图表。

  • 相关阅读:
    HttpClient
    Windows Runtime (RT)
    大败局
    postgresql+postgis+pgrouting实现最短路径查询(1)---线数据的处理和建立拓扑
    postgresql+postgis+pgrouting实现最短路径查询(2)---openlayers+geoserver实现最短路径
    nodejs+postgis实现搜周边
    mac环境下安装posgreSQL,postGIS,pgrouting方法
    postgresql+postgis+pgrouting实现最短路径查询(3)--流程图
    openlayers中的自定制工具栏,包含画点、线、面
    经常用到的23种广告代码。包括图片切换、对联广告等
  • 原文地址:https://www.cnblogs.com/limengqiang/p/Pylot.html
Copyright © 2020-2023  润新知