本次记录首次使用Jmeter设计Web接口测试的过程,相关设置参考自官方文档
,Jmeter版本为当前最新版本5.2.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