go测试
事故: 非预期用户享受权益 用户短期多次提现 代码逻辑错误、广告位被占用 代码指针使用错误、导致app不可用, 都会产生损失 测试就是避免事故的一个保险行为 测试氛围回归测试、集成测试、单元测试。从上到下,覆盖率逐渐变大,成本逐层降低。 1、单元测试 包括输入——>测试单元(包含接口、函数模块等等)——>输出——>校对 (1)所有测试文件都是以_test.go结尾 测试函数:func TestXxx(*testing.T) 初始化逻辑放到 TestMain里。 (2)运行 (3)assert包可以实现是否相等的比较 (4)覆盖率:一般覆盖率50~60,较高覆盖率80% 对于支付、提现功能对覆盖率的要求更高,要求达到80%以上 为了能更好提高覆盖率测试分支必须相互独立,全面覆盖,测试单元粒度足够小,函数单一职责。 (5)依赖:依赖管理幂等:重复去运行一个case的结果与之前一样、稳定:任何时间任何函数能够独立运行。 6)Mock: 开源的mock测试包 快速的mock函数:为函数打桩,为一个方法打桩
2、mock测试 优化代码,需要对当前代码分析 3、基准测试
http协议
后端:请求解析、后端路由、业务逻辑、数据库 前端:API接口层、状态管理、页面、前端路由、终端 一、http相关知识 1、http :超文本传输协议 2、一个常见的post请求在协议层做了什么? 请求行/状态行:方法名、URL、协议版本 常见方法名:GET、HEAD、POST、PUT等等 状态行:状态码: 1XX:信息类 2xx:成功 3xx:重定向
3、 http1:队头阻塞、传输效率低、明文传输不安全 http2:多路复用、头部收缩、二进制协议 QUIC:基于UDP实现、解决队头阻塞、加密减少握手次数、支持快速启动
二、http框架的设计与实现 1、http在应用层 2、分层设计 3、应用层设计 4、路由设计 5、网络设计 BIO:阻塞层、关键接口read和write NIO:解决阻塞,有监听器
三、性能修炼 1、网络库 go net网络库的优化
四、三次握手过程
在标准的 HTTP 协议中,建立 TCP 连接时进行了三次握手,而非 HTTP 协议本身进行握手。
三次握手是用于建立 TCP 连接的过程,它在 HTTP 协议的底层进行。HTTP 是基于 TCP 的应用层协议,它需要首先建立可靠的 TCP 连接,然后才能进行数据的传输。
三次握手的过程:
- 第一次握手:客户端向服务器发送一个 SYN 包(SYN = synchronize),表示客户端请求建立连接,并指明客户端的初始序列号。
- 第二次握手:服务器收到 SYN 包后,会发送一个 SYN-ACK 包,表示确认请求,并指明服务器的初始序列号。
- 第三次握手:客户端收到 SYN-ACK 包后,会再次向服务器发送一个 ACK 包(ACK = acknowledge),表示连接建立成功。服务器收到 ACK 包后也确认连接建立成功。
经过三次握手,TCP 连接建立完成,接下来客户端和服务器就可以进行 HTTP 数据的传输。
HTTP 协议本身不直接进行握手,而是依赖于底层的 TCP 协议来进行连接的握手。