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

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

正则表达式提取器

Json Extractor

 

接口示例

接口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的响应报文

 

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

 

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

 

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

 

Json提取器

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

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

Json Path Expressions:Json Path 表达式

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

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

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

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

Json提取器实例

获取接口A的响应报文

 

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

 

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

 

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

 

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

作  者:Testfan Kitty

出  处:微信公众号:自动化软件测试平台

版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出文章链接

最新文章

  1. JS事件-让网页交互
  2. SharePoint 2013 使用JavaScript对象模型配置智能提示
  3. iOS Class 使用NSProxy和NSObject设计代理类的差异
  4. MFC---static控件加载图片
  5. Slave_SQL_Running: No mysql同步故障解决方法
  6. NOJ 1074 Hey Judge(DFS回溯)
  7. iphone的手势与触摸编程学习笔记
  8. PHP字符串处理常用方法
  9. matlab 学习
  10. bootstrap模态框垂直居中
  11. 练习3.20 a 将中缀表达式转换为后缀表达式
  12. ThreadLocal用例之周期为一次请求的变量
  13. Discuz! 7.x 反射型xss
  14. Eclipse 那些小技巧(值得收藏)
  15. .Net语言 APP开发平台——Smobiler学习日志:如何在手机上快速实现CandleStickChart控件
  16. Yarn集群的搭建、Yarn的架构和WordCount程序在集群提交方式
  17. 常用的CMD & Linux命令
  18. python中的深拷贝和浅拷贝
  19. android studio设置imageview显示图片
  20. 小程序https请求,http网站升到https

热门文章

  1. PHP $_SERVER超全局变量
  2. 小程序报错:出现脚本错误或者未正确调用 Page()的解决办法
  3. JobHandle和依赖项
  4. 应用安全 - PHP - CMS - EmpireCMS - 漏洞 - 汇总
  5. 完全理解js中的&&和||
  6. python r r+;w w+;a a+;以及加不加b区别
  7. HDU 1284 钱币兑换问题 (动态规划 背包方案数)
  8. Kick Start 2019 Round A Parcels
  9. MySQL日期时间函数大全
  10. Luogu P4436 [HNOI/AHOI2018]游戏