使用JMeter进行API功能测试
使用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:创建新的测试计划 - >右键单击 - >添加 - >线程 - >线程组
- 将线程数(用户)设置为10 - 我们将有10个用户执行测试计划。
- 将Ramp-up周期(以秒为单位)设置为10 - Ramp-up周期告诉JMeter在处理下一个用户之前的延迟时间。
- 将循环计数设置为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功能测试的更多相关文章
- JMeter - REST API测试 - 完整的数据驱动方法(翻译)
https://github.com/vinsguru/jmeter-rest-data-drivern/tree/master 在本文中,我想向您展示一种用于REST API测试的数据驱动方法.如果 ...
- API功能测试如何实施(转载自测试之道 微信公众号)
什么是API 关于定义什么的,直接维基可得: API(Application Programming Interface,简称:API),又称为应用编程接口,就是软件系统不同组成部分衔接的约定.由于近 ...
- 性能测试分享:Jmeter的api监控工具解决方案
性能测试分享:Jmeter的api监控工具解决方案 poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询q ...
- 使用Jmeter对API进行性能测试
先补充刚才测试的部分截图余下,后续详细补充内容. API Test.jmx 如下: <?xml version="1.0" encoding="UTF-8" ...
- JMeter Webservice API测试计划
Web Services Web服务被定义为旨在通过网络支持两台机器之间交互的软件系统.它被设计为具有以通常在Web服务描述语言(WSDL)中指定的机器可处理格式描述的接口. 通常,“HTTP”是最常 ...
- RESTful api 功能测试
0 为什么要写测试代码 代码写好了,如果能点或者能看,开发人员一般会自己点点或看看,如果没有发现问题就提交测试:更进一步,代码写好后,运行测试代码,通过后提交测试.将流程抽象下: 功能1编码-> ...
- 【Jmeter】api性能测试总结
1.前提概念 平时常用的性能测试:api性能测试+场景性能测试:今天就说一说api性能测试 2.如何进行性能测试? 需求:对某api进行性能测试,看看最大承受的并发数,分析下图表 分析: 错误思路:当 ...
- Jmeter 测试API接口 查看接口的幂等问题
背景介绍: 比如一个注册接口,要求填入的手机号与DB中已有的不能重复, 如果手机号码重复,则此次注册失败,不会新增会员数据: 如果不重复,则注册成功(忽略其他因素). 但是用20个并发,同样的请求,请 ...
- Jmeter测试API接口,用Jmeter自动化之检查DB数据
如上: 注册接口,会新增数据,要怎么自动化检查DB中生成的数据呢? 很简单,只需要以下几个配置元件 JSON截取器或者正则表达式截取器:目的在于取出返回消息体中的数据aa JDBC后置处理器:目的在于 ...
随机推荐
- android 应用程序Activity之间数据传递与共享的几种途径
一.基于消息的通信机制 Intent ---boudle ,extraAndroid为了屏蔽进程的概念,利用不同的组件[Activity.Service]来表示进程之间的通信!组件间通信的核心机制是I ...
- visual studio 高级选项及配置
visual studio 是一款强大的 IDE,所谓 IDE 即是将通过命令行(一系列复杂的参数选项)编译.链接等操作内置到 IDE 的界面按钮处. 为什么新建的工程,可以直接 #include & ...
- 【leetcode刷题笔记】LRU Cache
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the fol ...
- django models class 不识别问题解决方案
目录 1. 事情起因 2. 排查经过 3. 总结 1. 事情起因 今天在写代码的时候,在django 的models目录中新增了一个pkg.py文件,里面定义了一个class, 在执行 makemig ...
- webpack打包APP的后端地址处理
PC端我们用webpack打包,只需要写相对路径,发布的时候和后端接口在同一目录下即可. 但是做过APP或者混合开发的同学都知道,APP不需要发布的,如果后端地址还是用相对路径的话,可想而知,调用后端 ...
- 迁移学习-微调(fine-tune)的注意事项:
选取微调形式的两个重要因素:新数据集的大小(size)和相似性(与预训练的数据集相比).牢记卷积网络在提取特征时,前面的层所提取的更具一般性,后面的层更加具体,更倾向于原始的数据集(more orig ...
- js的数据格式之json
//json数据格式语法:1 数据在名称/值对中2 数据由逗号分隔3 花括号保存对象4 方括号保存数组 详情请查看:js的数据格式之json
- TFS自定义开发中的反射应用
最近CM(Configuration Management) 的同事在自定义开发TFS的过程中遇到一个问题. 领导要求快速开发一个工具, 可以自动连接TFS,然后自动Check out一些word文件 ...
- EXPLAIN 命令
MySQL EXPLAIN 命令详解 MySQL的EXPLAIN命令用于SQL语句的查询执行计划(QEP).这条命令的输出结果能够让我们了解MySQL 优化器是如何执行SQL 语句的.这条命令并没有提 ...
- spring扩展点之二:spring中关于bean初始化、销毁等使用汇总,ApplicationContextAware将ApplicationContext注入
<spring扩展点之二:spring中关于bean初始化.销毁等使用汇总,ApplicationContextAware将ApplicationContext注入> <spring ...