利用Jmeter做接口测试(功能测试)全流程分析

2023-11-07

利用Jmeter做接口测试怎么做呢?过程真的是超级简单。

明白了原理以后,把零碎的知识点填充进去就可以了。所以在学习的过程中,不管学什么,我一直都强调的是要循序渐进,和明白原理和逻辑。这篇文章就来介绍一下如何利用Jmeter做接口测试的流程,主要针对的是功能测试。暂不涉及到自动化测试和性能测试的内容。

一把来说,主要的步骤都大差不差。

第一步:通过分析API文档和需求文档提取接口清单。

也就是说,接口测试工作人员工作的开始就是从API文档和需求文档开始的。所以进入公司的第一件事情就是要拿到API文档和需求文档来了解,来看,来分析。从其中提取接口清单的话,主要是因为API文档中有很多冗余,不必要的信息。这些信息可能对于开发人员是有用的,但是对于我们测试人员是没有用的,所以要去除冗余,提取关键信息。

那么怎么提取呢?方法也很简单,从功能模块和方法模块对API文档中的内容进行提炼,提炼的关键是接口三要素:url+方法+参数+返回值。我的建议是可以先将所有的url提取出来,基本上一个url就是对应一个接口的,这样一条线把整体拎起来,就感觉混乱的局面清晰多了。

当然工作中,有的时候我们是可以直接拿到接口清单的,因为清单这个事情一个团队做一份就好了,并不是说要每个人都做一份。但是我们自己得会,得有这个能力。之前看到过一个面试题,问的是,如果没有API文档,怎么做接口测试?

其实问的就是如果没有API文档,应该怎么提取接口清单的问题。很简单,根据需求文档和原型图来提取。有的公司不正规,确实是没有API文档的。或者有的公司API文档写的不规范,那提取的时候,就很考验测试人员的经验和能力了。所以如果能找到遵循restful风格写的优秀API文档,那就好了,提取的时候很方便。

第二步:针对接口清单,做单接口测试和关联接口测试。

在实际测试过程中,单接口测试和关联接口测试的时间是不一样的,这涉及到业务逻辑测试和功能点测试等。但是在测试的时候,他们的逻辑和方法是类似的。

当然这里主要介绍的是单接口测试,因为单接口测试时会考虑各种可能的情况,而关联接口测试一般是建立在单接口没有问题的前提下的。换个角度来说,就相当于是两个层次,单接口测试是基础,而关联接口测试是拔高。

那么具体应该怎么做呢?比如我们这里已经选定而来某一个接口来测试。

首先,根据选定的接口来搭建测试框架。

接口不是什么大不了的事情,无非就是url、方法、参数、返回数据这四块。这样就意味着,一个接口的框架是固定的,只不过每次传输的数据和返回的数据可能会不一样而已。所以我们要做的第一步就是搭建测试框架。

那么怎么搭建呢?这里就要用到从API文档中整理出来的接口清单和Jmeter了。从接口清单里,可以拿到当下接口的url+方法+参数+预期返回数据。这就是我们搭建测试框架的依据。接下来用Jmeter搭建。

首先需要打开Jmeter,然后基于测试计划,创建线程组,基于线程组创建HTTP请求。考虑到单接口测试,一个框架,要测试N多个数据,而且后面的接口可能也要用到同样的ip地址、同样的content-type,所以一般会先创建一个HTTP请求默认值,将一些可能会重复用到的信息填进去,比如说端口号、协议之类的。如有必要还需要添加HTTP信息头管理器,放一些user-agent、content-type等内容。

好的,有了这两个基础就可以来创建HTTP请求。在新的请求里,已经填写的端口号呀、ip地址呀之类的就无需填写了,只需要填写方法之类的即可。那么搭建框架在哪里搭建呢?一般会考虑para或者body里。比如说,要提交一段json格式的数据,那么就要用body(消息体)来提交,如下图所示。

在这里插入图片描述

将从接口清单里拿到的json数据填写到消息体数据里,然后将需要不断传入的数据进行参数化设置,那搭建测试框架就算是完成了。接下来只需要把数据一条一条传入进行测试即可。

基于当前的线程组或者请求创建CSV数据文件配置组件。如果这份数据只有这一个请求会用,那么就基于请求创建即可。如果这份数据会被这个线程组里的多个请求使用,那么就基于线程组创建。

创建了以后就需要填入文件了呢?可是文件在哪里呢?这个时候就要稍微停一下jmeter的操作,先去针对当前接口设计测试用例并形成有关文档了。有关于功能接口测试的用例设计,我们之后会专门用一篇文章来介绍,这里先带过。这是因为设计测试用例是做测试过程中最核心的一步。

