今天,当服务器是REST API时,我正在使用Jmeter进行API自动化测试和性能测试。 现在开发改为graphQL API,我有两个问题: 1.执行自动化API和性能测试的最佳实践是什么? 2. Jmeter是否支持graphQL API?
答案 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实现,您将需要:
Content-Type: Application/json
https://i.stack.imgur.com/syXqK.png 答案 2 :(得分:0)
当收到HTTP GET请求时,应在" query"中指定GraphQL查询。查询字符串。
因此,您只需将GraphQL查询附加到请求网址即可。
关于"最佳实践" - 你应该遵循"正常"有关Web应用程序和HTTP API测试的建议,例如,请查看REST API Testing - How to Do it Right文章。
答案 3 :(得分:0)
我使用Apollo来构建GraphQL服务器,并使用JMeter如下查询GraphQL API。
根据您的应用程序,您可能还需要为JWT Web令牌设置HTTP标头授权,例如:
Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxx
演示项目: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请求
您的域名将代替本地主机。确保您没有添加 https
在 Jmeter 中:- mydomainname.com
设置HTTP标头管理器
要在 Jmeter
中请求突变Graphql中的示例突变
mutation {
generateCustomerToken(
email: "rd@mailinator.com"
password: "1234567"
) {
token
}
}
在 Jemeter 中,突变将是这样
{
"query":"mutation { generateCustomerToken( email: \"rd@mailinator.com\" password: \"1234567\" ) { token } }"
}
用(\“)替换双引号,如上面的查询
答案 6 :(得分:0)
最简单的方法是直接在JMeter中使用GraphQL查询,而无需将它们转换为JSON。
您需要做的就是在标题中将“ Content-Type”作为“ application / graphql”传递。