JMeter - REST API测试 - 完整的数据驱动方法(翻译)
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功能测试的一部分来执行。测试描述提供了关于测试用例的高级想法。

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

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

如果我们需要测试成千上万的场景,会发生什么!! 我们怎样才能保持如此庞大的JMeter测试?
数据驱动测试:
为了通过电子表格完全推动测试,在仔细分析这些请求之后,让我们将这些HTTP请求中可能不同的任何数据移动到电子表格中,如此处所示。

- #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数据集配置 - 读取测试场景和输入参数。

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

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

以下语句更改当前的采样器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);
- 最后一步是添加断言。

- 运行测试计划。

下载:
您可以检查JMeter测试计划,这里在GitHub上。
摘要:
通过将所有变量移动到电子表格并使用1个HTTP采样器,我们可以测试不同类型的请求。在此测试计划中添加任何新测试都非常简单。如您所知,我们必须在电子表格中再插入一行,并为新测试提供足够的信息。通过查看电子表格,您可以轻松了解我们的报道。使用此方法对测试数据的任何更新也很容易,而不是更新JMeter中的每个单独的HTTP请求。
JMeter - REST API测试 - 完整的数据驱动方法(翻译)的更多相关文章
- 使用JMeter进行RESTful API测试
使用JMeter进行RESTful API测试 在哪里设置实现最优脚本重用的属性 由于支持云的应用程序通常可以轻松.快速地进行复制和部署,所以可以在多种环境中对其进行测试.如果您需要在多个环境中测试和 ...
- JMETER进行REST API测试(分步指南)
我确定你在这里是因为你需要加载测试Json Rest API.这并不奇怪,因为Rest API现在越来越受欢迎. 这本指南的目的:帮助您进行负载测试一个Json的 REST API 通过一个具体的例子 ...
- 使用JMETER进行REST API测试
我确定你在这里是因为你需要加载测试Json Rest API.这并不奇怪,因为Rest API现在越来越受欢迎. 这本指南的目的:帮助您进行负载测试一个Json的 REST API 通过一个具体的例子 ...
- 使用JMETER进行REST API测试(分步指南)
我确定你在这里是因为你需要加载测试Json Rest API.这并不奇怪,因为Rest API现在越来越受欢迎. 这本指南的目的:帮助您进行负载测试一个Json的 REST API 通过一个具体的例子 ...
- ES5新增数组方法测试和字符串常见API测试
首先是ES5新增数组方法测试: <!DOCTYPE html><html lang="en"><head> <meta charset=& ...
- 使用JMeter进行负载测试——终极指南
这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 JMeter的实现方式以及采用的技术 安 ...
- 【转】使用JMeter进行负载测试——终极指南
使用JMeter进行负载测试——终极指南 这篇教程讨论的是JMeter,它是一款基于Java的.集合了几个应用程序.具有特定用途的负载和性能测试工具. 本篇主要涉及的内容: 解释一下JMeter的用途 ...
- [翻译] API测试最佳实践 - 组织你的测试
组织你的测试 适用级别:初学者 在最底层,一个测试步骤(Test Step)用来验证一个单独的操作.组合若干测试步骤到测试用例,允许你验证那些被分隔出来的一个一个的功能,这些功能是应用程序所需要的.接 ...
- JMeter Webservice API测试计划
Web Services Web服务被定义为旨在通过网络支持两台机器之间交互的软件系统.它被设计为具有以通常在Web服务描述语言(WSDL)中指定的机器可处理格式描述的接口. 通常,“HTTP”是最常 ...
随机推荐
- tbody scroll
http://jsfiddle.net/hashem/CrSpu/555/
- ACM学习历程—HDU5521 Meeting(图论)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5521 学习菊苣的博客,只粘链接,不粘题目描述了. 题目大意就是一个人从1开始走,一个人从n开始走.让最 ...
- bzoj 3689: 异或之 Trie+堆
题目大意: http://www.lydsy.com/JudgeOnline/problem.php?id=3689 题解: 利用一个优先队列存储当前取到的数 然后再写一颗支持查找异或的k大值的Tri ...
- Anthem.NET的 "Bad Response" 问题,及脚本调试技巧小结
今天解决了一位朋友使用 Anthem.NET 遇到的问题.他的代码在 Windows XP 的开发机器上反应正常,而部署到 2003 Server 的服务器上就提示 "BADRESPONSE ...
- windows下,CSV文件Excel打开乱码
在windows下面,csv文件另存为UTF-8,在excel中打开中文是乱码,如果另存为utf-8 Big + BOM,Excel打开则是正常显示
- ECMAScript中面向对象的程序设计思想总结
<JavaScript高级程序设计>Chapter6笔记 1.ECMAScript内部值属性:数据属性和访问器属性 1)数据属性 数据属性的4个特性: configurable:表示能否通 ...
- Poj 2304 Combination Lock(模拟顺、逆时钟开组合锁)
一.题目大意 模拟一个开组合的密码锁过程.就像电影你开保险箱一样,左转几圈右转几圈的就搞定了.这个牌子的锁呢,也有它独特的转法.这个锁呢,有一个转盘,刻度为0~39.在正北方向上有一个刻度指针.它的密 ...
- mysql nginx redis 配置文件
https://github.com/superhj1987/awesome-config
- Entity Framework Code-First(10.1):EntityTypeConfiguration
EntityTypeConfiguration Class in Code-First: Before we start to configure using Fluent API, let's se ...
- SCSS 中的 &::before 和 &::after
在看一个文件的时候,发现有&::before 和 &::after, 没有理解怎么用的,因为以前在项目的css文件中,从来没有使用过,也没有见过 网上查询了一下,才发现&::b ...