网络基础

ip地址

  IP协议提供的一种统一的地址格式,ip地址是标识网络中唯一的一台设备

ip地址的表现形式

  IPV4:以点分隔十进制数据

  IPV6:以冒号分隔十六进制数据

查看电脑的网卡信息

  windows使用:ipconfig

  mac / linux使用:ifconfig、ip addr

本机ip地址

  127.0.0.1本机域名: localhost

IP地址的作用

  通过ip地址能够在网络中找到对应的网络设备。

端口

  端口是传输数据的通道,好比教室的门,是数据传输的必经之路

  每一个端口都会有一个对应的端口号,好比每个教室的门都有一个门牌号,想要找到端口通过端口号即可。

端口号

  就是对端口进行了编号,用来区分和管理不同端口的,通过端口号能找到唯的一个端口。好比门牌号,其实就是一个数字。

  数据通信的流程:通过ip地址找到对应的设备,通过端口号找到对应的端口,然后通过端口把数据传输给应用程序。

  端口号总共有65536个。

端口和端口号的关系

  端口号可以标识唯一的一个端口。

ip+端口号通信流程

  1、通过ip地址能够找到网络中对应的设备

  2、通过端口号能够找到对应的端口,通过该端口给对应的程序发送数据。

  说明:通过端口号就是用来查找对应运行的应用程序的。

端口号的分类

知名端口(Well-Known Ports)

   知名端口即众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。

 动态端口(Dynamic Ports)

   动态端口的范围从1024到65535,一般程序员开发应用程序使用的端口号。比如1024端口就是分配给第一个向系统发出申请的程序。在关闭程序进程后,就会释放所占用的端口号。

说明:程序运行结束端口号就会被释放掉

tcp传输协议

  tcp是传输控制协议,它是面向连接、可靠、基于字节流的传输协议,能够保证数据是可靠的,不会导致数据错乱和丢失。

  提示:想要保证数据按照指定规则进行传输,必须要选择某种传输协议,比如: tcp、udp

tcp的通信流程

  1.创建连接
  2.数据通信
  3.关闭连接

tcp的特点

  面向连接:在数据通信之间先建立好连接,当数据通信完毕,则断开连接

  可靠的

   1.错误校验
   2.应答机制
   3.超时重传
   4.流量控制和阻塞管理

tcp的使用场景

  要求的是数据必须可靠,比如:下载文件,浏览网页等都是基于tcp传输协议的。

udp传输协议

  它是一种不面向连接,不能保证数据可靠性的传输协议,但是传输速度比tcp要快。

udp的使用场景

  比如:发送广播、收音机、视频传输等都是基于udp来完成的。

http协议

  是一个超文本传输协议,它是基于tcp协议来进行数据传输的,目前http协议可以发送和接收任意类型的数据,原来主要用于网页数据的传输

http协议作用

  规定了浏览器和web服务器传输数据的格式

  刘览器必须要发送http请求报文数据

  web服务器必须要发送http响应报文数据。

https协议

  https是对http协议进行数据加密的,也就是说http协议是明文传输的,https协议是加密传输的,能够保证数据的安全性。

  https进行数据加密是通过SSL(安全套接字层)进行加密的。

http和https的对比

  1.安全性不同

   http是明文传输的

   https是基于http进行加密传输的,https的安全性更高

  2.端口号不同

   http默认使用端口号:80

   https默认使用端口号:443

  3.https这个协议需要购买CA证书

  4.传输速度不同

   http由于在传输数据的时候不需要加密,则传输速度比https要快。

   https由于在传输数据的时候需要加密,则传输速度没有http快,但是数据更加安全。

使用谷歌浏览器的开发者工具查看http协议的通信过程

  1、打开谷歌浏览器

  2、在空白地方右击选择检查

  3、选择Network页签

  4、输入想要访问网址

  network里面的每一条记录都是请求+响应的一次过程

主要的页签:

  request headers:请求头信息

  response headers:响应头信息

  response:响应体信息, web服务器给浏览器的数据。

开发者工具的标签选项说明:

  元素(Elements) :用于查看或修改HTML标签;

  网络(Network) :查看http协议的通信过程

http请求报文

  get请求报文

  post请求报文

get请求报文

  1、请求行

   get请求方法 请求的资源路径 协议版本,比如: GET /HTTP/1.1

  2、请求头

   host:请求主机地址

   accept:告诉web服务器客户端接受数据的类型

   user-agent:告诉服务器客户端的名称

   cookie: pgv_pvi=1246921728; 登录用户的身份标识

  3、空行

get原始报文

-- 请求行
GET / HTTP/1.1

-- 请求头
Host: www.baidu.com

