1. 了解状态码
状态码大全:https://cloud.tencent.com/developer/chapter/13553
(1)HTTP状态码分类
| 状态码分类 | 类别名称 | 说明 |
|---|---|---|
| 1xx | 信息性状态码 | 响应中:临时状态码,表示请求已经接受,告诉客户端应该继续请求,或者如果请求已完成则忽略它。 |
| 2xx | 成功状态码 | 成功:表示请求已经被服务器成功接收、理解并接受,处理已完成。 |
| 3xx | 重定向状态码 | 重定向:需要客户端采取进一步的操作以完成请求。通常用于重定向到其他地方,让客户端发起新请求。 |
| 4xx | 客户端错误状态码 | 客户端错误:服务器无法处理请求,责任在客户端。例如:请求资源不存在(404)、未授权、禁止访问等。 |
| 5xx | 服务器错误状态码 | 服务端错误:服务器在处理请求的过程中发生错误,责任在服务端。例如:服务器抛出异常、路由出错、HTTP 版本不支持等。 |
(2)常用 HTTP 状态码详解表
| 状态码 | 英文描述 | 解释说明 |
|---|---|---|
| 200 | OK | 请求成功。这是最理想的状态,表示服务器已成功处理了客户端的请求。 |
| 302 | Found | 临时重定向 。请求的资源已临时移动到 Location 响应头指定的 URL,浏览器会自动跳转。 |
| 304 | Not Modified | 未修改(缓存有效)。服务器告诉客户端资源自上次请求后未更改,可以直接使用本地缓存。 |
| 400 | Bad Request | 语法错误。客户端请求存在语法错误或参数错误,服务器无法理解该请求。 |
| 403 | Forbidden | 拒绝访问。服务器理解请求,但拒绝提供服务(通常是因为没有权限)。 |
| 404 | Not Found | 资源不存在。请求的 URL 错误或服务器上的资源已被删除。 |
| 405 | Method Not Allowed | 请求方式错误。例如该资源仅支持 GET 请求,但客户端使用了 POST。 |
| 428 | Precondition Required | 要求先决条件 。要求客户端必须发送特定请求头(如 If-Match)才能访问。 |
| 429 | Too Many Requests | 请求过多 。触发了频率限制,通常配合 Retry-After 响应头告知重试时间。 |
| 431 | Header Fields Too Large | 请求头过大。服务器不愿处理头部字段过大的请求,需减小头部大小后重试。 |
| 500 | Internal Server Error | 服务器内部错误。服务端发生不可预期的异常,通常需要检查服务器日志排查。 |
| 503 | Service Unavailable | 服务不可用。服务器由于超载或停机维护等原因暂时无法处理请求。 |
| 511 | Network Authentication Required | 网络认证要求。客户端需要进行身份验证(如登录 Wi-Fi 门户)才能获得网络访问权限。 |
2. B/S架构下Web访问过程
B/S 架构:Browser/Server,浏览器/服务器 架构模式,它的特点是,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源发送给浏览器即可。
B/S架构的好处:易于维护升级:服务器端升级后,客户端无需任何部署就可以使用到新的版本。

* 静态资源:静态资源主要包含HTML、CSS、JavaScript、图片等,主要负责页面的展示。
* 动态资源:动态资源主要包含Servlet、JSP等,主要用来负责逻辑处理。
* 数据库:数据库主要负责存储数据。
* HTTP协议:主要定义通信规则。
* Web服务器:负责解析 HTTP 协议,解析请求数据,并发送响应数据。(比如:Tomcat)
整个Web的访问过程:
(1)浏览器发送一个请求到服务端,去请求所需要的相关资源;
(2)资源分为动态资源和静态资源,动态资源可以是使用Java代码按照Servlet和JSP的规范编写的内容;
(3)在Java代码可以进行业务处理也可以从数据库中读取数据;
(4)拿到数据后,把数据交给HTML页面进行展示,再结合CSS和JavaScript使展示效果更好;
(5)服务端将静态资源响应给浏览器;
(6)浏览器将这些资源进行解析;
(7)解析后将效果展示在浏览器,用户就可以看到最终的结果。

