使用JMeter进行API功能测试

Apache JMeter是一种流行的开源软件,用于性能测试。

在本博客中,我们将阐明如何使用JMeter for REST API自动化进行功能测试。

我们使用了https://reqres.in/site中的示例API ,其中列出了可用于测试的多个真实API。我们选择了用户管理API,可以注册用户,登录用户,列出所有用户,创建用户,更新用户删除用户

列出用于此测试脚本的API:

/api/users?page=2

/api/users/2

/api/register

/api/login

使用JMeter,我们考虑了以下示例REST端点:

  • 使用HTTP POST添加新用户。
  • 使用HTTP GET检索所有用户的列表。
  • 使用HTTP PUT更新新添加的用户。
  • 使用HTTP DELETE删除添加的用户。

步骤1:创建新的测试计划 - >右键单击 - >添加 - >线程 - >线程组

  1. 将线程数(用户)设置为10 - 我们将有10个用户执行测试计划。
  2. 将Ramp-up周期(以秒为单位)设置为10 - Ramp-up周期告诉JMeter在处理下一个用户之前的延迟时间。
  3. 将循环计数设置为10 - 执行测试的次数。

注意:逻辑控制器确定执行用户请求的顺序。简单控制器只是用户请求的容器。

第2步:  线程组 - >右键单击 - >添加 - >逻辑控制器 - >简单控制器

第3步:  简单控制器 - >右键单击 - >添加 - >采样器 - > Http采样器请求

POST方法

POST请求用于在数据源中创建新记录。

添加新用户

步骤1:创建POST方法请求,以使用两个参数(电子邮件和密码)注册新用户,并将其重命名为“注册成功”。

  • 输入协议为“https”,IP地址为“reqres.in”。
  • 选择方法为“POST”。
  • 输入API路径。同样,我们可以成功登录并使用“POST”方法创建用户。

  • 名称:发布项目
  • 方法:POST
  • 正文数据:JSON项目对象

在响应断言中添加要测试的模式

第2步 :  创建文本文件并将参数保存在该文件中。Jmeter动态使用CSV数据存储多个数据对象,更新数据值等。

第3步:  线程组→添加Http头管理器

添加内容类型和令牌

第4步:保存并运行注册成功测试用例。

步骤5  :  Threadgroup-> Add-> Listener-> View Results Tree

GET方法

GET方法用于检索数据源中的信息。

检索所有用户的列表。

第1步:简单控制器 - >右键单击 - >添加 - >另一个采样器 - > Http采样器请求

  • 添加另一个HTTP采样器请求。
  • 输入协议为“https”,IP地址为“reqres.in”。
  • 选择方法为“GET”。
  • 输入列表用户的API路径。

  • 路径:/ users / $ {userId}
  • 方法:GET

第2步:Listusers->右键单击 - >添加 - >断言 - >响应断言

第3步:  列表用户→添加 - >监听器

  • 保存并运行“listusers”测试用例。
  • 查看列出所有用户的响应数据。

PUT方法用于更新数据源中的现有记录。

更新添加的用户。

第1步:简单控制器 - >右键单击 - >添加 - >另一个采样器 - > Http Request Sampler

  • 添加另一个HTTP请求采样器并将其命名为“updateusers”。
  • 将方法设置为“PUT”。
  • 输入协议为“https”,ip地址为“reqres.in”。
  • 输入API路径。
  • 将用户的详细信息添加为正文数据。

第2步:值直接传递到帖子数据。

步骤3:  更新用户 - >添加 - >断言 - >响应断言

第4步:保存并运行“updateusers”测试用例。 查看更新用户的响应数据。

删除方法

DELETE请求用于删除数据源中的现有记录。

从列表中删除用户。

第1步:简单控制器 - >右键单击 - >添加 - >另一个采样器 - > Http请求采样器:

  • 添加另一个HTTP请求采样器并将其命名为“deleteusers”。
  • 将方法设置为“DELETE”。
  • 输入协议为“https”,IP地址为“reqres.in”。
  • 输入API路径。
  • 将用户的详细信息添加为正文数据。

步骤2:  删除用户 - >添加 - >断言 - >响应断言

第3步 :  保存并运行“Deleteusers”测试用例。查看已删除用户的响应数据。

最后,我们可以添加不同的监听器,如“查看结果树”来结束。要添加,请右键单击并选择“侦听器”→“查看结果树”。

在这里,您可以看到每个测试用例的每个样本请求的请求和响应数据。

作为一个例子,我们为下面的一个负面测试用例编写了脚本:

注册失败

第1步:简单控制器 - >右键单击 - >添加 - >另一个采样器 - > Http采样器请求:

  • 添加另一个HTTP请求采样器并将其命名为“Register unsuccess”。
  • 将方法设置为“POST”。
  • 输入协议为“https”,IP地址为“reqres.in”。
  • 输入API路径。
  • 在POST正文数据中添加用户的详细信息。

步骤2:注册 失败 - >添加 - >断言 - >响应断言