Connection: keep-alive

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

Cookie: BIDUPSID=8004359AF4B9299670C277F85B3786E3; 

-- 自定义请求头
token:xxx

-- 空行

 (请求头信息后面还有一个单独的‘
’不能省略)

  如果不使用浏览器发送请求数据,则必须把全部请求报文数据发送给后台程序,比如:使用Python程序发送请求数据,如果使用浏览器的话则不需要自己发送请求报文数据,浏览器已经帮你封装完毕了。

  提示:每项数据之间使用 进行分割,http协议中规定的。

post请求

1、请求行

  post请求方法 请求资源路径 协议版本,比如: post N2/api/?login HTTP/1.1

2、请求头

  host

  user-agent

  content-type:表示请求参数的类型(form表单, json数据),主要是是请求体的参数

3、空行

4、请求体

post原始报文

-- 请求行
POST /v2/api/?login HTTP/1.1

-- 请求头
Host: passport.baidu.com

Connection: keep-alive

Origin: https://www.baidu.com

Content-Type: application/x-www-form-urlencoded

User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

Cookie: BIDUPSID=8004359AF4B9299670C277F85B3786E3; 

-- 空行

 (请求头信息后面还有一个单独的‘
’不能省略)
-- 请求体
username=lyang&pass=123456

get和post报文格式的对比

  get请求:请求行、请求头、空行
  post请求:请求行、请求头、空行、请求体

http响应报文组成

1、响应行

  http协议版本 状态码 状态描述,比如: HTTP/1.1 200 OK

2、响应头

  Server:服务器名字
  Data:服务器处理时间
  Content-Type:服务器告诉客户端内容的类型,比如:Content-Type: text/html;charset=utf-8

3、空行

4、响应体

  客户端使用的数据在响应体里面,比如:返回的html数据或者json数据

http响应报文

-- 响应行/状态行
HTTP/1.1 200 OK # HTTP协议版本 状态码 状态描述
-- 响应头
Connection: keep-alive # 和客户端保持长连接
Content-Type: text/html;charset=utf-8	# 内容类型
Date: Sun, 27 Jun 2021 10:52:40 GMT # 服务器的响应时间
Transfer-Encoding: chunked # 发送给客户端内容不确定内容长度,发送结束的标记是
,Content-Length表示服务端确定发送给客户端的内容大小,但二者只能用其一
Server: BWS # 服务器名称
-- 空行


-- 响应体
<!DOCTYPE html><html lang=“en”> … </html>	# 响应给客户端的数据

http常见的状态码

  • 200 表示请求成功
  • 307 表示重定向
  • 400 表示请求参数有问题
  • 404 表示请求资源服务器不存在
  • 500 表示服务器内部代码问题

http状态码的分类

  • 1xx: 表示请求已经收到,可以继续再发送请求
  • 2xx: 表示操作成功
  • 3xx: 表示重定向
  • 4xx: 表示客户端错误
  • 5xx: 表示服务端程序错误

响应报文中的Content-Type

Content-Type 表示告诉客户端内容类型

  • 表现形式
    • text/html 表示服务器给客户端是网页或者文本数据, 完整格式: Content-Type: text/html
    • application/json 表示服务器给客户端是json数据,完整格式: Content-Type: application/json

请求报文中的Content-Type

在post请求报文中,会有Content-Type,Content-Type 表示告诉服务端内容类型

  • 表现形式
    • application/x-www-form-urlencoded 表示以表单形式提交数据给web服务器端, 具体格式:Content-Type: application/x-www-form-urlencoded
    • application/json 表示以json格式的数据提交给web服务器端, 具体格式: Content-Type: application/json

Content-Type 最常见的数据格式

web服务器给客户端数据的时候使用的Content-Type

  • text/html 一般服务器响应给客户端网页数据的时候会使用该格式
  • image/jpeg 一般服务器响应给客户端是jpeg格式图片的时候会使用该格式
  • image/png 一般服务器响应给客户端是png格式图片的时候会使用该格式
  • application/json 一般服务器响应给客户端是json数据的时候会使用该格式

客户端web服务器数据的时候使用的Content-Type

  • application/json 表示客户端以json形式提交数据给web服务器
  • application/x-www-form-urlencoded : 表示客户端以form表单形式提交数据给web服务器
  • multipart/form-data 表示客户端上传文件数据给web服务器使用该格式

http的请求方法

  1. get 获取服务器数据
  2. post 向服务器提交数据
  3. head 获取响应头信息
  4. put 修改数据
  5. delete 删除数据

