Jmeter 接口测试知识
参考资料
* [jmeter](http://jmeter.apache.org/)
* [manual]( http://jmeter.apache.org/usermanual/index.html )
jmeter简介
jmeter 是一款 java 开源的测试工具.
1. 多协议支持 ,http,https ,soap/rest, ftp ,jdbc ...
2. 多线程并发
3. GUI界面
4. more...
名词解释
* test-plan :
测试计划 , 测试计划中有一个函数测试模式, 选中该选项后则从服务器请求的结果会保存到指定位置, 一般不选择,因为影响性能.,
* thread-group :
线程组 ,所有的samples,controllers 比需在thread group下面创建.顾名思义,线程组用来控制所有测试执行的线程
* Controllers :
控制器 ,两种分类,
一种是samplers(样板),主要负责请求处理,比如http request Sampler 讲发送一个http请求;
一种是逻辑控制器.主要负责定制请求逻辑,比如,交替控制器 ,可以交替的处理两个样板
* Samplers :
样本(采集器), 主要用于处理jmeter的请求和响应.提供多种协议支持的样本
* Listeners :
监听器, 主要监控请求和响应的数据
* Timers :
定时器 , 线程组执行样本如果不设置延迟,则瞬间压力非常大
* Assertions:
断言 , 验证响应结果.
* Pre-Processor:
前置处理器,顾名思义,请求前的处理
* Post-Processor:
后置处理器,顾名思义, 响应后的处理
请求顺序
0. Configuration elements
1. Pre-Processors
2. Timers
3. Sampler
4. Post-Processors (unless SampleResult is null)
5. Assertions (unless SampleResult is null)
6. Listeners (unless SampleResult is null)
Web 接口测试demo
jmeter 可以测试接口的功能和性能.
通过jmeter自带的tempalte 我们可以了解一些jmeter 大致的流程. 那么 ,我们假设一个场景: 用户登录,登录之后获取到我的信息.
这个场景主要需要,用户请求登录,登录之后返回用户token, 获取到用户token 访问用户信息接口,查询用户信息.首先,我们来实现功能测试.
流程介绍
1. 创建一个线程组 ,默认线程数1 ,循环2
2. 创建"用户定义的变量" 来设置一些公共的变量
3. 创建一个默认的 "http请求默认值"(所谓请求默认值,顾名思义,如果下面不指定,则这个就是标配)
4. 正常的流程,我们需要测试用户登录之后的一系列操作, 所以这里,我们创建逻辑控制器 "仅一次控制器" 来确定无论多少次循环都执行一次登录
5. 鉴于我们的登录需要传递一个json 的请求参数,这里需要创建一个自己使用的"http信息头管理器" ,设置content-Type 为 application/json
6. 创建一个sampler ,"http请求" 命名为 登录.Post ,Body-Data 传递一个json 的用户名和密码
7. 创建一个属于登录自己的断言, 判断成功必须包含一个assess_token
8. 创建一个属于登录自己的监听 "结果树"
9. 我们需要获取到token的值,所以,创建一个后置处理器 "正则表达式提取器",别忘了apply to: 指定main sample and sub-samples (我们的样板
不在一个层级)
10. 创建一个"Http信息头管理器" (这个头信息默认为下面的功能提供默认携带token)
11. 创建另一个功能接口,"http请求" ...巴拉巴拉,按照以上顺序创建断言,结果树
**总结**
我们在使用过程中测试了scope , 一个请求的范围,默认值得范围 ,最后我们看到,jmeter是有作用域的,虽然 官方文档中介绍了作用域,但是写一个demo
才感受到有了作用域的强大.