接口和协议
软件开发的两种结构
CS(Client/Server):客户端----服务器结构
BS(Browser/Server):浏览器----服务器结 构
BS与CS优缺点对比
CS
响应速度快,安全性强,用户体验好,一般应用于局域网中,但是开发维护成本
高;
BS
可以实现跨平台,客户端零维护,但是个性化能力低,响应速度较慢。所以有些单
位日常办公应用
BS
,在实际生产中使用
CS
结构。
URL构成及各个协议默认端口
url的构成:
一般来说,http请求都会和URL地址有关,对于url来说
一般由下面5个部分构成
.协议:通常就是第一个冒号之前的内容
常见协议:http,https(http+ssl),ftp,ssh,about,javascript
.域名:就是要访问的服务器的域名(机器名或者IP地址)。一般格式为:
示例://192.168.2.212
.端口:就是访问的服务器自己所设定的服务端口,监听端口
一般来说,如果服务器使用的是协议的默认通信端口,则用户在通过url访问服务器时,是可以省略
端口
常见协议和默认端口
http 80
https 443 or 8443
ftp 21
ssh 22
smtp 25
pop3 110
oracle 1521
mysql 3306
sql server 1433
Http协议
什么是http协议:HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
一个完整的
URL
包括以下几部分:
1.
协议部分:
该
URL
的协议部分为“
http
:”,这代表网页使用的是
HTTP
协议。在
Internet中可以使用多种协议,如HTTP
,
FTP
等等本例中使用的是
HTTP
协议。在
"HTTP"
后面 的“//
”为分隔符
2
.
域名部分
:该
URL
的域名部分为“
www.aspxfans.com
”。一个
URL
中,也可以使用
IP
地址作为域名使用
3.
端口部分
:跟在域名后面的是端口,域名和端口之间使用“
:
”作为分隔符。端口不是一个URL
必须的部分,如果省略端口部分,将采用默认端口
4
.
虚拟目录部分
:从域名后的第一个“
/
”开始到最后一个“
/
”为止,是虚拟目录部分。虚拟目录也不是一个URL
必须的部分。本例中的虚拟目录是“
/news/
”
5
.
文件名部分
:从域名后的最后一个“
/
”开始到“?”为止,是文件名部分,如果没 有“?
”
,
则是从域名后的最后一个“
/
”开始到“
#
”为止,是文件部分,如果没有“?”和“#
”,那么从域名后的最后一个“
/
”开始到结束,都是文件名部分。本例中的文件名是“index.asp
”。文件名部分也不是一个
URL
必须的部分,如果省略该部分,则使 用默认的文件名
6.
锚部分:从“
#
”开始到最后,都是锚部分。本例中的锚部分是“
name
”。锚部分也不是 一个URL
必须的部分
7
.
参数部分:
从“?”开始到“
#
”为止之间的部分为参数部分,又称搜索部分、查询部 分。本例中的参数部分为“boardID=5&ID=24618&page=1
”。参数可以允许有多个参数,参数与参数之间用“&
”作为分隔符。
HTTP1.0和HTTP1.1的区别
HTTP 1.0
规定 浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP
连接, 服务器完成请求处理后立即断开TCP
连接,服务器不跟踪每个客户也不记录过去的请求
。
HTTP 1.0不支持
Host
请求头字段
HTTP 1.1
支持持久连接,在一个
TCP
连接上可以传送多个 HTTP请求和响应,减少了建立和关闭连接的消耗和延迟
。
HTTP 1.1
中支持
Host
请求头字段
http请求
客户端连上服务器后,向服务器请求某个
web
资源,称之为客户端向服务器发送了一个HTTP请求。
http请求方式:
HTTP1.0
定义了三种请求方法:
GET, POST
和
HEAD
方法。
HTTP1.1
新增了五种请求方法:
OPTIONS, PUT, DELETE, TRACE
和
CONNECT
方法。
GET
请求指定的页面信息,并返回实体主体。
HEAD
类似于
get
请求,只不过返回的响应中没有具体的内容,用于获取报头
POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在
请求体中。
POST
请求可能会导致新的资源的建立和
/
或已有资源的修改。
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
TRACE 回显服务器收到的请求,主要用于测试或诊断。
.
常见的http请求:get和post
Get与post请求的区别
1
、
GET
将参数放在URL中。而
POST
将数据放在
BODY
中。
2
、
GET
的
URL
会有长度上的限制,而
POST
的数据则可以非常大。
3
、
POST相
比
GET更
安全,因为数据在地址栏上不可见。
4
、一般
get
请求用来获取数据,
post
请求用来发送数据。
客户端发送一个
HTTP
请求到服务器的请求消息包括以下格式:
请求行(
request line
)、请求头部(
header
)、空行和请求数据四个部分组成。
服务器接收并处理客户端发过来的请求后会返回一个
HTTP
的响应消息
HTTP
响应也由四个部分组成,分别是:
状态行、消息报头、空行和响应正文。
HTTP之状态码
状态代码有三位数字组成,第一个数字定义了响应的类别,共分五种类别
:
1
:指示信息
--
表示请求已接收,继续处理
2
:成功
--
表示请求已被成功接收、理解、接受
3
:重定向
--
要完成请求必须进行更进一步的操作
4
:客户端错误
--
请求有语法错误或请求无法实现
5
:服务器端错误
--
服务器未能实现合法的请求
常见状态码:
200 OK //
客户端请求成功
400 Bad Request //
客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //
请求未经授权,这个状态代码必须和
WWW-
Authenticate
报头域一起使用
403 Forbidden //
服务器收到请求,但是拒绝提供服务
404 Not Found //
请求资源不存在,
eg
:输入了错误的
URL
500 Internal Server Error //
服务器发生不可预期的错误
503 Server Unavailable //
服务器当前不能处理客户端的请求,一段时间后可能恢 复
正常
更多状态码:
http://www.runoob.com/http/http-status-codes.html
接口测试
什么是接口:
API
接口是
Application Programming Interface
的简称,是一些预先定义的函数,包括
接 口地址、传入参数和返回参数。
什么是接口测试
接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交 互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。
接口的分类:
1.webservice
接口
2.http api
接口
webService
接口是走
soap
协议通过
http
传输,请求报文和返回报文都是
xml
格式的
,
我们在测试的时候都用通过工具才能进行调用,测试。
http api
接口是走
http
协议,通过路径来区分调用的方法,请求报文都是
key-value
形
式的,返回报文一般都是
json
串
,有
get
和
post
等方法,这也是最常用的两种请求方式。
一个
URL
就是一个接口:接口大致会分为一下几个部分:
请求协议:
http ---
普通的
http
请求
https ---
加密的
http
请求,传输数据更加安全
请求
IP
:就是指提供接口的系统所部署的服务器地址
请求端口:如果不填端口,默认是
80
,否则需要填写端口号
接口路径:指系统提供的接口在什么位置
接口参数:参数在接口路径后,用“
?
”来表示路径地址完了,剩下的都是参数了,
用“
&
”来区分参数个数
接口测试工作流程
准备阶段(80%)
拿到开发的接口文档
,并理解每个接口的参数及含义
了解被测试系统的业务流程
编写接口测试用例
执行阶段(10%)
测试用例/测试场景执行
测试数据/系统数据收集
分析阶段(10%)
数据汇总/日志分析
测试报告
接口文档
我们做接口测试,需要开发提供接口文档。最重要的有一下几点:
1.
被测接口的地址
2.
接口参数,以及各个参数的说明
3.
必要的
http
头与
http
体
( http
头是可以自定义的,可以用来校验是否是自己人访问
)
4.
接口返回什么值,以及各个返回值的说明
5.
接口是干什么的
接口测试:json
什么是json:
Json是一种数据载体 ,互联网本质就是数据传输,数据传输就需要数据载体。比如:页面信息就是存储在HTML
这
种数据载体中
为什么使用json:
Json传输数据效率更高,所以部分场景下使用
HTML
与
XML 但是JSON
语言描述不及标签语言,所以部分场景下使用
HTML
与
XML如果传递少量数据,使用JSON
接口测试工具及原理
常见接口测试工具
• 典型商业工具:
loadrunner,soapui
• 典型开源工具
: jmeter
• 扩展插件:
POSTMAN
实现原理
:
模拟客户端对服务器进行多连接