本次记录首次使用Jmeter设计Web接口测试的过程,相关设置参考自官方文档
,Jmeter版本为当前最新版本5.2.1。

文章目录

  • 1. 首先介绍一下背景
  • 2. 下载运行
  • 3. 举个栗子
    • 3.1 从模板创建测试计划

1. 首先介绍一下背景

看到这篇文章的应该已经知道JMeter是做什么的,一款压测工具。功能强大,性能优异,诸多优点不再赘述。这里介绍几点基本概念,便于读者对Jmeter在Web接口测试的使用有个大致全面的了解。

说明:本文只是作为建立最基本的Web接口测试计划,并不是全面探讨JMeter所有功能的,所以涉及的操作也只是为了Web接口测试能够运行。本文中尽量使用官方文档中的概念,如果描述不清或有误,请留言讨论,或自行查阅官方文档。

使用JMeter我们是用来建立测试计划,JMeter中以测试计划(test plan)为构建测试的基本单位,每个界面中只能显示一个测试计划,我们暂且将一个项目的测试都放到一个计划中。一个测试计划中会有很多条测试流程,JMeter中流程对应的就是线程组(Thread Group)。线程组是可以设置很多属性的,

流程之间的顺序是可以互不干扰的,当然也可以是顺序执行的。每个流程之内的步骤顺序执行的。例如:登录->查询->下单->发货->收货->评价->商家回复。登录>收货>登出。 流程可长可短。
流程中关键的步骤,登录/查询等都是一个个http(s)请求,这个在JMeter中对应的是采样器中的Http请求。
而每个请求的请求参数、类型、请求头、cookie等是不一样的。这些在JMeter中可以使用配置元件来设置。可以添加多个,如果有多个配置,后面的会覆盖前面的。
在每个请求前后可能还要进行参数的处理,JMeter中提供了前置处理器(Pre Processors)和后置处理器(Post Processors)来完成这些操作。前置处理器中常用的就是 JSR223前置处理器,这个处理器是用来替换BeanShell PreProcessors的。官方文档中有如下建议,因此我们使用JSR223处理器来执行脚本。脚本语言为groovy。

Since JMeter 3.1, we advise switching from BeanShell to JSR223 Test Elements (see JSR223 section below for more details), and switching from __Beanshell function to __groovy function.
从JMeter 3.1开始,我们建议从BeanShell切换到JSR223测试元素(有关更多详细信息,请参见下面的JSR223部分),并从__Beanshell函数切换到__groovy函数。

这里可以执行脚本来设置JMeter属性和变量等。而后置处理器常用的有JSON提取器(JSON Extractor)、正则表达式提取器(Regular Expression Extractor)、JSR223后置处理器等。
在设置值的过程中会发现可能很多请求很有相同的请求头参数,token等。这个在JMeter中可以使用JMeter属性(JMeter properties)和JMeter变量(JMeter variables)
来统一储存和使用。在组件中使用${USER}来引用变量的值,在脚本中则使用来设置和获取用户变量。

vars.get("HOST");
vars.put("MSG","Successful");

官方文档中这么说:
Some test plans need to use different values for different users/threads. For example, you might want to test a sequence that requires a unique login for each user. This is easy to achieve with the facilities provided by JMeter.翻译过来:一些测试计划需要针对不同的用户/线程使用不同的值。例如,您可能需要测试一个序列,该序列要求每个用户都具有唯一的登录名。使用JMeter提供的功能很容易实现。
例如:使用csv文件存储用户名和密码。使用配置元件中的CSV Data Set Config读取并保存为JMeter变量
JMeter variables are local to a thread, but can be used by all test elements (not just Beanshell).
中文:JMeter变量是线程本地的,但可以用于所有测试元素(不仅限于Beanshell)。

共享变量 如果想在线程组之前共享变量可以使用JMeter Properties储存。

If you need to share variables between threads, then JMeter properties can be used:
如果需要在线程之间共享变量,则可以使用JMeter属性

请求外层可以添加条件判断,循环执行等,JMeter提供逻辑控制器实现(Logic Controller)。

