1. Web测试基础
web测试也称网站测试,互联网测试,Internet测试
互联网是由一些使用公共语言互相通信的计算机连接而成的网络,如广域网、局域网。


1.1.1. 互联网特点
结构特点 Internet采用了目前最流行的客户机/服务器工作模式,凡是使用TCP/IP协议,并能与Internet的任意主机进行通信的计算机,无论是何种类型、采用何种操作系统,均可看成是Internet的一部分。
严格的说,用户并不是将自己的计算机直接链接到Internet上,而是连接到其中的某个网络上,再由该网络通过网络干线与其它网络相连。网络干线之间通过路由器互连,使得各个网络上的计算机都能相互进行数据和信息传输。例如,用户的计算机通过拨号上网,连接到本地的某个Internet服务提供商(ISP)的主机上。而ISP的主机由通过高速干线与本国及世界各国各地区的无数主机相连,这样,用户仅通过一阶ISP的主机,便可遍访 Internet。由此也可以说,Internet是分布在全球的ISP通过高速通信干线连接而成的网络。
Internet的这样结构形式,使其具有如下的众多特点:
1、灵活多样的入网方式。这是由于TCP/IP成功的解决了不同的硬件平台、网络产品、操作系统之间的兼容性问题。
2、采用了分布网络中最为流行的客户机/服务器模式,大大提高了网络信息服务的灵活性。
3、将网络技术、多媒体技术融为一体,体现了现代多种信息技术互相融合的发展趋势。
4、方便易行。任何地方仅需通过电话线、普通计算机即可接入Internet。
5、向用户提供极其丰富的信息资源,包括大量免费使用的资源。
6、具有完善的服务功能和友好的用户界面,操作简便,无须用户掌握更多的专业计算机知识。
信息交流特点
1、开放性。互联网是以分组交换方式连接而成的信息网络,因此它不存在范围上的封闭界限。打破了时间的和地域的限制。
2、实时性。人们通过互联网进行信息交流活动能够以极高的速度进行,时间不再是信息交流的障碍。
3、交互性。互联网的多媒体、超文本技术使人们的信息交流方式由传统的线性交流,转变为联想式的多向交流,用户同时成为网络信息资源的消费者和生产者。
4、无中介性。互联网没有中间管理层次,它呈现出的是一种非中心的、离散式的管理结构。
5、交流成本低廉。互联网的使用费用远低于传统电信工具。
6、海量信息。互联网以信息爆炸形式形成了信息数据的洪流。
企业内网
企业内部相互传递信息搭建的网络,属于独立性质的网络,企业员工可以浏览公司的信息资料,发邮件,文件共享等。

网络结构
两层结构就是客户端/服务端,客户端提供UI界面,进行业务处理,向数据库服务器发送SQL语句进行操作,结果返回给客户端,看到对应的数据展示。

在一个比较简单的计算机应用系统中,采用两层体系结构的确给人们带来了相当的灵活性。但随着计算机应用水平的飞速发展、企业信息化水平的不断深入、企业客户的不断增加,以及新业务的不断出现,越来越多的用户对计算机应用系统提出了更高的要求: 1. 要能够同时支持成千上万乃至更多用户的并发服务请求
2. 由单一的局域网向跨多个网络协议的广域网扩展
3. 不仅要支持一般的信息管理,而且还要支持关键业务的联机交易处理
4. 从支持单一的系统平台和数据源转向支持异构的多系统平台和多数据源
面对用户的新需求,二层结构的应用模式由于采用客户机与服务器直接联接的方式形成了其固有的一些缺陷:
1. 难以维护
client/server结构用户界面、业务逻辑和数据逻辑相互交错,通常在第一次部署的时候比较容易,但难于升级或改进,而且经常基于某种专有的协议(通常是某种数据库协议)。它使得重用业务逻辑和界面逻辑变得非常困难。
2.难以扩展
随着系统的升级,系统复杂程度大大增加,难以扩展,另外它是一个封闭的系统,很难与其他的应用系统实现互操作。
3.安全性差
客户端程序可以直接访问数据库,可通过编程语言或数据库提供的工具直接对数据库进行操作,不安全
4. 性能不好
客户端直接与数据库建立连接,当有大量的并发用户存在时,会使数据库不堪重负,性能迅速下降,甚至宕机。
三层结构
为解决传统二层模式与应用需求日益突出的矛盾,以交易中间件为基础框架的三层应用模式应运而生,三层结构以中间层管理大量的客户端并为其联接、集成多种异构的服务器平台,通过有效的组织和管理,在极为宽广的范围内将客户机与服务器进行高效组合。
同时中间件开创的以负载平衡、动态伸缩等功能为代表的管理模式,已被广泛证实为建立关键业务应用系统的最佳环境,使在二层模式下不可能实现的应用成为可能,并为应用提供了充分的扩展余地。这种模式的成功应用已为许多国际大型企业在应用的开发和部署方面节省了大量的时间和金钱。
由此促使越来越多的系统开发商和用户采用三层结构模式开发和实施其应用。
三层客户机/服务器模式的核心概念是利用中间件将应用的用户界面、业务逻辑和数据逻辑分为三个不同的处理层,如图所示.


