Jmeter-接口测试(一)
一、接口测试分类
内部接口
外部接口--被测系统调用外部
--系统对外部提供的接口
接口测试重点:接口参数传递的正确性、接口功能的正确性、输出结果正确性、各种异常容错处理、权限控制、分页、调用次数限制
二、目前接口架构设计
1.SOAP架构 xml webservice协议,wsdl结尾 比较老
2.RPC架构 基于dubbo协议 thrift协议 Springcloud微服务
3.基于RestFul架构 http协议 json规范 70-80%公司用
RestFul规则:接口地址例如http://127.0.0.1/users get/post/put/delete 查询/新增/修改/删除
json只有两种数据类型:键值对 key:value 数组[arr1,arr2,arr3]
fiddler抓包,右键save--selected session--in text 保存到桌面
-------------------------------httip协议详解----------------------------------------
请求行,请求头,请求正文
POST http://172.24.28.1:81/flexbase/api/w/logon/login HTTP/1.1 请求行
Host: 172.24.28.1:81 请求主机 ---- 请求头
Connection: keep-alive 保持活跃
Content-Length: 330 内容长度
Accept: application/json, text/javascript, */*; q=0.01 接收数据格式
(这里可能有异步请求X-Requested-With:XML HttpRequest)
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36 客户端类型
Content-Type: application/x-www-form-urlencoded; charset=UTF-8 内容类型
Origin: http://172.24.28.1
Referer: http://172.24.28.1/
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
(这里可能有cookie信息:客户端发给服务器的,1-N次)
username=xxzxjinling&password=75788f255736caa3bb310ea7b2c9fcc6f7e98606f2c687d293928d22b95a8de2f48769b5705628bd6b62a16091ecbb88fdfd312d075540550828325be7609366ca1d14fade354b391b9e1866f86a391031d6ca1bfa1c52d2a3106f71653946ff8dafca3cc5fcc472986a7be008db1eda8b123146d496ed9bb0494f17e044af33&captcha=&officeLogin=true&isEncryptPwd=true---请求正文
HTTP/1.1 200 响应行
Server: Tengine/2.3.3 响应头
Date: Thu, 16 Jun 2022 02:40:10 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Vary: Accept-Encoding
Vary: Origin
Vary: Access-Control-Request-Method
Vary: Access-Control-Request-Headers
Access-Control-Allow-Origin: http://172.24.28.1
Access-Control-Allow-Credentials: true
Set-Cookie: rememberMe=deleteMe; Path=/flexbase; Max-Age=0; Expires=Wed, 15-Jun-2022 02:40:10 GMT; SameSite=lax(服务器发给客户端的cookie,只有第一次请求)
X-Frame-Options: SANEORIGIN
Content-Encoding: gzip
433
? 昐巩跢睚? 钿ぃ(?Q?6舍&.甊$H€ )?UZ?_惪眂?⒎9)ぜ畿3g孓3o_蒈芏?附娑閨?h氎作╛翯}+鉌徯缦}秋~{d≯瑚咱kq-?J
>4cl€y?? $<#P:??L娶崦WMYG簺?|富鹥鼾绡??飾u鮰$鷮过辗峨?.?{聯FL軎5〞0 撪A篩禢? 砶傶K苗o~蔑/┃豚4(H 1焺$鎾辞0E? '!J紉釗?惻Cz$舣罅 4儯8J?<+? ?EpQcO?#Q{睪-Qエ*焀h%礑+Q翛@?k﹢媚璪釠淟?噃埭|湢{|雋顅峊?真绍f?肳O膓{hz?T袿Y?UDZ^賊华PJ<莕- =煡瀑5釨滟(W?Y_6嫧q螴3僒v颇?刓.HHfe裷邈骨knJZ?鵈e迱Zs+f? `瓾UKg?B?芛2t挆謨Iz$钁!)刑 F?做c???_葖%[+~h? W?T0?G?aG??詔環?.J〥<L$沉P謠Y?}a羿?F孟認穔&乙蓝6>n孑€妇昏;9诇?J\???徢7n鑗顶7j蛾豷?1鉦O%?簂萴t`蔙.&簲*?gr祊將趺 Zd?ik敦.Gka?签蓹躶*偙J赅湖鹍4姠痏|?y莍<%E?殉?芦0撄X漍?鵮琙Dd'譟l8?)軹3拉犍ギ?╣,<u浖佣6 Ms<睩?擧瑂%搈 G7?7⒅F⑸沐NJ鑉a???C~Zy ij多)}暎蒪?BCo'述*o?A析英A菫m帵ZY邑鐳鍖襥爯珢c-?Y示C"A匛?Y撸Y筺尧 I&2f? ?/賿{礱}嫝鷬%?氲℃G0-+!魀?氠戁W蹺?h&E?変 j處?@U氾,貌藫:lw懻?尔j襸e?k劉6轂:s?駒P?3!?喃?揍V粙銰u?s頮?^&丗IE籛稔倧襍?
0--响应正文
三、市面上的接口测试工具
jmeter+ant+git+jenkins
或者postman+newman+git+jenkins
soapui,appipost,fiddler,charles 辅助工具
四、jmeter简介、安装、环境配置
基于java语言的压力测试工具,可做接口测试,可做性能测试
jdk1.8以上,环境变量
五、jmeter目录介绍
backups:脚本备份目录 jmx格式
bin目录:存放jmeter启动脚本,配置文件、模板
jmeter.bat 启动
jmeter.properties 核心配置文件
docs: 离线帮助文档
extras: ****** 存放第三方集成构建文件,集成ant jenkins
lib目录:存放jar包
licensce:许可证文件
六、jmeter常用组件
1.测试计划:起点 所有组件的容器
2.线程组 代表一定数量的用户
3.取样器 向服务器发送请求的最小单元
4.逻辑控制器 结合取样器实现一些复杂逻辑
5.前置处理器 在请求之前的工作
6.后置处理器 在请求之后的工作
7.断言 判断请求是否成功
8.定时器 负责请求之间延时间隔 固定定时器、高斯。、随机
9.配置元件 配置信息
10.监听器 负责收集结果
顺序*******:非常主要
测试计划--线程组--配置元件--前置处理器---定时器---取样器(请求)--后置处理器--断言--监听
作用域******* 非常主要
必须组件 测试计划、线程组、取样器
辅助组件:作用于父组件。同级组件,同级组件下的子组件
七、jmeter执行接口测试
1.拿到api接口文档(fiddler),熟悉接口业务,接口地址,鉴权方式,出参,入参,错误码
2.编写接口测试用例 1个接口20-30个用例
测试思路:
正例:输入正常入参,查看接口正常返回
反例:
鉴权:空,错误,授权过期,鉴权次数限制。。。
参数:空,类型错误,长度错误,错误码的覆盖
其他:黑名单,分页,
3.使用接口测试工具执行
4.jmeter+ant+git+jenkins实现持续集成输出接口测试报告 通过电子邮件发送
配置元件:
1.加-HttpCookie管理器 基本必加
服务器只有第一次请求的时候把cookie发给客户端,之后就不发了,客户端每次都带着这个cookie发送请求
2、Http请求默认值
http:80
https:443
3.用户定义的变量
最新文章
- iOS让键盘消失,取消第一响应,取消一级响应
- System.DateUtils 3. IsPM、IsAM 判断是否为上、下午
- window对象常用方法
- jquery 如何遍历json
- BootLoader 详解(2)
- Mongo中的数据类型
- android 电容屏(一):电容屏基本原理篇
- table细线
- 创建一个简单的配置android编译环境的脚本
- JNDI实现服务器(tomcat)与数据库(mysql)连接的数据源配置以及获取连接的java代码
- 关于NSNumber对C语言字符串的简写
- ubuntu + 不识别无线网卡简易处理方式 + 需有线联网
- UML之对象图
- Perl获取主机名、用户、组、网络信息
- Generator
- SpringMVC 的运行原理
- 服务端API 工作经验(没有工作的是体会不到的)
- 我是如何利用Github Pages搭建起我的博客,细数一路的坑
- cocoa组件化开发
- Spring 中PageHelper分页插件使用