graphQL API的性能测试

时间:2017-10-30 07:04:53

标签: jmeter performance-testing graphql

今天,当服务器是REST API时,我正在使用Jmeter进行API自动化测试和性能测试。 现在开发改为graphQL API,我有两个问题: 1.执行自动化API和性能测试的最佳实践是什么? 2. Jmeter是否支持graphQL API?

7 个答案:

答案 0 :(得分:3)

免责声明:我为LoadImpact工作; k6背后的公司。

如果您愿意考虑使用其他方法,我最近写了一篇有关该主题的博客文章:Load testing GraphQL with k6

这是k6示例的样子:

let accessToken = "YOUR_GITHUB_ACCESS_TOKEN";

let query = `
 query FindFirstIssue {
   repository(owner:"loadimpact", name:"k6") {
     issues(first:1) {
       edges {
         node {
           id
           number
           title
         }
       }
     }
   }
 }`;

let headers = {
 'Authorization': `Bearer ${accessToken}`,
 "Content-Type": "application/json"
};

let res = http.post("https://api.github.com/graphql",
 JSON.stringify({ query: query }),
 {headers: headers}
);

答案 1 :(得分:1)

我正在测试我们的GraphQL实现,您将需要:

答案 2 :(得分:0)

查看Serving over HTTP

GraphQL documentation部分
  

当收到HTTP GET请求时,应在" query"中指定GraphQL查询。查询字符串。

因此,您只需将GraphQL查询附加到请求网址即可。

JMeter Query GraphQL

关于"最佳实践" - 你应该遵循"正常"有关Web应用程序和HTTP API测试的建议,例如,请查看REST API Testing - How to Do it Right文章。

答案 3 :(得分:0)

我使用Apollo来构建GraphQL服务器,并使用JMeter如下查询GraphQL API。

1。设置HTTP请求

enter image description here

2。设置HTTP标头

enter image description here

根据您的应用程序,您可能还需要为JWT Web令牌设置HTTP标头授权,例如:

Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxx

3。如果您的应用需要设置HTTP Cookie

4。运行测试

enter image description here

演示项目:apollo-tutorial-kit

答案 4 :(得分:0)

您可以尝试使用easygraphql-load-tester

工作方式:

easygraphql-load-tester是一个节点库,创建该节点库是基于该架构在GraphQL上进行负载测试;它将创建一堆查询,这些查询将用于测试服务器。

示例:

结果:

使用该软件包,对我来说,有可能使用服务器上的数据加载器来识别错误的实现。

没有数据加载器的结果

All virtual users finished
Summary report @ 10:07:55(-0500) 2018-11-23
  Scenarios launched:  5
  Scenarios completed: 5
  Requests completed:  295
  RPS sent: 36.88
  Request latency:
    min: 1.6
    max: 470.9
    median: 32.9
    p95: 233.2
    p99: 410.8
  Scenario counts:
    GraphQL Query load test: 5 (100%)
  Codes:
    200: 295

数据加载器的结果

All virtual users finished
Summary report @ 10:09:09(-0500) 2018-11-23
  Scenarios launched:  5
  Scenarios completed: 5
  Requests completed:  295
  RPS sent: 65.85
  Request latency:
    min: 1.5
    max: 71.9
    median: 3.3
    p95: 19.4
    p99: 36.2
  Scenario counts:
    GraphQL Query load test: 5 (100%)
  Codes:
    200: 295

答案 5 :(得分:0)

我最近尝试用GraphQl在Jmeter中使用GET和POST请求进行API测试

确保对查询和变异

POST 请求

示例图Ql查询

{
  storeConfig{
    default_title
    copyright
  }
}

对于 Jmeter 来说就是这样

{
    "query":"{ storeConfig { default_title copyright } }"
}

加强HTTP请求

enter image description here

您的域名将代替本地主机。确保您没有添加 https

示例:-https://mydomainname.com

Jmeter 中:- mydomainname.com

设置HTTP标头管理器

enter image description here

要在 Jmeter

中请求突变

Graphql中的示例突变

 mutation {
      generateCustomerToken(
          email: "rd@mailinator.com"
          password: "1234567"
      ) {
          token
   }
}

Jemeter 中,突变将是这样

{
    "query":"mutation { generateCustomerToken( email: \"rd@mailinator.com\" password: \"1234567\" ) { token } }"
}

用(\“)替换双引号,如上面的查询

enter image description here

答案 6 :(得分:0)

最简单的方法是直接在JMeter中使用GraphQL查询,而无需将它们转换为JSON。

您需要做的就是在标题中将“ Content-Type”作为“ application / graphql”传递。

Image Link for: HTTP Request with GraphQL Query as input

Image Link for: Header details