主要分为三层:
- 用户UI层(展现层):实现用户交互与数据展示,向第二层业务逻辑层发送请求,并且接受响应。常指浏览器
- 中间逻辑层:实现应用业务逻辑处理,解析用户的请求,提供业务API结合数据库进行数据操作。
- 数据库层:负责整个应用系统的数据存储,以及逻辑操作。
1.1.2. B/S与C/S

B/S
意味着浏览器/服务器,是网络中最为流行的结构模式,浏览器作为客户端最主要的软件,做到了统一客户端。
服务器主要完成系统功能开发。
B/S主要优点是可以在任何地方进行操作,而不用专门安装客户端软件,只需机器可以上网,客户端零安装,零维护。
软件系统便于扩展
C/S
意味着客户端/服务端的结构
C/S结构主要是软件系统,充分利用两端的环境优势,合理分配客户端和服务端的资源,降低系统的通讯开销。
最大特征就是游戏软件
C/S结构需要针对不同操作系统开发不同的软件,更新代价较高。PC、IOS、Android
区别与联系
B/S是基于HTTP协议的C/S架构,浏览器属于特殊的C/S架构。
提出B/S架构,主要是解决节省客户端更新成本,维护成本。
C/S可以使用任意的通信协议,B/S结构必须使用HTTP协议。
1.1.3. Ajax
AJAX,Asynchronous JavaScript and XML (异步的JavaScript和XML),一种创建交互式网页应用的网页开发技术方案。
- 异步的JavaScript: 使用 【JavaScript语言】 以及 相关【浏览器提供类库】 的功能向服务端发送请求,当服务端处理完请求之后,【自动执行某个JavaScript的回调函数】。 PS:以上请求和响应的整个过程是【偷偷】进行的,页面上无任何感知。
- XML XML是一种标记语言,是Ajax在和后台交互时传输数据的格式之一
AJAX在浏览器与Web服务器之间使用异步数据传输,可以减少网页向服务器请求部分的网页,减少传输成本。
1.1.4. Web系统
- Web系统有丰富的界面
- Web系统常有导航性
- Web系统是分布式
- Web系统是动态、交互的
万维网WWW是大规模、联机式的信息数据库,主要采用网站URL的方式进行站点跳转。
万维网解决了如下问题:
- 标识万维网上的文档资料
- 通信协议制定
- 如何更好的方便搜索引擎寻找资料
HTTP协议
Http协议,全称是HyperText Tansfer Protocol,中文叫超文本传输协议,是互联网最常见的协议。Http最重要的是
www(World Wide Web)服务,也叫web服务器,中文叫“万维网”。
web服务端口默认是80,另外一个加密的www服务应用https默认端口是443,主要用于支付,网银相关业务。
http协议诞生以来有若干个版本,主要是http/1.0 http/1.1
http/1.0规定浏览器和服务器只能保持短暂的连接,浏览器的每次请求都需要和服务器建立一个TCP连接,服务器完成请求后即断开TCP连接,服务器不跟踪每个链接,也不记录请求
http/1.1是对HTTP的缺陷进行重点修复,从可扩展性,缓存,带宽优化,持久连接,host头,错误通知等访问改进。 http/1.1支持长连接,增加了更多的请求头和响应头信息,例如配置请求头的Connection的值为keep-alive,表示请求结果返回后保持连接
HTTP请求方法
在HTTP通信中,每个请求报文都包含一个方法,以告诉web服务器端需要执行哪些操作,这些动作被称为HTTP的请求方法。
1 GET 请求指定的页面信息,并返回实体主体。
2 HEAD 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT 从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE 请求服务器删除指定的页面。
6 CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS 允许客户端查看服务器的性能。
8 TRACE 回显服务器收到的请求,主要用于测试或诊断。
HTTP状态码
HTTp状态码表示web服务器响应http请求状态的数字代码
常见状态码以及作用是
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误
HTTP状态码的命令查看
curl -I www.oldboyedu.com
Server: OES
Date: Sun, 12 Aug 2018 04:18:24 GMT
Content-Type: text/html
Content-Length: 152
Connection: keep-alive
Location: https://www.oldboyedu.com/
Http报文
HTTP请求由请求行,请求头部,空行,请求报文主体几个部分组成。
HTTP报文:它是HTTP应用程序之间发送的数据块。这些数据块以一些文本形式的元信息开头,这些信息描述了报文的内容及含义,后面跟着可选的数据部分。这些报文都是在客户端、服务器和代理之间流动。
请求报文的格式:
起始行: <method> <request-URL> <version>
头部: <headers>
主体: <entity-body>
GET请求报文示例:
GET /books/?sex=man&name=Professional HTTP/1.1
Host: www.example.com 主机名
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)Gecko/20050225 Firefox/1.0.1 客户端类型
Accept-Encoding:gzip,deflate 支持压缩
Accept-Language:zh-cn 支持语言类型
Connection: Keep-Alive 长链接
请求行
请求报文第一行,表示客户端想要什么
由请求方法 url 协议版本 组成
请求头部
请求头由 :
关键字 : 值 组成
通过客户端把请求相关信息告诉服务器
空行
请求头信息之后是一个空行,发送回车和换行符,通知web服务器以下没有请求头信息了

