接口测试价值
接口测试,检查数据的交换,传递和控制管理过程,绕过了客户端,直接对服务端进行测试。
见下图,对行业的各种测试进行分层,越往上发现bug的时间越晚,成本越高。接口测试相比UI测试,可以更早发现问题,更快的质量反馈。
自制简易计算机网络图:
tcp协议
tcp协议是在传输层中,一种面向链接的、可靠的、基于字节流的传输层通信协议。
tcp udp 的区别,是否面向链接。udp发出去就不管了,就像视频通话。
tcp建立链接,错误重传,拥塞控制——3次握手,4次挥手
- 3次握手
信道是不可靠的,在发送数据之前,要确保信道稳定。
第一次握手:建立连接时,客户端发送syn包到服务器,并进入SYN_SENT状态,等待服务器确认。
第二次握手:服务器收到syn包,确认客户的SYN,同时自己也发送一个SYN包,服务器进入SYN_RECV状态。
第三次握手:客户端收到服务器的包之后,像服务器发送确认包,此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成3次握手,成功连接。
client:hello
server:hello
client:nice to meet you - 4次挥手
第一次挥手:客户端向服务器发送FIN,请求关闭数据传输。
第二次挥手:服务器收到FIN,向客户端发送ACK,其中ack的值等于FIN+SEQ
第三次挥手:服务器向客户端发送FIN,告诉客户端应用程序关闭。
第四次挥手:客户端收到FIN,回复ACK给服务器端,其中ack的值等于FIN+SEQ
client:request to turn off data transfer
server:OK
server:Good Bye
client:Good Bye
RPC协议
以本地代码调用的方式实现远程执行(只需要写代码调用API就可以了,不需要关注通信传输细节)
本地调用方法——序列化——远程通讯传输——服务器收到请求执行代码——返回结果——反序列化
Dubbo
gRPC
Thrift
restful架构
浏览器与服务器交互规则,软件架构风格
get获取资源
post 新增、更新资源
put 更新资源
delete 删除
- 每个URI代表一种资源
- 客户端和服务器之间,传递这种资源的某种表现层
- 客户端通过四个HTTP动词,对服务器端资源进行操作,实现表现层状态转化
Requests
import requests
res = requests.get('https://cn.bing.com/hp/api/model')
print(res.status_code)
print(res.headers)
print(res.encoding)
print(res.text)
print(res.json())
print(res.url)
print(res.cookies)
print(res.request)
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get(url, params=payload)
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post(url, data=payload)
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post(url, json=payload)
xml = '''<xml...>'''
r = requests.post(url, data=xml)
files={'file':open('xxx.txt','rb')}
r = requests.post(url,files=files)
headers = {'user-agent':'my-app/0.0.1'}
r = requests.get(url,headers=headers)
cookies = dict(cookies_are='working')
r = requests.get(url,cookies=cookies)
CSDN>Python技能树>网络爬虫>requests>Python-requests的使用