在测试用例设计完之后,可以将其保存在一个txt文档里,采用utf-8编码,保存到Jmeter脚本的同一父目录下。然后按照上面那篇文章里的设置方法进行设置即可,注意路径可以采用相对路径,便于数据文件的拷贝和使用。

csv组件设置好以后,数据源有了,变量名有了,变量名的赋值也有了,接下来就只剩引用参数就可以了。在测试框架里需要引用参数的地方引用,引用的格式是${参数名}。到这里,针对于某一个接口的测试工作就准备完成了。

然后在Jmeter里面添加查看结果树组件,执行请求,依次查看结果。看一看返回的数据和我们的预期结果是否一致,不一致,那可能就是一个bug。

做一个小小的总结吧,用jmeter做功能接口测试,其实很简单的。逻辑和原理都是类似的,如果遇到新的项目,可能说会用一些新的组件而已,那百度一下几分钟的事情。在学习软件测试的时候,最重要的就是不要怂,不要看起来说怎么要学的东子这么杂这么多,只要能够拎出其中的线索和主干,然后把一些零碎的点给组装上去,就会感觉,哇,忽然之间,好有条理。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

在这里插入图片描述

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

利用Jmeter做接口测试(功能测试)全流程分析 的相关文章

  • 用Python实现高效数据记录!Web自动化技术助你告别重复劳动!

    自动化关键数据记录 简介 关键数据记录是 Web 自动化测试中的关键部分 它们提供了关于系统行为和执行过程的详细信息 有助于验证用例的正确性 排查问题和确保应用程序的质量 行为日志 行为日志是一种用于记录系统或应用程序的操作和事件的技术 它
  • JMeter 将变量设置为随机选项

    我一直在使用 JMeter 我知道 Random and RandomString功能 我需要选择一个随机选项并将其存储在变量中 因为它将用作多个调用的参数路径的一部分 例如 http www example com pets random
  • Jmeter在执行过程中抛出“socketException:连接重置”错误

    我们要实现的目标是 500 个并发用户 我们尝试对 3 台机器上的 100 个用户进行测试 而且它运行得很好 没有任何错误 当我尝试使用相同数量的机器对 150 个或更多用户运行测试时 我开始收到以下响应代码 响应代码 非 Http 响应代
  • Jmeter 而控制器似乎没有将变量评估为数字

    我正在编写一个 jmeter 脚本 该脚本会不断加载数据 直到表达到指定的大小 我有一个 while 循环 其中有一个 HTTP 采样器来加载数据 然后是另一个带有 XPath 后处理器的 HTTP 采样器来检查表大小 它们调用两个不同的
  • 使用extentreports获取jmeter测试结果

    对于任何使用 jmeter 进行 api 功能测试的人来说 报告并不是那么好 有没有人用过类似的东西http extentreports com http extentreports com 显示他们的测试结果 关于更好地显示测试结果的其他
  • 使用Java代码进行Jmeter分布式测试

    我能够使用 Java 代码运行 Jmeter 但如果我想做与分布式测试相同的操作 那么如何在 Java 代码中添加远程引擎 这是一个sample http alvinalexander com java jwarehouse jakarta
  • JMeter:为单个用户触发多个并发 HTTP 请求

    我有一个带有线程组和 Cookie 管理器的 JMeter 负载测试脚本 线程组中的用户首先使用HTTP采样器登录来获取cookie 然后 循环控制器触发交错采样器 该采样器在几个向服务器发出查询的 HTTP 采样器之间交替 现在 我希望交
  • Jmeter JSR223 Sampler - 无法将数据写入 CSV 文件

    我正在使用 Jmeter v4 0 r1823414 根据这个答案 https stackoverflow com questions 50820389 unable to set incremental variable in jmete
  • 如何让Jmeter使用CSV数据作为GET参数?

    我想在 JMETER 中实现以下目标 Jmeter加载带有id号的CSV文件 Jmeter 中的每个用户 线程都会选择一个 id 号并将其添加到其 HTTP 请求中 例如http www testsite com test php id x
  • 如何通过java编码生成Jmeter仪表板报告。 (不是 Windows 或 shell 命令)

    我必须通过java编码生成Jmeter仪表板报告 在java代码下面 我用来生成正常的jmeter报告 我必须生成一个 通过java的仪表板报告 public class JMeterFromExistingJMX public stati
  • 负载测试kafka消费者

    我正在编辑问题 因为我认为它不够清楚 如何对我的 kafka 消费者进行负载测试 我看过很多关于 apache kafka 负载测试的文章 但没有一篇关于消费者负载测试的文章 对于前 我在jsr223中编写了jmeter kafka生产者测
  • 将 JMeter 报告转换为 JUnit 报告

    如何将 JMeter 报告转换为 JUnit 报告 有些工具 例如 VSTS 知道如何集成 JUnit 报告 但不知道如何集成 JMeter 报告 尽管它们可以运行 JMeter 我创建了一个 XSLT 将 XML JMeter 报告转换为
  • JMeter:如何访问 ForEach 控制器内的循环计数器?

    我在 JMeter 中有一个 ForEach 控制器 如何访问此控制器内循环的计数器 通过变量 然后使用它来创建新变量 Put 计数器配置元素 http jmeter apache org usermanual component refe
  • 是否可以将 jmeter 变量包含在从 CSV 获取的值中?

    我有一个 csv 文件 其中包含名为 query 的列 我要查询的全部内容之一是 user id list list 我想要做的是让 jMeter 在将查询传递到 HTTP Sampler 时覆盖查询中的 list 和 id 变量 其中变量
  • 使 .jmx 文件在 Windows 10 上使用 jmeter GUI 默认打开(双击文件)

    当我双击它时 我试图让我的 Windows 10 使用 jmeter GUI 打开 jmx 文件 我使用 apache jmeter 3 2 目前 为了打开 jmx 文件 我打开 jmeter jar apache jmeter 3 2 b
  • 在 JMETER 中循环遍历 JSON 响应 +

    我正在使用 Jmeter 进行性能测试并卡在以下点 我从 Webapi 收到 JSON 响应 如下所示 PersonInfoList Person 0 id 1 name Steve 1 Person id 2 name Mark 我需要根
  • JMeter:tearDown Thread Group的目的是什么

    我想了解JMeter中tearDown Thread Group的实际用法 在什么场景下可以使用tearDown Thread Group 根据提供的帮助JMeter 拆解线程组 http jmeter apache org userman
  • 手动设置Jmeter主目录

    根据这个帖子 http jmeter 512774 n5 nabble com Automatic generation of aggregate reports td4281459 html Jmeter home被自动检测到 有没有办法
  • 分布式模式下的 JMeter 摘要报告

    我正在分布式模式 2个从站 主站 下运行Jmeter性能测试 在我的测试脚本中我配置了摘要 报告应将一些数据保存到 csv 文件 此文件位置配置有固定名称 reports summary csv 值 当我从主站成功连接到两个从站时 测试在从
  • Jmeter 和 Bitbucket 服务器负载测试

    我是 Jmeter 的新手 我有一个本地托管的 Bitbucket 服务器 有时 当 Bamboo plan 触发并发 git 克隆操作时 会发现 Bitbucket 服务器变得缓慢 无响应 我必须重新启动服务 我想通过对另一个本地创建的

