• 14
  • 14
分享
  • Jmeter多接口测试之参数传递——软件测试圈
  • 北极 2021-11-03 13:14:55 字数 1587 阅读 1616 收藏 14

接口测试包含单接口测试和多接口测试,通过组合多个接口实现一组功能的验证称为多接口测试,单接口重在单个接口多种请求组合的响应断言,多接口重在组合不同接口,实现流程的串联和验证。多接口测试涉及到接口之间参数的传递,比如AB两个接口协同完成一个功能,A接口的响应要作为B接口的输入,此处就需要用到Jmeter的关联功能。本文提供两个接口的串联示例,展示如何应用Jmeter实现多接口的参数传递。

关联就是把应用中动态变化的数据获取到,将它保存为参数,提供给后面需要用到的地方进行使用,通过关联可以实现多接口之间的参数传递。Jmeter常用两种关联组件:

  • 正则表达式提取器

  • JsonExtractor

1.png

接口示例

接口A:输入用户名,密码创建用户,返回新增用户id

接口B:输入用户id,用户名,密码等信息实现编辑用户(B接口基于A接口返回的新增用户id实现数据修改)

正则表达式提取器

正则表达式提取器是一种后置处理器,它可以通过正则的方式提取请求中的响应数据,Jmeter的正则表达式提取器有如下选项

引用名称:存储匹配结果的变量名称,可以是一个值也可以是一组值

正则表达式:匹配的正则表达式,正则表达式里面可以有多个正则

正则贪婪模式和非贪婪模式匹配:贪婪模式会尽可能多的匹配内容,非贪婪模式会尽可能少的匹配内容,贪婪模式和非贪婪模式的区别是在正则匹配后是否有?

模板:正则表达式提取器类型,样式为:$n$,模板可自由组合,拼接组成新的字符串内容。

模板为$0$,则为整个表达式匹配到的内容;

模板为:$1$,则对应正则表达式中的第一个小括号内()匹配的内容;

模板为$2$,则对应正则表达式中的第二个小括号()匹配的内容;

模板为$1$$2$,则把2个()所匹配的内容拼接起来,$1$aa$2$拼接两个变量的内容,并在中间加上aa

匹配数字:-1代表取全部数据,0代表随机取值,1代表取第1个数据,2代表取第2个数据

缺省值:找不到匹配时的值

正则表达式提取实例

获取接口A的响应报文

1.png

基于Jmeter正则表达式提取器编写如下所示后置处理器,提取出响应报文的id

1.png

通过debugSampler查看变量的提取结果

1.png

在接口B(修改用户)中使用接口A返回(新增用户)的参数

1.png

Json提取器

Json提取器是一种后置处理器,它可以通过解析Json报文的方式提取请求中的响应数据,Jmeter的Json提取器有如下选项

变量名:存储提取的变量名字

JsonPathExpressions:JsonPath表达式

MatchNumbers:匹配的数量,0代表随机获取,1代表获取第1个数据,-1代表获取所有数据

Computeconcatenationvar(suffix_ALL):是否统计所有,即将匹配到的所有值保存为变量_ALL。

DefaultValues:没有匹配值时的提示信息

JsonExtractor提取到的值会存储在变量里,使用方法和普通变量一样,通过${}引用JsonExtractor的变量即可。JsonExtractor存储的变量名是基于提取器中变量名称扩展的,建议通过添加DebugSampler获取JsonExtractor实际存储值的变量名。

Json提取器实例

获取接口A的响应报文

1.png

基于JmeterJson提取器编写如下所示后置处理器,提取出响应报文的id

1.png

通过debugSampler查看变量的提取结果

1.png

在接口B(修改用户)中使用接口A返回(新增用户)的参数

1.png

通过上述示例可以看到,正则表达式提取器和Json提取器的处理流程是一致的,只是提取方式不同。Jmeter通过添加相应的后置处理器可以解析到请求的返回结果,并且存储为参数供后续接口使用,通过这种方式实现多请求的参数传递,从而实现接口的串联测试。


作者:duxf100

