接口测试整理

1.认识接口测试

手工测试:用户 手动操作图形界面与服务端程序进行数据交互

接口测试:用户手动操作工具或脚本与服务端程序进行数据交互 

1.1服务端程序

现代软件开发,大多是网络程序开发,网络程序开发通常分为服务端程序和客户端程序,如我们打开一个手机APP,也就是客户端程序,输入一个搜索关键字时,这个信息就会被发送到服务端程序上,然后服务端程序做完信息检索就会把搜索结果发回客户端程序上.

接口测试的目标就是测试服务端程序.

1.2图形界面

即客户端程序里提供给用户使用的界面,标准叫法为用户接口(User Interface)和图形化用户接口(Graphical User Interface).区别是UI泛指各种给用户提供的界面.比如Linux操作系统中的命令行界面.也是一种UI,而GUI指图形化界面.

1.3数据

当我们操作UI时,客户端程序会把我们想要发送给服务端指令封装成数据的包.会封装成什么类型的包,取决于数据在网络层哪一层封装.当服务端把数据处理完毕或指令执行完毕后,服务端会把要给用户看的数据也封装成包,发送给客户端,客户端再把包解开,给用户看里面的数据,这就是封包解包的过程

1.4工具或脚本

当我们用图形界面做手工测试时,可以不用工具或脚本,客户端程序会完成数据的封包.这样测试的对象是整个程序,也就是我们把客户端程序加上服务端程序视为一个黑盒,接口测试则把测试对象变为服务端程序,也就是说,我们把服务端程序视为一个黑盒,然后再用工具或脚本去模拟客户端程序的工作,(像客户端程序一样去做封包工作和数据发送工作,在收到服务端返回信息后,像客户端程序一样把包解开来,把数据呈现出来.)


2.网络协议

什么是协议?

网络协议(network protocol):简称协议,是为了进行网络中的数据交换而建立的规则.标准或约定

协议的核心: 请求与响应 如同人类交流方式的 询问和回答

协议定义了通信实体间交换报文格式和次序以及发送和接收报文的方式及处理动作.


3.网络分层和数据

为什么网络需要进行分层?

可以想象一个整个互联网,有无数的终端很多很多的协议,无数的交换机和路由器.随着时代的不断发展,这张网越来越大,甚至家里的智能家居都能上网

为了描述如此超级复杂的系统,计算机网络采用了分层的方法,每一层实现了一项特定服务或功能

同时,每一层都使用它以下的所有层次提供的服务

我们只需要关注各层次本身的功能和向上提供的服务,就可以理解计算机网络这个复杂系统

如下是两种网络分层方法:

五层因特网协议栈
    应用层
    运输层

    网络层

    链路层
    物理层
7层ISO OSI参考模型
应用层
表示层
会话层
运输层

 

网络层

 

 

链路层

 

物理层

前面提到在分层模型描述下的复杂系统,她的每一个层次都会具备自己的功能,以及向更上方层次提供服务,而接口测试有时候又叫服务测试.换言之,接口测试其实测试的就是待测软件提供的服务,而现在大多待测软件是网络程序,它使用了互联网各个层次的服务,又在其上附加了自己的功能,并提供给用户用.

这里,,一个待测软件,提供给用户很多很多接口就是我们接口测试要测试的服务.

一个待测软件内部也可以有很多很多接口,也可以分层次,比如这样:

UI层

Service层
数据库层

图上是一个超级简单三层结构,这里数据库提供了数据存储服务,service层和它以下的层次一起提供了各种业务逻辑及处理功能,而UI层和它以下的层次一起提供了基于界面的业务逻辑处理功能.到这里为止,我们知道了更广义的接口测试.


4.应用层和HTTP协议

应用层是网络应用程序和他们的应用协议所在之处.

应用层有许多协议,比如HTTP协议,SMTP协议和FTP协议等.