请求报文主体
POST / HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
Gecko/20050225 Firefox/1.0.1
Content-Type: application/x-www-form-urlencoded
Content-Length: 40
Connection: Keep-Alive
sex=man&name=Professional
请求体中包含了要发送给web服务器的数据信息,请问报文主体不用于get方法,而是用于post方法。 post方法适用于客户端填写表单的场合。
HTTP响应报文
HTTP 响应与 HTTP 请求相似,HTTP响应也由3个部分构成,分别是:
- 状态行
- 响应头(Response Header)
- 响应正文
状态行由协议版本、数字形式的状态代码、及相应的状态描述,各元素之间以空格分隔。
状态行,用来说明服务器响应客户端的状况,一般分为协议版本号,数字状态码,状态情况
响应头部
常见响应头信息
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html;charset=utf-8
Date: Mon, 13 Aug 2018 06:06:54 GMT
Expires: Mon, 13 Aug 2018 06:06:54 GMT
空白行
通知客户端空行以下没有头部信息了
响应报文主体
主要包含了返回给客户端的数据,可以是文本,二进制(图片,视频)
HTTP响应例子
HTTP/1.1 200 OK
Server:Apache Tomcat/5.0.12
Date:Mon,6Oct2003 13:23:42 GMT
Content-Length:112
<html>...
1.1.5. URI介绍
url中文叫“统一资源标识符”,是一个用于标识某一互联网资源名称的字符串,在世界范围内标识定位某一个唯一信息资源。
例如
#访问一张郭达的照片
http://www.pythonav.cn/man.jpg
url主要用在各种www客户端和服务器程序上,url可以用一种统一的格式来描述各种信息资源,包括文件,服务器地址和目录等
- 协议类型
- 主机名:域名、IP地址
- 端口号(0~65535),端口由TCP协议管理
- 服务器资源
- URL附加参数

