zoukankan      html  css  js  c++  java
  • JMeter

    https://github.com/vinsguru/jmeter-rest-data-drivern/tree/master

    在本文中,我想向您展示一种用于REST API测试的数据驱动方法。如果你是新来的JMeter / REST API测试,我想读这篇文章首先得到一些想法。

    目标:

    我们的目标是提出一个框架,用不同的HTTP方法测试REST API。此测试将通过电子表格进行,电子表格将包含所有输入参数,API URL,HTTP方法,请求JSON,文本响应应用于断言等。

    通过使用一个HTTP Sampler,我们希望发送不同类型的请求GET / POST / PUT / PATCH / DELETE。 甚至HTTP请求正文数据也将在运行时动态添加。

    JSON服务器:

    我将使用此JSON-Server进行此测试。您可以在一分钟内快速设置并运行。如果有,您也可以使用您的应用程序API。

    安装完成后,使用以下命令启动服务器。
    json-server --watch db.json

    我的db.json看起来像这样。

    1
    2
    3
    4
    6
    7
    8
    9
    10
    11
    {
       "books":[
     
       ],
       "comments":[
     
       ],
       "profile":{
          "name":"typicode"
       }
    }

    测试场景:

    让我们假设,我们希望将这些场景作为REST API功能测试的一部分来执行。测试描述提供了关于测试用例的高级想法。

    rest005

    如果所有请求实际上都相同且只有数据不同,如下所示,我们可以使用1个HTTP Sampler和一个CSV DataSet Config轻松地在JMeter中进行数据驱动测试

    csv1

    但在我们的例子中,我们有1个GET请求,然后是5个POST请求,然后是1个GET请求......等等。我们发送不同类型的请求。因此,我们最终可能会创建我们的测试计划,如此处所示

    rest006

    如果我们需要测试成千上万的场景,会发生什么!! 我们怎样才能保持如此庞大的JMeter测试?

    数据驱动测试:

    为了通过电子表格完全推动测试,在仔细分析这些请求之后,让我们将这些HTTP请求中可能不同的任何数据移动到电子表格中,如此处所示。

    rest004

    • #1 - 一个简单的GET请求,用于从图书类别中获取所有项目。对于第一个测试用例,我们没有任何数据。所以,它应该以空列表响应。
    • #2-#6 - 我们使用POST请求添加具有不同标题和作者的新书这些测试用例input.json如下所示。我们将在运行时使用电子表格中的相应数据替换标题作者。
    1
    2
    3
    4
    {
      "title""${title}",
      "author": "${author}"
    }
    • #7&#9 - 针对特定书籍详细信息的简单GET请求,以检查POST / PUT请求是否正常工作。
    • #8 - PUT请求简单地用给定数据替换DB中的当前项。
    1
    2
    3
    4
    {
      "title""${title}",
      "author": "${author}",
      "price": "$10.00"
    }
    • #10 - 专门更新DB中当前项的数据的PATCH请求。
    1
    2
    3
    {
      "title": "${title}"
    }
    • #11#12 - DELETE请求从数据库中删除项目。

    由于我们已将所有变量移动到电子表格,现在通过在JMeter测试中只有一个HTTP Sampler并通过在运行时设置HTTP Sampler属性/属性,我们可以运行整个测试。

    JMeter测试计划:

    • 我添加了一个  CSV数据集配置  - 读取测试场景和输入参数。

    rest007

    • 添加HTTP Sampler并更新详细信息。让方法具有一些默认选择。还添加一个带有Content-Type的Header Manager  作为application / json

    rest008

    • 添加JSR223 - PreProcessor。这应该负责根据电子表格中的值更改HTTP方法。它还为POST / PUT / PATCH请求设置HTTP请求正文数据。

    DD-rest009

    以下语句更改当前的采样器HTTP方法。

    def httpMethod = vars.get("http.method");
    sampler.setMethod(httpMethod);

    我们使用以下语句来更改HTTP Body。我们读取input.json文件,然后用相应的数据替换any变量

    def dataToBePosted = new CompoundVariable(new File(vars.get("jmeter.test.home") + vars.get("input.json")).text).execute();
    def arg= new HTTPArgument("", dataToBePosted, null, true);
    arg.setAlwaysEncoded(false);
    sampler.getArguments().addArgument(arg);

    • 最后一步是添加断言。

    休息

    • 运行测试计划。

    DD-rest011

    下载:

    您可以检查JMeter测试计划,这里在GitHub上。

    摘要:

    通过将所有变量移动到电子表格并使用1个HTTP采样器,我们可以测试不同类型的请求。在此测试计划中添加任何新测试都非常简单。如您所知,我们必须在电子表格中再插入一行,并为新测试提供足够的信息。通过查看电子表格,您可以轻松了解我们的报道。使用此方法对测试数据的任何更新也很容易,而不是更新JMeter中的每个单独的HTTP请求。

  • 相关阅读:
    【数学】杜教筛
    【数学】【多项式】多项式求逆
    【数学】求导
    【数学】【多项式】快速数论变换(NTT)
    【数学】【多项式】快速傅里叶变换(FFT)
    WC2021 Day3 笔记
    网络流
    $DP$ 重修
    数学基础 5
    数学基础 3
  • 原文地址:https://www.cnblogs.com/a00ium/p/10381238.html
Copyright © 2011-2022 走看看