随机推荐

  • [H5] Canvas画布的使用详解:

    Canvas 序言 在渲染复杂的动效 把数据可视化图形显示 游戏场景等需求 都会用canvas技术 比dom操作性能更高 特点 H5新增的图形标签 通过提供的JavaScript函数绘制各种图表或利用算法实际非常华丽的动效 在以前是用Fla
  • 解决AttributeError: 'set' object has no attribute 'items'错误

    出现这个问题 原因可能是定义的header有问题 header key value 如果是直接在请求数据中复制 很有可能会忽略键和值的冒号
  • 计算机二级换c语言,09年计算机二级C语言辅导:C技巧(内存分配:更换策略,不要为难内存)...

    09年计算机二级C语言辅导 C技巧 内存分配 更换策略 不要为难内存 分类 计算机等级 更新时间 2008 11 21 来源 教育联展网 在32位机上 64位也是一样的 但是空间大很多 一个进程可以分配到4GB的虚拟内存 当然 其中2G给了
  • 应用 Valgrind 定位 Linux 程序的内存问题

    参考文章 Valgrind学习总结 应用 Valgrind 发现 Linux 程序的内存问题 Valgrind介绍 Valgrind是一套Linux下 开放源代码 GPL V2 的仿真调试工具的集合 Valgrind由内核 core 以及基
  • [Typescript]基础篇之 String 对象

    基础篇之 String 对象 String 对象简介 与 string 区别 String 定义 属性 方法 属性的使用 方法的使用 lastIndexOf localeCompare replace search slice split
  • matlab学习笔记1

    1 常见用法 1 创建匿名函数 返回该函数句柄 输入参数 表达式 fun x 100 x 2 x 1 2 2 1 x 1 2 定义了一个函数 2 给函数名取别名 函数名 还有其他用法 可参考 https blog csdn net kaev
  • Altium Designer 20中创建网络类、隐藏网络连线

    我们平时在PCB布局的时候不需要电源和地的连线 我们只需要信号的流向 所以我们需要添加一个电源类 来隐藏电源和地的连线 那么 我们如何创建一个类呢 Step 01 使用快捷键DC 调出对象类浏览器 Step 02 Net Classes右击
  • 3W字长文总结PyTorch中常用的函数

    quad quad PyTorch基本函数更新 quad q
  • 程序开发性能调优之如何降低CPU使用率。

    单核的CUP就100 双核的就60 这谁受的了 咋调都不行 我把所有的效果都关了 还不行 连声音都关了 就剩个窗口模式了 他照样100 咋整啊 改用静态的方式的确是能够大大降低数据库的存取频率 进而降低CPU的使用率 依你所表述的情况来看
  • 谈谈softmax中常出现的温度系数 T (τ)

    2022 4 1 今天再回首来看这篇文章 发现自己写的非常局限 并且基本是在拾人牙慧 缺乏自己的思考与提炼 在阅读了更多文章和做实验进行一些思考之后 重写了这篇博客 主要从对比学习 知识蒸馏 分类训练来谈谈自己对于温度系数的理解 前因 许多
  • [前端]ztree树形菜单在dialog中应用时遇到的坑

    前言 好久没更新了 最近工作时遇到这样一个坑 可苦恼死我了 如果你们遇到同样的问题 可参考一下 同一个组件 也就是dialog中含有ztree 多个地方同时调用 第一次在一个页面打开 ztree可以正常渲染出数据 在第二个页面打开后 ztr
  • (2)STM32+ESP8266+手机网络助手实现AP模式通信

    文章目录 1 实验目的及资源 1 1 目的 1 2 资源 2 串口调试wifi模块 2 1 接线 2 2 AT指令测试 2 3 与手机app通信 3 STM32通过wifi与手机app通信 3 1 使用资源 3 2 串口3初始化 3 3 e
  • git pull origin master 时, 遇到 fatal: refusing to merge unrelated histories 230626

    git pull origin master 时 遇到 fatal refusing to merge unrelated histories 230626 解决办法 加 allow unrelated histories allow un
  • 设计模式(1)-工厂模式

    工厂模式可以将其分为三种 1 简单工厂模式 2 工厂方法模式 3 抽象工厂模式 下面我们一个一个来说 一 简单工厂模式 简单工厂模式 或称静态工厂方法模式 是类的创建模式 简单工厂模式是由一个 工厂对象根据收到的消息决定要创建哪一个类的对象
  • 利用GitHub Actions实现将GitHub代码同步到Gitee

    利用 Github Action 实现将 Github 上面的代码同步到 Gitee 中 同步的原理是利用 SSH 公私钥配对的方式拉取 Github 仓库的代码并推送到 Gitee 仓库中 所以我们需要以下几个步骤 生成 SSH 公私钥
  • 数组实现队列(详细)

    我们都知道 队列是一种先进先出的数据结构 每当有人问你队列是什么 你的回答就是 一种先进先出的数据结构 当然这样的回答也是完全没有错的 它就是一种先进先出的数据结构 为什么我们不能描述的多一点呢 更详细一点 下面我们就来详细的描述一下队列
  • 纠错输出编码(Error-Correcting Output Codes: ECOC)

    最近在利用Error Correcting Output Codes做论文 发现网上没有一种讲的比较清楚的 那我今天就花点时间大致上讲一下这种方法 最初提出ECOC方法的是如下的文章 Solving Multiclass Learning
  • 简述sql注入中万能密码的原理

    进行SQL注入的原理就是将特殊输入作为参数传入web程序 从而欺骗服务器执行信息查询功能 而万能密码则是利用sql库中运算符的优先级使得所传入数据库查询语句恒为true的SQL语句 1 用户登录时 后台执行的数据库查询操作 SQL语句 是
  • GIT 常用命令整理

    常用git命令 欢迎大家参考 1 git介绍 git与svn一样都是基于仓库来管理代码的 不过git的仓库在客户端和服务端都是存在的 我们通常都是在本地进行代码commit 然后再提交到远端服务器仓库的 而svn的话 差不多相当于大家一群人
  • 利用Jmeter做接口测试(功能测试)全流程分析

    利用Jmeter做接口测试怎么做呢 过程真的是超级简单 明白了原理以后 把零碎的知识点填充进去就可以了 所以在学习的过程中 不管学什么 我一直都强调的是要循序渐进 和明白原理和逻辑 这篇文章就来介绍一下如何利用Jmeter做接口测试的流程