静态网页资源
在网页设计中,纯HTMl格式的网页(包含图片,视频,JS,CSS等样式)通常被称作“静态网页”。
静态网页是相对于动态网页而言的,是指没有后台数据库,不包含程序,不可交互的网页。
静态网页的特点
开发人员写了什么,显示就是什么,一旦编写完成,就不会有任何改变。静态网页一般适用于更新较少的展示型网页,例如(酒水,家具,水果等宣传页),是很多中小网站的展示方式。
静态网页资源对应文件扩展名为
纯文本文件,如.htm .html .xml .js .css
图片或数据文档,如 .jpg .gif .bmp .txt .ppt
视频类文件 .mp4 .avi .flv 等
静态网页重要特性
- 每个页面有一个固定的url地址,url地址不含有问号"?"或"&"等符号
- 网页一经发布到服务器,网页内容是保存在服务器文件系统上的,每个网页都是独立的一个文件
- 网页内容固定不变,容易被搜索引擎收录(优点)
- 网页没有数据库支撑,在网站制作和维护上工作量很大(缺点)
- 网页的交互性很差,缺少程序的功能实现(缺点)
- 客户端解析网址时,由于不需要读取数据库,因此服务器端可以接受更高的并发访问。请求到来时,直接从磁盘上返回数据。(优点)
- 举例(吃火锅,现成的蔬菜)
在高并发,高访问量的场景下做架构优化时,比较关键的就是把动态网页转化成静态网页,而不是直接请求数据库和动态服务器,并且可以吧静态内容推到缓存中,这样就提升用户体验,节约服务器压力成本。
动态网页资源
动态网页是和静态网页相对而言的,动态网页的url后缀一般是.asp .aspx .php .js .cgi
并且动态网页都有标志性的符号"? &",后端都有数据库的支持。
动态网页地址
添加新随笔 https://i.cnblogs.com/EditPosts.aspx?opt=1
动态网页资源特点
- 网页以数据库技术为支撑,大大降低网站维护的工作量
- 动态网页技术的网站可以实现更多的功能,如用户注册,用户登录,投票,用户管理,博客管理等
- 动态网页不是独立存在服务器上的网页文件,用户请求动态程序时,服务器解析程序并且可能读取数据库返
- 一个完整的网页内容
- 搜索引擎(爬虫)一般不会抓取网址中的“?”后面的内容,因此企业都会做伪静态技术页面
- 举例(饭店炒菜,现做)
1.1.6. Web服务器
互联网主流web服务软件
- Apache
- IIS
- Nginx
- Tengine
- Tomcat
- Lighthttpd
主流web服务软件说明
- Apache 中小型 web服务器的老大哥
- Nginx 大型网址web服务,其分支Tengine也在飞速发展
- Lighthttpd nginx流行前的一款web软件
提供动态服务的软件
- php(fastcgi) 大中小的公司都会使用,动态网页语言php程序的解析容器,常配合apache解析动态程序
- tomcat 中小企业动态web服务,互联网java容器主流
- IIS 微软下的web服务软件
Web服务器主要用于监听客户端的请求、处理客户端的请求(静态资源)、网站代理转发。
1.1.7. 应用服务器
应用服务器作用:
- 处理复杂系统的业务和数据库读写操作
- 供应用服务,如你的j2ee中间件:基于jboss,weblogic等的应用,也可以是自己的网络应用服务器,接口服务器是提供给第三方调用的服务,主要是为了我们自己的应用得安全性,我们只把能供给第三方调用的东西封装在接口服务器。
1.1.8. 脚本引擎
脚本引擎,就是一个计算机编程语言的解释器,如用于建网站的asp、php等,它的功能是解释执行用户的程序文本,将它译成计算机能执行的机器代码,完成一系列的功能。
在服务端处理动态网页,生成标准的HTML网页给客户端。
1.1.9. 集群技术



Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中, 实现负载的分发。那么会大大提升系统的吞吐率、请求性能、高容灾
1.1.10. 数据库

数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。
- 文件型数据库(CSV、XML、Excel)
- 关系型数据库(Oracle,SQLServer,DB2,Mysql)
- 内存型数据库(NOSQL、redis,HBase,MongoDb,memcache)