步骤3:  保存并运行“register unsuccess”测试用例。查看注册失败用户的响应数据。

来自视图结果的响应代码来自视图结果的响应数据

上述脚本的摘要报告。

断言结果

JMeter中提供了各种报告。我们可以根据项目的需要使用它们。

使用JMeter进行API功能测试的更多相关文章

  1. JMeter - REST API测试 - 完整的数据驱动方法(翻译)

    https://github.com/vinsguru/jmeter-rest-data-drivern/tree/master 在本文中,我想向您展示一种用于REST API测试的数据驱动方法.如果 ...

  2. API功能测试如何实施(转载自测试之道 微信公众号)

    什么是API 关于定义什么的,直接维基可得: API(Application Programming Interface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定.由于近 ...

  3. 性能测试分享:Jmeter的api监控工具解决方案

    性能测试分享:Jmeter的api监控工具解决方案 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询q ...

  4. 使用Jmeter对API进行性能测试

    先补充刚才测试的部分截图余下,后续详细补充内容. API Test.jmx 如下: <?xml version="1.0" encoding="UTF-8" ...

  5. JMeter Webservice API测试计划

    Web Services Web服务被定义为旨在通过网络支持两台机器之间交互的软件系统.它被设计为具有以通常在Web服务描述语言(WSDL)中指定的机器可处理格式描述的接口. 通常,“HTTP”是最常 ...

  6. RESTful api 功能测试

    0 为什么要写测试代码 代码写好了,如果能点或者能看,开发人员一般会自己点点或看看,如果没有发现问题就提交测试:更进一步,代码写好后,运行测试代码,通过后提交测试.将流程抽象下: 功能1编码-> ...

  7. 【Jmeter】api性能测试总结

    1.前提概念 平时常用的性能测试:api性能测试+场景性能测试:今天就说一说api性能测试 2.如何进行性能测试? 需求:对某api进行性能测试,看看最大承受的并发数,分析下图表 分析: 错误思路:当 ...

  8. Jmeter 测试API接口 查看接口的幂等问题

    背景介绍: 比如一个注册接口,要求填入的手机号与DB中已有的不能重复, 如果手机号码重复,则此次注册失败,不会新增会员数据: 如果不重复,则注册成功(忽略其他因素). 但是用20个并发,同样的请求,请 ...

  9. Jmeter测试API接口,用Jmeter自动化之检查DB数据

    如上: 注册接口,会新增数据,要怎么自动化检查DB中生成的数据呢? 很简单,只需要以下几个配置元件 JSON截取器或者正则表达式截取器:目的在于取出返回消息体中的数据aa JDBC后置处理器:目的在于 ...

随机推荐

  1. android 应用程序Activity之间数据传递与共享的几种途径

    一.基于消息的通信机制 Intent ---boudle ,extraAndroid为了屏蔽进程的概念,利用不同的组件[Activity.Service]来表示进程之间的通信!组件间通信的核心机制是I ...

  2. visual studio 高级选项及配置

    visual studio 是一款强大的 IDE,所谓 IDE 即是将通过命令行(一系列复杂的参数选项)编译.链接等操作内置到 IDE 的界面按钮处. 为什么新建的工程,可以直接 #include & ...

  3. 【leetcode刷题笔记】LRU Cache

    Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...

  4. django models class 不识别问题解决方案

    目录 1. 事情起因 2. 排查经过 3. 总结 1. 事情起因 今天在写代码的时候,在django 的models目录中新增了一个pkg.py文件,里面定义了一个class, 在执行 makemig ...

  5. webpack打包APP的后端地址处理

    PC端我们用webpack打包,只需要写相对路径,发布的时候和后端接口在同一目录下即可. 但是做过APP或者混合开发的同学都知道,APP不需要发布的,如果后端地址还是用相对路径的话,可想而知,调用后端 ...

  6. 迁移学习-微调(fine-tune)的注意事项:

    选取微调形式的两个重要因素:新数据集的大小(size)和相似性(与预训练的数据集相比).牢记卷积网络在提取特征时,前面的层所提取的更具一般性,后面的层更加具体,更倾向于原始的数据集(more orig ...

  7. js的数据格式之json

    //json数据格式语法:1 数据在名称/值对中2 数据由逗号分隔3 花括号保存对象4 方括号保存数组 详情请查看:js的数据格式之json

  8. TFS自定义开发中的反射应用

    最近CM(Configuration Management) 的同事在自定义开发TFS的过程中遇到一个问题. 领导要求快速开发一个工具, 可以自动连接TFS,然后自动Check out一些word文件 ...

  9. EXPLAIN 命令

    MySQL EXPLAIN 命令详解 MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP).这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的.这条命令并没有提 ...

  10. spring扩展点之二:spring中关于bean初始化、销毁等使用汇总,ApplicationContextAware将ApplicationContext注入

    <spring扩展点之二:spring中关于bean初始化.销毁等使用汇总,ApplicationContextAware将ApplicationContext注入> <spring ...