HTTP协议,我们上网在浏览器里输入的网址前的那个http://就表示我们在用http协议请求和传送网页.

SMTP协议,简单邮件传输协议,在我们使用Outlook之类的邮件程序的时候就需要配置使用的电子邮件的SMTP服务器地址(有的邮件是用POP3协议的)

FTP协议:这个使用的更多了.内网上传下载文件,常常使用FTP

像这样,展示了一个浏览器搜索引擎通过HTTP协议向服务器端发送了一个请求要求获取某个关键字的过程

那么HTTP协议里又是怎样封报文和解报文的?

HTTP协议里是按照协议规定好的格式来封装报文和解报文的,比如这样:

这是一个HTTP请求的三个组成部分.

请求行,包括了使用的HTTP方法(如Post,Get,Delete等),请求的URL,和协议版本

请求头(header),包括了一些字段,这里可以放很多有业务意义的字段,比如用户名和密钥,也可以放一些很常见的通用的内容,比如日期,服务器软件名及版本,请求体长度等.

请求体(body),具体的业务数据,比如常见的restful风格的http接口里会在这个地方放一个json对象.

上面是发送的请求,下面是服务器给的响应:

这里唯一不同是响应的第一行是状态行.

状态行里可以看到状态码和短语,一些常见状态码和短语有:

HTTP协议概述:

  • 使用TCP传输服务
  • 服务器在80端口等待客户请求
  • 浏览器发起到服务器的TCP连接(创建套接字socket)
  • 服务器接受来自浏览器的TCP连接
  • 浏览器与web服务交换HTTP消息
  • 关闭TCP连接

HTTP连接的两种类型:

非持续连接的HTTP:

  • 每个TCP连接最多发送一个对象,然后断开连接
  • 下载多个对象需要建立多个连接
  • HTTP1.0版本使用非持续连接

持续连接的HTTP:

  • 多个对象可以在客户和服务器之间的单个TCP连接中传输
  • HTTP版本默认使用持久性连接

HTTP协议有两类消息1.请求消息 2.响应消息

报文格式:ASCII

请求行(GET.POST.HEAD命令)   /r/n回车 换行符

上传方法

即浏览器将数据上传到Web服务器

Post方法

  • 网页经常需要填写表格(form)
  • 在请求消息的消息体(entity body)中上传客户端的输入

URL方法

  • 使用GET方法
  • 输入信息通过request行的URL字段上传

HTTP将每个对象都封装在独立的响应消息中

应用层这里我们只简介HTTP协议,值得一提的是做接口测试.绝大多部分是HTTP协议的接口测试.


 

5.其他层次

传输层

传输层主要有TCP和UDP两个协议我们需要知道,这一层传输报文段,顾名思义,传输层的协议就是用来把应用层报文从一个端传送到另一个端,应用层的报文,比如http报文,可以通过TCP或UDP来传输.

区别是:

TCP协议是面向连接的服务,它能确保报文被传送到目的地,如果目的地没收到,会重新传.

UDP协议是无连接的服务,它不管三七二十一,只要把报文发出去,不管到底有没有接收到.

以TCP为例,她也有自己的报文段格式.前面应用层的整个报文,作为它的报文段里的业务数据来传输.我们可以想象成一个快递包裹,它里面装着真实数据,从应用层开始,每一层都会在这个包裹外面再包一层包裹,并在包裹皮上写上这一层自己定义的一些数据.

我们需要知道TCP三次握手是怎样进行连接的

TCP三次握手的过程是建立连接的过程,

过程解读:第一次握手是由客户端向服务器端发起的,这是用来去发起一个连接建立的请求.这个报文中的SYN位会被标记为:1,所以我们常把它称作SYN包  ;  第二次握手是由服务器向客户端发起的,是来确认服务器的一个请求连接的,这个报文中我们的ACK位还有SYN位都会被标记为:1,所以我们会把它叫做SYN-ACK报文  ;   第三次握手同

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值