3. HTTP请求与响应
什么是HTTP?
HyperText Transfer Protocol,超文本传输协议,规定了浏览器和服务器之间数据传输的规则。
什么数据传输规则?
请求数据和响应数据需要按照指定的格式进行传输。
如果想知道具体的格式,可以打开浏览器,点击`F12`打开开发者工具,点击Network来查看某一次请求的请求数据和响应数据具体的格式内容。
HTTP协议特点?
1.基于TCP协议: 面向连接,安全
2.基于请求-响应模型的:一次请求对应一次响应
3.HTTP协议是无状态协议:对于事物处理没有记忆能力。每次请求-响应都是独立的
* 缺点:多次请求间不能共享数据。(Java中使用会话技术(Cookie、Session)来解决这个问题)
* 优点:速度快。
HTTP数据请求格式
GET / HTTP/1.1 # 请求行
Host: www.baidu.com # 请求头
Connection: keep-alive
Upgrade-Insecure-R3quests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0
......
POST / HTTP/1.1Host: www.baidu.com
Connection: keep-alive
Upgrade-Insecure-R3quests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0
......
username=root&password=1234 # 请求体
请求数据总共分为三部分内容,分别是请求行、请求头、请求体。
* 请求行: HTTP请求中的第一行数据。其中 GET表示请求方式,/表示请求路径,HTTP/1.1表示协议及版本
* 请求头: 第二行开始,格式为key: value形式。
*请求体: POST请求的最后一部分,请求体和请求头之间是有一个空行隔开,存储请求参数。
常见的HTTP请求头有:
* Host : 表示请求的主机名
* User-Agent : 浏览器版本,例如Chrome浏览器的标识类似Mozilla/5.0 ...Chrome/79,IE浏览器的标识类似Mozilla/5.0 (Windows NT ...)like Gecko;
* Accept :表示浏览器能接收的资源类型,如text/*,image/*或者*/*表示所有;
* Accept-Language :表示浏览器偏好的语言,服务器可以据此返回不同语言的网页;
* Accept-Encoding:表示浏览器可以支持的压缩类型,例如gzip, deflate等。
这些数据有什么用处?
服务端可以根据请求头中的内容来获取客户端的相关信息,有了这些信息服务端就可以处理不同的业务需求。比如:
- * 不同浏览器解析HTML和CSS标签的结果会有不一致,所以就会导致相同的代码在不同的浏览器会出现不同的效果
- * 服务端根据客户端请求头中的数据获取到客户端的浏览器类型,就可以根据不同的浏览器设置不同的代码来达到一致的效果
- * 这就是我们常说的浏览器兼容问题
GET请求与POST请求的区别?
- * GET请求请求参数在请求行中,没有请求体,POST请求请求参数在请求体中
- * GET请求请求参数大小有限制,POST没有
HTTP数据响应格式
HTTP/1.1 200 OK # 响应行
Server: Tengine # 响应头
Content-Type: test/html
Transfer-Enconding: chunked...
<html> # 响应体
<head>
<title></title>
</head>
<body></body>
</html>
响应数据总共分为三部分内容,分别是响应行、响应头、响应体。
* 响应行 :响应数据的第一行。其中HTTP/1.1表示协议及版本,200表示响应状态码,ok表示状态码的描述
* 响应头 :第二行开始,格式为key:value形式
* 响应体: 最后一部分。存放响应数据
常见的响应状态码有:
- * 200 ok 客户端请求成功
- * 404 Not Found 请求资源不存在
- * 500 Internal Server Error 服务端发生不可预期的错误
常见的HTTP响应头有:
* Content-Type:表示该响应内容的类型,例如text/html,image/jpeg;
* Content-Length:表示该响应内容的长度(字节数);
* Content-Encoding:表示该响应压缩算法,例如gzip;
* Cache-Control:指示客户端应如何缓存,例如max-age=300表示可以最多缓存300秒
4. postman接口测试
4.1 接口测试流程
1.拿到接口文档(没有需要抓包),熟悉接口业务,接口请求四要素和响应四要素,接口鉴权方式,错误码业务等。
2.编写接口测试用例(测试点XMIND)并评审(怎么测)
正例:正常输入接口的请求四要素,查看并验证接口响应数据的正确性。
- 接口请求四要素:请求方式,请求路径,请求头,请求数据(给)
- 接口响应四要素:响应码,响应信息,响应头,响应数据。(返)
反例:
- 接口鉴权反例:鉴权码为空,错误,过期等
- 接口参数反例:参数为空,参数类型异常,参数长度异常。
- 业务场景反例:黑名单,接口调用次数,分页(100条,每页10条)
3.使用Postman执行接口测试
4.通过Postman+Newman+Jenkins实现接口自动化测试持续集成。并且输出报告以及进行邮件,企微,钉钉通知。
4.2 使用postman创建一个接口请求

