测试需要了解的web基础知识

1、Web工作原理

1 、用户访问网页,发送一个 http 请求到网络服务器。

2 、网络服务器(应用服务器)进行DNS解析请求得到数据库地址,发送请求给数据库服务器。

3 、数据服务器返回数据给网络服务器,网络服务器解析数据,并生成 html 文件内容放入 http response 中,返回给浏览器。

释放连接TCP连接

若connection 模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接;若connection 模式为keepalive,则该连接会保持一段时间,在该时间内可以继续接收请求;

4 、浏览器解析 http response 。

先解析状态行的状态码,查看请求是否成功

创建DOM树:

5 、浏览器构造 DOM 树。(文档对象模型):浏览器将html代码通过html解析器解析后,构建为一棵DOM树

6 、浏览器接收 css代码 ,通过css解析器解析,构建出样式表规则,并应用在 DOM 树节点上,得到一棵带有样式属性的DOM树

布局

7、浏览器按从上到下,从左到右的规则,读取DOM树的文档节点,按顺序存放在一条虚拟的传送带上,如果是同一层级就放在同一个盒子,依次嵌套;文档流排完后,开始获取节点的CSS属性(位置,大小等信息),然后将节点一一布局在浏览器页面对应的位置中

8、浏览器下载 js ,并解析执行 js,最后渲染显示页面。

2、HTTP协议(超文本传输协议)

基于TCP/IP通信协议来传输数据

格式:http://host[":"port][abs_path]

http 表示要通过 HTTP 协议来定位网络资源;

host 表示合法的 Internet 主机域名或者 IP 地址 ;

port 指定一个端口号,为空则使用缺省端口 80;

abs_path 指定请求资源的 URI;如果 URL 中没有给出 abs_path, 那么当它作为请求 URI 时, 必须以“/”的形式给出, 通常这个工作浏览器自动帮我们完成。

uri和url的区别

uri:uniform resource identity 统一资源标志符

url:uniform resource location 统一资源定位符


HTTP请求

通过TCP套接字,客户端向Web服务器发送一个文本的请求报文;

http是无状态协议,即这次的请求和上一次的请求是没有关系的

请求报文分为3部分:

1、请求行:请求方法,URL,请求版本

2、请求头

3、请求正文

请求方法:

GET:请求指定的页面信息,并返回实体主体。

POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中(body)。POST请求可能会导致新的资源的建立和/或已有资源的修改。

HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头

PUT:从客户端向服务器传送的数据取代指定的文档的内容。

DELETE:请求服务器删除指定的页面。

get请求和post请求区别

1、参数传递

相同点:都包含请求头和请求行

get请求是把请求参数放在url后面,用?隔开

post请求是把请求参数放在请求协议的内容中

2、长度限制

不同浏览器对url有长度限制,因此get请求不能传太多参数,post请求没有限制

3、get请求只能传文本,post请求可以传文本和二进制数据如文件

响应


响应报文分为4部分:

1、状态行:返回结果(200,400等等),版本

2、响应头

3、响应正文

状态码分类

1xx:信息型,服务器收到请求,需要请求者继续操作

2xx:    成功,请求成功并处理,

       如:常见200

3xx:重定向,需要进一步操作以完成请求,

        如301:网页端被永久重定向到其他url

            302:网页被临时重定向到其他url

4xx:客户端错误,请求预发错误或无法完成请求

如:400:客户端请求预发错误不能被服务器理解

        401:请求未经授权

        404:请求的资源不存在

5xx:服务端错误,服务端在处理请求过程中发生错误   

如:500:服务器发生不可预期的错误

        503:服务端暂时不能处理请求,需要等待一会

HTTP和HTTPS区别

S:ssl(安全套接字层)
HTTP是明文的,HTTPS经过SSL协议加密处理,更安全

http和https使用连接方式不同,默认端口也不一样,http是80,https是443。

什么是session,cookie,token

session是记录客户端和服务端会话状态的机制

校验流程:

1、客户端发送一个http请求到服务端

2、服务端接受到请求后,创建会话后,发送一个响应给客户端,这个响应头包含cookie(带上sessionid)

3、客户端发起二次请求的时候,会带上cookie

4、服务端会解析cookie,并对cookie内容进行校验,校验通过返回响应信息给客户端

备注:

cookie验证是有状态的,意味着会话在客户端和服务端需要一直保持