get请求方法

  1. get请求表示获取服务器的数据,本质是 “得” 数据

  2. 请求参数的表现形式

    1. http://www.baidu.com?参数名1=值1&参数名2=值2, 比如: http://www.baidu.com?username=zhangsan&password=zhang

      1. 提示: url中不能出现中文或者空格,如果有中文或者空格需要进行url的编码
      2. 提示: get参数需要放到请求地址的后面,使用 ? 进行追加, 多个参数之间使用 & 拼接

post请求方法

  1. post方法表示给服务器提交数据的,本质是 “给” 数据
  2. 请求参数的表现形式
    1. 参数都会以请求体的方式进行提交,在url地址里面看不到提交的参数
      1. 如果请求体里面有多个参数,以表单形式提交的话,多个参数使用 & 拼接, 比如: username=hello&pw=abc
      2. 如果请求体里面有多个参数,以json形式提交的话,多个参数使用 ,分割,比如: {"username":"hello","pw":"abc"}
    2. 特殊说明: 请求参数的类型需要根据接口文档指定
      1. 比如:如果后台程序需要的是json数据格式,那么我们需要指定请求头里面Content-Type: application/json
      2. 提示:如果在请求头里面没有指定Content-Type,默认是以表单形式提交,格式:Content-Type: application/x-www-form-urlencoded

get和post请求的区别

  1. get本质是从服务器获取数据
  2. post本质是给服务器提交数据
  3. get没有请求体
  4. post有请求体
  5. get请求的参数都会暴露在url中,相对来说不安全
  6. post请求的参数都会在请求体里面,相对来说更安全
  7. get请求默认会对页面数据进行缓存
  8. post请求默认不会对页面数据进行缓存
  9. get请求回退无害,不需要再次提交
  10. post请求回退会重新发起请求,需要再次提交数据
  11. get请求有长度限制,但是http协议中没有要求长度限制,但是get请求一般都受浏览器本身的限制。
  12. post请求没有长度限制。
  13. get请求的执行速度比post请求要快。

接口介绍

  接口就是客户端和服务端进行数据交互的通道,客户端通过接口可以把数据提交给服务端,服务端把处理好的数据通过接口发给客户端。通俗理解接口就是一个url,比如: http://127.0.0.1:8080/product

接口测试介绍

  接口测试不关注界面功能,关注的是url接口是否能够满足指定功能,比如: http://127.0.0.1:8080/product 这个接口是一个添加商品的接口,则测试该接口是否能够完成添加商品的操作。

接口测试的原理

  模拟客户端向web服务器端发送http请求报文数据以及获取http响应报文,并验证响应报文的数据和预期结果是否一致。

接口测试的测试点(关注点):

  • 关注url的地址和请求方法是否正确
  • 验证请求回来的数据和预期结果是否一致
  • 隐私参数是否能够保证安全,比如:密码不能在url地址中出现,密码是否进行加密
  • 接口是否能够支持n多个用户同时访问,并能正常提供响应数据的能力。

RESTful风格

  只是接口地址的一种表现形式,RESTful风格接口设计更加简洁。

  提示:不管是传统接口还是RESTful风格接口,对应我们测试而言都是一样的,正常根据接口文档进行测试即可。

json的介绍

  json是JavaScript对象的字符串,它其实就是一个数据格式,目前主要使用web前端和后台程序之间的数据通信上。

json的格式

  • 对象格式 表示一个数据,比如一个学生信息,一个老师信息。

    • 对象格式: 使用 {}, 比如: {"name":"李四","age":20}
  • 数组格式 表示一个集合,这个集合里面可以包含多个数据。

    • 数组格式: 使用 [] , 比如: [{"name":"张三","age":20},{"name":"李四","age":30}]

    提示:json数据中的引号必须使用双引号。

json数据的使用场景

  json数据主要使用在前端程序和后台程序的数据交互上。

  例如: 前端程序一般需要把数据准备成json格式发送给后台程序,后台程序接收到数据后进行相关的处理,再把处理好的数据以json格式方式返回给前端程序。

  提示:前台和后台json数据都是需要包装成http协议的数据进行传输, 请求的json数据会放到请求体里面,响应的json数据会放到响应体里面。

接口测试流程

  1. 需求分析
  2. 接口文档分析
    1. 请求数据

        请求的url是否正确
        请求的方法是否正确
        请求的参数是否正确

    2. 响应数据

        响应的内容是否和预期结果一致
        响应头信息是否明确
        响应的状态码是否正确
        响应的参数是否有说明
          响应体的参数要有说明
          响应头的参数也要有说明

  3. 设计和编写测试用例
  4. 执行用例
  5. 跟踪和管理缺陷(禅道)
  6. 测试完成以后,需要编写测试报告
原文地址:https://www.cnblogs.com/lyang-a/p/14949300.html