请求:接口请求四要素:请求方式,请求路径,请求头,请求数据(给)
Params(第一种传参):查询字符串参数:即在请求路径后以?传递的参数,多个参数之间用&分割。它是URL的一个部分,是所有人都可见。会自动填写。
Authorization:鉴权
Headers:请求头
Body(第二种传参):Body参数,不会显示在URL,相对安全,它包括:JSON,表单,文件等等。

- none:没有body参数
- form-data:即有参数,又有文件。
- x-www-form-urlencoded:只有参数
- raw:json,xml,html,js等等
- binary:二进制数据
- GraphQL:facebook在2012开发一个查询语言。
Scripts:前置脚本和后置脚本
Settings:设置
Cookies:请求Cookie,属于请求头
响应:接口响应四要素:响应码,响应信息,响应头,响应数据。(返)
Body:响应数据
Cookies:响应Cookie,属于响应头
Headers:响应头
Test Results:断言接口是否请求成功
5. Jmeter接口测试
【接口】是 【系统】内外的交互方式
- 接受来自用户的数据(内容),返回来自系统的响应
- 完成数据的校验、加个、存储、权限控制
接口测试工具:
- JMeter:支持多种接口类型,还能测试性能,开源,开源进行二次扩展
- Postman:简单、方便,局限性比较大,适合开发临时性调试
- APIFox等:新工具,市场占有小,适合小团队尝鲜
接口的类型:
- Restful :HTTP 传输 JSON
- WebService: HTTP 传输 XML
- RPC :TCP 传输 二进制
5.1 JMeter环境搭建
(1)安装好jak,并加入环境变量( JMeter 是⽤ JAVA 语⾔开发的接⼝测试和性能测试的⼯具,所有它需要依赖于 JAVA 语⾔的环境 jdk)
(2)安装好JMeter,并加入环境变量
此处略,请自行查看文档!
使用JMeter的两种方式:
- 在 CMD 窗⼝中输⼊命令:jmeter 打开 Jmeter 界⾯
- 直接点击 jmeter.bat ⽂件打开 Jmeter 界⾯
了解JMeter目录

-
备份
-
二进制:软件主体、配置文件
-
文档:内部API文档
-
额外:配合外部工具
-
依赖库:记载和调用的功能
-
许可证:开源许可证
-
可打印文档:使用说明文档
5.2 JMeter界面组件

(1)核心组件

(2)辅助组件

5.3 HTTP核心配置
什么是配置元件?

(1)HTTP 信息头管理器


(2)HTTP Cookie管理器


(3)HTTP请求默认值



