前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >学习总结——JMeter做http接口功能测试

学习总结——JMeter做http接口功能测试

作者头像
呆呆
修改于 2021-05-25 02:54:16
修改于 2021-05-25 02:54:16
1.9K0
举报
文章被收录于专栏:centosDaicentosDai

默认做接口测试前,已经给出明确的接口文档(如,http://test.nnzhp.cn/wiki/index.php?doc-view-59);本地配好了JMeter 3.x的运行环境;

打开JMeter,添加一个线程组和该线程组的查看结果树。以下的几种接口请求我们都在这个线程组中添加和运行。

如果你的JMeter返回数据是乱码,解决办法是,在JMeter安装路径的bin目录下,打开文件jmeter.properties,把Sampleresult.default.encoding的值改为 utf-8 即可。

1. 普通的以key-value传参的get请求

e.g. 获取用户信息

添加http请求;填写服务器域名或IP;方法选GET;填写路径;添加参数;运行并查看结果。

 2. 以Json串传参的post请求

e.g. 获取用户余额

添加http请求;填写服务器域名或IP;方法选POST;填写路径;在参数区域选Body Data标签;写入Json串参数,注意Json格式;运行并查看结果。

*注意:

Json传参时,往往参数相对复杂,规模较大,很多时候是Json串再嵌套Json串,在写入body的时候如果哪里格式不对会影响传参,而JMeter本身是不能对Json进行格式校验的(Postman可以进行简单的Json校验),我们可以借助这个网站来校验你的Json串的格式,www.bejson.com 再把确保格式正确的Json串填入body。

3.  请求时需要http权限验证

e.g. 修改用户余额

添加http请求;填写服务器域名或IP;方法选POST;填写路径;填写参数;

添加授权管理器,右击线程组->添加->配置元件->HTTP授权管理器;

打开HTTP授权管理器,在基础URL添加路径;填写用户名、密码(接口文档会给出);添加域即请求的服务器域名或IP;其他默认;

运行请求并查看结果。(该接口暂时有问题请求返回500,只要掌握需要权限验证的接口如何做就好)

4.  请求时需要添加请求标头

e.g. 获取用户信息2

添加http请求;填写服务器域名或IP;方法选POST;填写路径;填写参数;

添加HTTP信息头管理器,右击线程组->添加->配置元件->HTTP信息头管理器;

打开HTTP信息头管理器,参照接口文档填写好header信息;

运行请求并查看结果。

5.  请求时需要添加Cookie

e.g. 修改用户余额2

添加http请求;填写服务器域名或IP;方法选POST;填写路径;填写参数;

添加HTTP Cookie管理器,右击线程组->添加->配置元件->HTTP Cookie管理器;

打开Cookie管理器,参照接口文档填写好Cookie信息;

 发送请求并查看结果。

6.  请求通过某个接口上传文件

    e.g.上传文件

    添加http请求;填写服务器域名或IP;方法选POST;填写路径;在参数区域选Files Upload标签,添加文件全名(包含绝对路径,也可以点击浏览按钮添加),写入参数名;发送请求并查看结果。

JMeter的参数化

1. 指定参数值

这种方法常用来解决线程组中多个请求共用相同的数据,比如我们以上所有请求都有相同的IP地址,当地址改变时可以一改全改。

添加用户定义的变量,右击线程组->添加->配置元件->用户定义的变量;

打开用户定义的变量,添加变量,写好名称和值;

脚本中用到该值的所有地方都可以引用这个变量名了,引用变量的格式为 ${变量名};

2. 借助函数生成参数

测试过程中,有时候数据不适合被指定,可选择借助函数来生成,以下是最常用的几种。

  • ž     用函数生成随机数:(__Random)

在Jmeter中点击 选项->函数助手对话框;

在弹出的对话框中选__Random,填写随机数的范围,点击生成按钮,就看到你需要的字符串了;

尝试在请求中使用生成的随机数,把刚拷贝的字符串粘贴到请求的参数里;

发送请求,查看请求中参数值的情况,参数生效了。

  • ž    用函数生成当前时间:(__time)
  • ž    用函数生成通用的唯一识别码:(__UUID)

3. 文件传参

用于读取在文件中维护的参数,如参数文件内容如下;

注意,Jmeter读取文件总的参数是从第一行就开始了的,千万不要犯下面的错误。

在Jmeter中右击线程组->添加->配置元件->CSV Data Set Config;

打开设置窗口,写入参数文件的全名(含绝对路径),变量名,Delimiter就用默认的逗号,表示在准备参数文件时参数表的列之间用逗号隔开;

在请求中引用参数时应该是酱紫的:${username}  ${pwd},用它们来顶替对应的参数值。

4. 关联传参

在线程组内,当你想用一个请求的响应结果作为另一个请求的入参时就需要用到关联。

  • ž用正则表达式关联

思路是先从某个请求的响应数据中提取你需要的值,在把这个值在另一个请求中入参,操作如下:

在需要被提取响应数据的请求下添加正则表达式提取器,右击添加->后置处理器->正则表达式提取器;

在正则表达式提取器中填写 引用名称,不说也知道用途;正则表达式,最简单的办法是在响应数据中把要提取的目标值左右若干字符包含目标值的一行拷贝出来,粘贴到正则表达式框内,在把目标值用一对小括号替换,括号里用添上合适的匹配符本例如(.*); 注意在响应数据中拷贝时尽量避开需要转义的字符如果不能避开,请转义;模板通常固定填$1$;匹配数字1代表区匹配的第一个值;缺省值是在匹配失败时取得的值,通常用来检查匹配是否成功;

用${age}入参给另一个请求,查看结果传参成功。

  • ž用Json Path Extractor 插件关联

只针对Json格式的Response 取值,右击请求添加->后置处理器->JSON Path Extractor;

在JSON Path Extractor中填入引用名和JSONPath Expression;

在另一个请求中入参,也和上面的结果一样转参成功。

注意,JSON Path Extractor这个插件只能在Jmeter3.x以上的版本安装。

Jmeter添加断言检查结果

右击请求添加->断言->响应断言;

添加并写入希望在响应结果中看到的内容;

发送请求,查看结果;

Jmeter操作Mysql

测试计划添加.jar包 mysql-connector-java-5.1.7-bin.jar用于使Jmeter可以读取Mysql;

 线程组添加 JDBC Connection Configuration (添加->配置元件-> JDBC Connection Configuration)用于配置Jmeter和Mysql的连接;

JDBC Driver class是固定的,Jmeter操作各类数据的Driver参考下图;

线程组添加JDBC Request(添加->Sampler-> JDBC Request) 用于写sql来操作Mysql;

发送请求,成功访问Msql。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Kubernetes基础:编排调度的那些Controllers
Kubernetes提供了很多Controller资源来管理、调度Pod,包括Replication Controller、ReplicaSet、Deployments、StatefulSet、DaemonSet等等。本文介绍这些控制器的功能和用法。控制器是Kubernetes中的一种资源,用来方便管理Pod。可以把控制器想象成进程管理器,负责维护进程的状态。进程掉了负责拉起,需要更多进程了负责增加进程,可以监控进程根据进程消耗资源的情况动态扩缩容。只是在Kubernetes中,控制器管理的是Pods。Controller通过API Server提供的接口实时监控整个集群的每个资源对象的当前状态,当发生各种故障导致系统状态发生变化时,会尝试将系统状态修复到“期望状态”。
大江小浪
2018/10/10
1.1K0
云原生|Hi,Pod,你被控制了!
了解了Pod的基础知识之后,对于实验来说可以通过kubectl run或者apply一个yaml来创建Pod,但是对于生产环境中构建一个CNF来说,有些Pod需要多个副本,有的运行完就不再需要了,有些需要定期执行某些任务,有些需要在不同的node上只创建一个Pod,这样通过一个一个的创建Pod是不仅费时费力且不便于维护,因此需要一个概念来根据不同需求创建对应的Pod并确保在任何时候都有对应要求的副本在运行,这个概念便是Pod的控制器。
琉璃康康
2023/11/27
1880
云原生|Hi,Pod,你被控制了!
kubernetes核心实战(五)--- StatefulSets
StatefulSet 用来管理 Deployment 和扩展一组 Pod,并且能为这些 Pod 提供序号和唯一性保证。
小陈运维
2021/11/30
2690
作者太有才了,几句话就说清了Kubernetes,看完我已经学会了!
Kubernetes 是一个可扩展的开源平台(Google 在 2014 年开源),用于管理容器化的工作负载和服务,可促进声明式配置和自动化。名称 Kubernetes 源于希腊语,意为“舵手”或“飞行员”,通常简称为k8s。
DevOps持续交付
2021/01/28
7500
作者太有才了,几句话就说清了Kubernetes,看完我已经学会了!
Kubernetes学习笔记
Pod: kubernetes管理的主要对象,可以由一个或者共享资源的一组容器组成 kubelet: 管理worker node和master node之间的通信 kube-proxy: 运行在work node上,用于管理Node和Pod的网络通信 API Server: 提供API服务 Scheduler: 选择worker node运行Pod Controller: 监控Pod数量,控制worker node Worker node: 运行Pod的机器或者虚拟机 Master node: 运行Control Plane的机器或者虚拟机
宅蓝三木
2024/10/09
1150
Kubernetes学习笔记
kubernetes核心实战(五)--- StatefulSets
StatefulSet 用来管理 Deployment 和扩展一组 Pod,并且能为这些 Pod 提供序号和唯一性保证。
小陈运维
2022/08/19
4250
kubernetes核心实战(五)--- StatefulSets
Deployment 原理
每一个 Deployment 都会和它的依赖组成以下的拓扑结构,在这个拓扑结构中的子节点都是『稳定』的,任意节点的删除都会被 Kubernetes 的控制器重启:
看、未来
2022/08/11
5850
Deployment 原理
Kubernetes 之资源清单
在 Kubernetes 系统中,Kubernetes 对象是持久化的实体,Kubernetes 使用这些实体去表示整个集群的状态。特别地,它们描述了如下信息:
民工哥
2021/04/21
7320
k8s--资源控制器
Kubernetes中内建了很多controller (控制器) ,这些相当于一个状态机,用来控制Pod的具体状态和行为
eadela
2019/12/11
8020
【K8S专栏】Kubernetes工作负载管理
但是,单独的Pod并不能保障总是可用,比如我们创建一个nginx的Pod,因为某些原因,该Pod被意外删除,我们希望其能够自动新建一个同属性的Pod。很遗憾,单纯的Pod并不能满足需求。
没有故事的陈师傅
2022/09/15
5310
【K8S专栏】Kubernetes工作负载管理
4-Kubernetes入门基础之Pod介绍
前面简单的介绍了Kubernetes基础知识以及单节点和高可以用集群的搭建, 本章将从实操来介绍Kubernetes概念和术语以及控制器,便于各位读者进行学习;
全栈工程师修炼指南
2022/09/29
9590
4-Kubernetes入门基础之Pod介绍
生产prometheus-operator 监控二进制kubernetes
`operator`是由CoreOS公司开发的,用来扩展kubernetes APi ,特定的应用程序控制器,它用来创建,配置和管理复杂的有状态应用,例如数据库,缓存和监控系统。`Operator`基于Kubernetes的资源和控制器概念之上构建,但同时又包含了应用程序特定的一些专业知识,比如创建一个数据库的`Operator`,则必须对创建的数据库和各种运维方式非常了解,创建`operator`的关键是 `CRD(CustomResourceDefinition/自定义资源定义)`的设计。
张琳兮
2020/09/23
8460
Kubernetes 资源控制器使用指南
资源配额控制器确保了指定的资源对象始终不会超过配置的资源,能够有效的降低整个系统宕机的机率,增强系统的鲁棒性,对整个集群的稳定性有非常重要的作用。
民工哥
2021/04/21
1.7K0
kubernetes系列教程(十一)深入学习Deployment控制器
前面的文章我们深入介绍了Pod的使用,包括Pod定义,Pod资源管理和服务质量,Pod健康检查,Pod存储管理,Pod调度,当Pod所在的node异常时,Pod无法自动恢复,因此Pod很少单独使用,一般以template的形式嵌套在控制器中使用,下来介绍kubernetes系列教程副本控制器Deployment,ReplicaSet,ReplicationController的使用。
HappyLau谈云计算
2019/10/29
3.4K0
kubernetes系列教程(十一)深入学习Deployment控制器
云原生基础设施之Kubernetes
傍晚时分,你坐在屋檐下,看着天慢慢地黑下去,心里寂寞而凄凉,感到自己的生命被剥夺了。当时我是个年轻人,但我害怕这样生活下去,衰老下去。在我看来,这是比死亡更可怕的事。--------王小波
山河已无恙
2023/03/02
1.4K0
云原生基础设施之Kubernetes
从入门到跑路之Kubernetes(九)
“编排“,应该是Kubernetes项目最核心的功能了,先来看一看”控制器“模型。
周萝卜
2019/07/17
5200
从入门到跑路之Kubernetes(九)
5-Kubernetes入门基础之控制器Controller介绍
[toc] 0x00 Controller 介绍 Q: 什么是资源控制器(资源控制器介绍)? 答:Kubernetes中内建了很多controller(控制器),这些相当于一个状态机,用来控制Pod的
全栈工程师修炼指南
2022/09/29
1.9K0
5-Kubernetes入门基础之控制器Controller介绍
快速入门Kubernetes(K8S)——资源控制器
上篇文章给大家介绍了快速入门Kubernetes(K8S)——资源清单本篇文章给大家讲解下关于资源控制器相关的内容,编写不易(对你有帮助的话一键三连)看完可以掌握一内容:
大数据老哥
2021/02/04
5470
快速入门Kubernetes(K8S)——资源控制器
运维锅总详解Kubernetes之Deployment
如何更好的用好Deployment?本文尝试从Deployment的使用、控制器实现原理及使用规范3方面进行阐述。希望对您有所帮助!
锅总
2024/07/20
1930
运维锅总详解Kubernetes之Deployment
Kubernetes 零基础入门
Kubernetes 是 Google 团队发起并维护的基于 Docker 的开源容器集群管理系统,它不仅支持常见的云平台,而且支持内部数据中心。它的目标是管理跨多个主机的容器,提供基本的部署,维护以及运用伸缩,主要实现语言为 Go 语言。
羽月
2022/11/11
1K0
Kubernetes 零基础入门
相关推荐
Kubernetes基础:编排调度的那些Controllers
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档