一旦用户退出登录,则session在客户端和服务端都会被销毁

cookie的格式

Set-cookie: NAME=VALUE Expires/Max-age=DATE Path=PATH Domain=DOMAIN_NAME SECURE

参数意义:

NAME: cookie的名字

VALUE: cookie的值。

Expires: cookie的过期时间。

Path: cookie作用的路径。

Domain: cookie作用的域名。

SECURE:是否只在htps协议下起作用

客户端和服务端请求响应流程

token是无状态的,

token的校验流程和cookie类似

用户退出登录,token在客户端被销毁,不需要经过服务端

2、浏览器机制

什么是内核

支持浏览器运行的最核心的程序,包括两部分:渲染引擎和JS引擎

渲染引擎:负责对网页语言(HTML,JavaScript)的解释并渲染

JS引擎:算法,逻辑等的处理

浏览器工作流程:


浏览器工作流程图

1、浏览器解析内容包括:

(1)HTML,SVG,XHTML,解析完成后生成DOM树

(2)解析CSS生成CSS规则树

(3)JS脚本加载后,通过DOM API和CSSOM API来操作DOM树和CSS规则树

备注:通常情况下DOM树和CSS规则树是同时构建,但是CSS规则树会阻塞渲染,所以需要等CSS规则树构建完成后才能继续构建渲染树

构建DOM树中如果遇到script标签,则DOM树会停止构建,只是脚本执行完成

2、浏览器引擎根据DOM树和CSSOM树,构建一棵渲染树,渲染树只会包含节点和这些节点对应的样式信息(无位置等信息)

3、布局(也叫回流)

计算CSS样式

构建渲染树,

Layout – 定位坐标和大小,是否换行,各种position, overflow, z-index属性,获取各个节点的大小和位置

正式开画

4、绘制

调用操作系统的native GUI的API进行绘制,将渲染树转化为屏幕上的像素

渲染=布局+绘制

重绘和回流

重绘:渲染树的元素只改变了外观和风格,不影响布局

回流:渲染树的元素改变了大小,位置等(删除元素,内容变化,浏览器窗口变化等),影响布局需要重新构建

回流必定会造成重绘,重绘不一定会造成回流

IE浏览器与其他浏览器的区别

不同浏览器的区别本质上是内核的差别,表面是界面的差别

常见浏览器内核区别

主流的渲染引擎如下:

1、Trident:IE浏览器使用的内核(IE5-IE10),世界之窗,360安全浏览器,搜狗浏览器

2、Gecko:跨平台,mozilla firefox

3、webkit:跨平台,Chrome,safari,Android手机自带的浏览器,遨游3.0

4、presto:opera7.0及以后的版本采用的内核

主流的JavaScript引擎:

1、chakra:查克拉,IE9使用的最新JavaScript引擎

2、spidermonkey /tracemonkey/jaegerMonkey:spidermonkey应用在mozilla firefox1.0-3.0版本上, tracemomonkey 应用在3.0-4.,0版本上,jaegermonkey应用在4.0及以后新的版本上

3、V8引擎:Chrome浏览器,遨游3.0

4、Nitro:safari 4及以后的版本上

5、linear A/  linear B /futhark/carakan:linear A 用于Opera4.0-6.1版本,linear B用于opera7.0-9.2版本 futhark应用于opera9.5-10.2版本,carakan用于Opera10.5及后续的版本

备注:opera在javascript引擎的跑分上一直是遥遥领先的

为什么兼容测试需要特别关注IE浏览器?

因为IE10之前的各个版本兼容程度不一样;且IE又是window内置的浏览器,因此需要特别关注

浏览器加载html和渲染CSS顺序

1、用户输入一个网址(假设没有缓存),浏览器向服务器发起请求,服务器返回HTML文件

2、浏览器开始加载html,遇到一个标签有一张图片链接,浏览器向服务器发起请求图片,但是不会等图片下载完再接下去渲染;浏览器会一边往下渲染,一边下载图片,直至图片下载完成后,发现图片大小影响下面已经渲染过的排版,浏览器需要回过头来重新计算布局渲染页面

3、浏览器继续载入HTML代码,发现一个标签,引用外部CSS文件;浏览器向服务器发起请求,服务器返回CSS文件,浏览器一边加载body中的代码,一边用CSS渲染页面

4、 浏览器发现了一个包含一行 JavaScript 代码的

你可能感兴趣的:(测试需要了解的web基础知识)