练习1:
请求百度首页
请求99次
每次请求之前,打印日志:北凡
查看每次请求的结果
元件的加载顺序:
加载配置元件
加载线程组
加载取样器
为取样器加载辅助元件
父级组件
同级组件
子组件
不会收集 旁系子组件
下面是每个组件具体的参数配置建议:
1. 线程组 (Thread Group)
这里定义脚本运行的基础。
线程数 (Number of Threads):
1(练习阶段,用 1 个虚拟用户即可)。Ramp-Up Period:
1(1 秒内启动完成)。循环次数 (Loop Count):
1(注意:因为你下方已经加了"循环控制器",所以这里保持为 1 即可,由控制器来接管循环)。2. 循环控制器 (Loop Controller)
负责执行"请求 99 次"的核心逻辑。
- 循环次数 (Loop Count):
99。3. HTTP 请求 (HTTP Request)
配置百度首页的访问地址。
协议 (Protocol):
https。服务器名称或 IP (Server Name or IP):
www.baidu.com。方法 (Method):
GET。路径 (Path):
/(或者留空,默认也是访问根目录)。4. JSR223 预处理程序 (JSR223 PreProcessor)
负责在请求发送前执行代码(打印日志)。
语言 (Language):
groovy(这是 JMeter 推荐的默认语言,性能最好)。脚本 (Script): 填入以下代码:
Groovy
log.info("北凡");原理说明: 它是"HTTP 请求"的子节点,因此会在每次 HTTP 请求发出前执行一次。
5. 查看结果树 (View Results Tree)
无需配置额外参数。
使用方法: 点击 JMeter 顶部的绿色启动按钮(或快捷键
Ctrl + R),然后点击此元件,你就能看到 99 条百度首页的请求结果了。
💡 进阶小贴士
如果你想在打印日志时加上当前的次数,可以将脚本改为:
log.info("北凡 - 当前是第 " + vars.getIteration() + " 次请求");这样在 JMeter 的日志控制台(点击界面右上角的黄色三角/数字图标可打开)里就能看到带编号的输出了。
练习2:一共有2个取样器、3个后置处理器,每个后置处理器记录一次日志
思考:
会产生几条日志?
日志的内容是什么?
加载过程:
- 有2个取样器,辅助元件要加载2次
- AAA
- 父组件
- 同级组件
- 子组件
- BBB
- 同级组件
- 子组件
这是一个关于 JMeter 作用域(Scope)和执行顺序的经典练习。理解了这个结构,你就能掌握 JMeter 最核心的逻辑。直接给出结论:
1. 会产生几条日志?
答:共产生 4 条日志。
2. 日志内容及原因分析
在 JMeter 中,后置处理器(Post-Processor)会对作用域内的每一个取样器执行一次。
具体的执行逻辑分解:
取样器 AAA 执行时:
执行线程组下的
JSR223 后置处理器(因为它的作用域是整个线程组,包含 AAA)。执行 AAA 节点下的
JSR223 后置处理器(因为它是 AAA 的私有子节点)。
- 此时产生 2 条日志。
取样器 BBB 执行时:
执行线程组下的
JSR223 后置处理器(同理,它也会作用于 BBB)。执行 BBB 节点下的
JSR223 后置处理器(因为它是 BBB 的私有子节点)。
- 此时产生 2 条日志。
日志内容预测:
假设你在代码里写的日志内容是其组件名称,控制台输出大致如下:
线程组下的后置处理器内容(由 AAA 触发)
AAA 下的后置处理器内容
线程组下的后置处理器内容(由 BBB 触发)
BBB 下的后置处理器内容
💡 核心知识点总结
为了让你更好地掌握,这里有三个"金律":
父子关系决定作用域: 放在线程组下的元件(如你图中最上方的后置处理器),会作用于该线程组内所有的取样器(AAA 和 BBB)。
简单控制器不影响作用域:
简单控制器只是一个"文件夹",它不会像"循环控制器"那样改变执行次数,也不会限制后置处理器的作用范围。执行顺序: 当一个取样器执行完后,JMeter 会先寻找并执行父级 的后置处理器,然后再执行自身子级的后置处理器。
思考题:
如果你把最上面的那个
JSR223 后置处理器拖进简单控制器里(和 AAA、BBB 同级),日志数量会有变化吗?(答案是:依然是 4 条,因为 AAA 和 BBB 依然在它的作用域内。)
5.4 JMeter接口实战
(1)熟悉文档
请求:
- 请求方法
- 接口地址
- 鉴权要求
- 请求参数
响应:
- 状态码
- 响应头
- 响应内容
(2)对接接口
根据接口文档要求,请求接口。