以上就是JMeter的基本用法,使用以上组件即可编排常规的Web接口测试计划。

2. 下载运行

在官方网站
上下载二进制文件包,
解压后,运行bin/jmeter.bat 可以直接运行GUI界面程序。默认在此之前系统已经设置好了jdk相关环境变量,如果没有请自行百度jdk安装及环境变量设置。

注意:解压的目录不要包含空格和中文,否则影响后续使用。官方文档中有说明“There can be problems (especially with client-server mode) if the directory path contains any spaces.
中文:如果目录路径包含任何空格,则可能会出现问题(尤其是在客户端-服务器模式下)。” 虽然没有说中文问题(毕竟人家是英语国家开发的),但在使用过程中发现在首次创建使用模板时会出错。

3. 举个栗子

3.1 从模板创建测试计划

以下的步骤仅保证使用的连续性,不保证实际数据的连续性。图片中所填写的值都是示例,组合在一起并不能实际运行,毕竟这是测试计划,最终需要依赖具体的项目的,请谅解。当然在最后我会将最终的成果截图展示,可以比照着建立你自己的测试计划。

从模板创建测试计划不是必须的但是如果工作中需要频繁创建的话,使用模板是个不错的选择。除了默认的一些模板外,JMeter也支持自定义模板。本次测试使用Advanced Web Test Plan。

选择图中小图标或菜单 File → Templates…后会弹出文本框,在下拉列表中可以选择具体的模板。

创建完后是这个样子:

根据前文,我们知道这里在测试计划最前面创建了5个配置元件(Config Element) ,分别是:

  • HTTP Request Defaults:用来为之前的http请求设置默认参数。
    红框对应的值分别为:协议、主机(host)、端口、路径、字符集编码。
  • User Defined Variables:用户定义的变量。储存在vars中。可以通过${host}取出host属性的值或者在脚本中vars.get(”host“)取出。在配置元件中可以使用${}引用这里定义的变量。
  • HTTP Cookie Manager:管理cookie。一般登录凭证依赖cookie的需要使用。由于我们项目仅在请求头中加token,需要这个,所以可以删除。

这里提一点,所有的组件都是可以随时禁用启用的,也就是说想临时改变流程中的某些步骤,不用删除。禁用之后就不再生效。

  • HTTP Header Manager:请求头管理,这里默认有5个值,我们可以添加需要的值。
  • Login Data: CSV Data Set Config,读取csv文件中保存的用户密码。路径可以使用前面的用户自定义变量中的值。

    下面是个一个线程组:这里模拟的是用户登录,这里也有一个请求参数元件,设置此流程下的参数。

    流程为:首页(HomePage)->THinkTIme(模拟停留页面时间)->Changes请求->THinkTIme(模拟停留页面时间)->BugDetailPage请求->Login登录(默认登录请求组件是禁用状态)。

    最后在View Results Tree中查看执行结果

    以下截图展示我自己实际写的一个例子吧。
    好吧,刚刚我发现我之前写的例子因为没有改名称被刚刚为了演示新创建的测试计划覆盖了。。。
    重新写。。。
    下面是完整测试计划的截图。











上图就是我创建的小例子的所有结构。看了前面的文章应该能看懂。有问题请留言。