原文链接:https://www.cnblogs.com/duxf100/p/11534084.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 4) 验收测试验收测试是一种测试,客户/业务/客户使用实时业务场景测试软件。只有当所有特性和功能都按预期工作时,客户才接受该软件。这是测试的最后阶段,之后软件将投入生产。这也称为用户验收测试 (UAT)。a) 阿尔法测试Alpha 测试是组织中的团队执行的一种验收测试,目的是在向客户发布软件之前尽可能多地发现缺陷。例如,宠物保险网站在 UAT 下。UAT 团队将以用户使用真实网站的相同方式运行实时场景,例如购买保险单、购买年度会员、更改地址、宠物所有权转移。团队可以使用测试信用卡信息来处理与支付相关的场景。b) Beta 测试Beta测试是一种由客户/客户执行的软件测试。它在将产品发布到市场以...
            0 0 2650
            分享
          • Bug定位要求:基本要求:定位出bug是前端bug还是后端bug更高要求:bug所属模块、bug的代码级别(不要求)Bug定位的价值:找到BUG的本质(找到必现路径)提升开发修复BUG的效率提升自身的逻辑思维与技术能力Bug定位的时间安排:优先需要进行所有测试用例的执行,找到bug,并提交bug在不耽误执行进度的前提下,可以花费时间来尽可能定位出bugBug定位的技巧:1)逻辑分析分析所有可能,逐个排查找到最短复现路径例如:玩CF游戏,从高处落下,没有掉血的情况---bug定位:可能因素逐一列出:姿势、地势、高度...针对可能因素逐一进行分析,每次控制变量,只改变其中一个因素最终确定出影响因素...
            0 0 1000
            分享
          • 什么是bug,英文直译过来叫虫,是指程序运行过程中出现的一些问题。任何人都有自己的问题,程序也是,更何况程序是开发人员写的。日常生活中直接冲到别人面前去嚷嚷:“喂,你这里有问题!”你觉得别人会愿意搭理你吗?而如果你有礼貌一点:“你好,我发现你这块有点不妥,换个方式应该会更好”效果会大不相同。同理,测试人员的日常工作中,最主要的就是报bug,bug提交的好,能够减少沟通成本,也会尽快提高软件质量。笔者特地总结了关于报bug的一些注意事项,分享给大家,遵守这些礼仪,可以让我们汇报bug的效果锦上添花。一、注明前置条件先来看下禅道上面默认的bug模板是什么样子的:步骤:是怎么操作出这个bug的,要尽...
            0 1 2917
            分享
          • 今天的组织应该彻底了解实施有效的测试自动化策略和持续测试策略之间的关键区别。采用持续测试方法当然是一种更好的方法,并且比传统的软件测试自动化更具优势。尽管有时这两个术语是同义词,但每个术语的功能和含义存在显着差异。让我们先了解一下构建理想的连续测试方法的各种概念:持续测试不再是软件世界中的新概念。它已成为软件开发生命周期 (SDLC)不可或缺的一部分。持续的测试使组织能够在产品开发的每个阶段保持软件质量。早期测试和频繁测试有助于提高软件产品的整体竞争力。借助与移动DevOps战略保持一致的强大的持续测试方法,已经不再停留在理论阶段,这已成为现实。持续测试和DevOps在DevOps中, 持续一...
            0 0 1312
            分享
          •   死锁就是有一天你回家,拿着一把钥匙使劲往锁眼里面捅,结果钥匙断里面了,所以你就叫开锁师傅要开锁,结果锁给开死了,这就是死锁了。以上仅仅是玩笑话,以下步入正题。  什么是死锁?  要了解什么是死锁,要首先明白一点,锁是用来做什么?Java中的锁说白了,就是为了保证资源安全,确保一次仅有一个线程对共享资源进行修改。(以上仅为个人理解,如有问题,请评论讨论。)那死锁的概念就好理解了,就是有两个及以上的线程对同一个资源进行争夺,结果两个线程没有一个让步,并且没有任何的外力进行协调导致的一种僵局。  例1:马路上就只有一条道,刚好两辆车都到了,两司机开始吵架说,是我先到的,没有一个让的,而刚好这条路...
            0 0 1093
            分享
      • 51testing软件测试圈微信