热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Jmeter接口测试实战-数据传递

Jmeter接口测试实战-数据传递接口与接口之间没有关联的测试是缺乏意义和没有灵魂的,只有数据在不同接口之间传递才能勾画出业务场景重要的链路.我们

Jmeter接口测试实战-数据传递

接口与接口之间没有关联的测试是缺乏意义和没有灵魂的,只有数据在不同接口之间传递才能勾画出业务场景重要的链路.

我们用较为通用的http/https协议,接口普遍返回json方式为例.


举例场景:

比如电商平台,用户登录后产生令牌token, 其他接口拿着这个token判断用户是否登录才能进行相关操作, 当用户将商品加入购物车支付完成后,系统按照规则生成订单号, 同时会在该用户的全部订单列表中查到全部订单和相应状态.


要点分析:

1. login接口登录后生成token

2. pay支付接口拿到token正确的情况下,支付完成后生成订单号

3. orderList 订单列表接口需要有token和订单号等为入参必填项,查出该用户的所有订单状态


有了Idea就开始动手吧!

手头有三个接口,来模拟上面场景,同时也为了演示方便

  • login登录 //生成token

  • 创建用户 //生成用户id

  • 删除用户 //拿到创建用户接口id, 并删除该用户

前提条件:

需要使用Json取样器, Jmeter默认没有提供, 可用plugin-manager安装, 也可以去jmeter官网把jar包下载后放在%jmeter_home%/lib/ext/目录下,重启jmeter生效.


第一步: 在线程组内新建三个sampler

登录接口

Jmeter接口测试实战-数据传递

  • 入参方式采用json, 在http信息管理头里设置

  • 用户名密码登录获取token,用户名和密码用变量, 在用户自定义变量中赋值


创建用户接口

Jmeter接口测试实战-数据传递

  • 同样采用json 方式入参

  • 拿到login接口的token后, 生成用户唯一id


通过正则表达式提取token

Jmeter接口测试实战-数据传递

正则为什么要这样写呢?                  

来看下login执行后的结果树就明白了

Jmeter接口测试实战-数据传递

accessToken在data节点下面,出于能够准确寻找到节点


和beanshell结合传递token

Jmeter接口测试实战-数据传递

beanshell 我们在之前的推文中已经介绍过很多次了,有哪些内置对象, 如何定义可以在jmeter 官方文档中找到.


再来看下http信息管理器中的设置

Jmeter接口测试实战-数据传递

这样在线程组中的每个接口都能使用token了


好了我们执行一下登录和新增用户接口,看下新增接口返回的json, 便于我们用json取样器中写节点结构

Jmeter接口测试实战-数据传递

用Json path Tester方式, 查看新增接口返回一串json树,  其中有我们用随机数新建的用户名和系统生成的用户id, 这个id是我们要传给下一个接口删除用户要使用的.

如何提取这个id呢? 用json取样器或者正则表达式都是不错的选择, 今天就用json取样器来演示.

Jmeter接口测试实战-数据传递

Names of created variables: 将这个传递给下一个要使用的接口的变量名称

Json path expressions: 就是从json中提取的字段值

$. 注意这个美元符号后面有一个点不能丢, 这样的组合表示根目录, data是根节点, id在data节点下面

match no:0随机;n取第几个匹配值;-1匹配所有,后续引用用 变量名_N 取第N个值

default values: 缺省值,匹配不到值的时候取该值


删除用户接口

Jmeter接口测试实战-数据传递

把json取样器中的id传给删除接口,一整个数据传递链就设置完成了.

再来看下目录结构

Jmeter接口测试实战-数据传递

看下执行结果-新增接口

Jmeter接口测试实战-数据传递

结果树-删除

Jmeter接口测试实战-数据传递


新增接口里系统生成的id尾号9984

delete接口里id=尾号9984 作为入参传递给该接口, 两个接口id一致, 数据传递无误

以上步骤组成了一整套数据链传递过程, 让接口测试更贴近业务场景需求, 使数据赋予了更多的意义.


今日推荐阅读文章精选推荐

为什么要做接口测试

JMeter数据库操作

Jmeter接口测试-正则表达式

JMeter中文返回乱码

Jmeter接口测试-参数化

JMeter接口测试-基础

测试-感想


咨询工作加微信

Jmeter接口测试实战-数据传递

扫描二维码


欢迎自荐和推荐, 需要的微信推送简历!

请猛戳下面二维码了解更多

Jmeter接口测试实战-数据传递



推荐阅读
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • Maven Web项目创建时JSP文件常见错误及解决方案
    Maven Web项目创建时JSP文件常见错误及解决方案 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 微信公众号推送模板40036问题
    返回码错误码描述说明40001invalidcredential不合法的调用凭证40002invalidgrant_type不合法的grant_type40003invalidop ... [详细]
  • MySQL 5.7 学习指南:SQLyog 中的主键、列属性和数据类型
    本文介绍了 MySQL 5.7 中主键(Primary Key)和自增(Auto-Increment)的概念,以及如何在 SQLyog 中设置这些属性。同时,还探讨了数据类型的分类和选择,以及列属性的设置方法。 ... [详细]
  • 本文介绍了如何在 macOS 上安装 HL-340 USB 转串口驱动,并提供了详细的步骤和注意事项。包括下载驱动、关闭系统完整性保护、安装驱动以及验证安装的方法。 ... [详细]
  • 在本文中,我们将详细介绍如何构建一个用于自动回复消息的XML类。当微信服务器接收到用户消息时,该类将生成相应的自动回复消息。以下是具体的代码实现:```phpclass We_Xml { // 代码内容}```通过这个类,开发者可以轻松地处理各种消息类型,并实现高效的自动回复功能。我们将深入探讨类的各个方法和属性,帮助读者更好地理解和应用这一技术。 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 在日常的项目开发中,测试环境和生产环境通常采用HTTP协议访问服务。然而,从浏览器的角度来看,这种访问方式会被标记为不安全。为了提升安全性,当前大多数生产环境已经转向了HTTPS协议。本文将详细介绍如何在Spring Boot应用中配置SSL证书,以实现HTTPS安全访问。通过这一过程,不仅可以增强数据传输的安全性,还能提高用户对系统的信任度。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • 能够感知你情绪状态的智能机器人即将问世 | 科技前沿观察
    本周科技前沿报道了多项重要进展,包括美国多所高校在机器人技术和自动驾驶领域的最新研究成果,以及硅谷大型企业在智能硬件和深度学习技术上的突破性进展。特别值得一提的是,一款能够感知用户情绪状态的智能机器人即将问世,为未来的人机交互带来了全新的可能性。 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
author-avatar
不理坏女孩
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有