JmeterWeb接口测试使用指南相关推荐

  1. 【接口测试】FitNesse中文指南

    原文来自FitNesse官方网站:http://fitnesse.org/FitNesse.UserGuide#introduction 作者:Robert C. Martin, Micah D. M ...

  2. API测试| 了解API接口测试| API接口测试指南

    什么是API? API是一个缩写,它代表了一个 pplication P AGC软件覆盖整个房间.API是用于构建软件应用程序的一组例程,协议和工具.API指定一个软件程序应如何与其他软件程序进行交互 ...

  3. 自动化测试指南-自动化测试工程师必备的技能

    测试自动化工程师的基本技能 测试自动化工程师通过利用适当的工具或技术技能,与项目团队密切联系,准备.执行和报告产品和服务的专业测试.在其领域内有经验的测试自动化工程师能够利用工具或脚本技能来管理.设计 ...

  4. 全栈性能测试修炼宝典jmeter实战电子版_推荐一款技术人必备的接口测试神器:Apifox...

    开课通知:重磅消息 | 2020年最新全栈测试开发技能实战指南(第1期) 1. 背景 作为互联网行业技术从业者,接口调试是必不可少的一项技能,通常我们都会选择使用 Postman 这类工具来进行接口调 ...

  5. 微信公众平台卡券API接口开发指南

    文章目录 说明 卡券术语介绍 卡券生命周期流程图 准备 申请开发账号 公众平台开发配置 公众号开发信息配置 填写服务器配置并验证有效性 申请微信认证及开通微信卡券功能 卡券分类 普通卡券 会员卡券 朋 ...

  6. 软件测试工作学习必备指南——硬实力

    软件测试工作学习必备指南--硬实力 为什么选择IT行业的软件测试职业?这个问题暂不做讨论,本次主要给大家分享软件测试工作学习所必备的硬实力,因为每个人都有自己选择从事这份职业的初心,每个有都有自己的职 ...

  7. 软件测试精品书单推荐指南!

    Time will tell. 软件测试是伴随着软件的产生而产生的.早期的软件开发过程中软件规模都很小.复杂程度低,软件开发的过程混乱无序.相当随意,测试的含义比较狭窄,开发人员将测试等同于调试,目的 ...

  8. Python数据挖掘指南

    Data Mining in Python: A Guide 转载原文:https://www.springboard.com/blog/data-mining-python-tutorial/(全英 ...

  9. 23 20210525+0529直播 企业微信接口测试实战1+2

    文章目录 企业微信接口测试实战1 RESTFUL 规范 实战内容 接口测试基础 restful 架构 接口测试流程 接口自动化脚本编写 项目流程 需求分析 需求理解 接口业务关系 接口测试用例编写思路 ...

最新文章

  1. The ECDSA host key for XXX has changed
  2. 基于python + tushare 的股票盯盘脚本
  3. php redis 传递闭包,通过缓存构建高性能 Laravel 应用
  4. 实现开发板与ubuntu的共享--根文件系统NFS--Samba共享【sky原创】
  5. 图像局部特征(十五)--MSCR
  6. 人类能看懂的衍射光学(含基尔霍夫衍射,瑞利--索末菲衍射,夫琅禾费衍射,角谱衍射,菲涅尔衍射积分,菲涅尔衍射的S-FFT算法,T-FFT算法,D-FFT算法)
  7. 如何解密单片机内程序?
  8. 未来无生经超级计算机,最强崩坏系统
  9. 视频分配器的特点以及应用
  10. 服务器远程桌面连接不上(远程桌面连接服务器之超级VPS管理器)
  11. 订单超时、定时任务解决方案和思路
  12. 微信公众号支付、支付查询、退款、退款查询、转账到零钱银行卡、转账查询接口整合(V2)
  13. cad多段线画圆弧方向_(cad多段线画圆弧方向)在cad中如何使用excel画样条曲线
  14. springboot 调用方法事物_springboot中使用@Transactional注解事物不生效的坑
  15. 「2019纪中集训Day23」解题报告
  16. 移动端网页开发(一)
  17. Python 解决execjs._exceptions.ProgramError: ReferenceError: document is not defined报错问题
  18. C语言——一分钟了解数据类型与变量
  19. android华为手机虚拟键盘盖住底部,Android 虚拟键盘遮挡住页面问题我遇到的坑及个人解决办法...
  20. 树莓派4B从USB-SSD启动ubuntu踩坑指北

热门文章

  1. #1002 写出这个数(Python3)
  2. UC伯克利马毅七年力作!700页新书探究低维模型与高维数据分析
  3. layui在搜索的时候没有数据,在表格中显示暂无数据
  4. vue过滤器——vue全局过滤器,
  5. 网络爬虫框架Scrapy简介
  6. 程序人生 - 过来人经验:程序员怎么升职加薪,迎娶白富美
  7. 用Python开始机器学习(6:朴素贝叶斯分类器)
  8. WordPress自定义分页代码
  9. 什么是单点登录?怎么样实现单点登录
  10. kali安装teamviewer