什么是接口?
用户界面
人类与电脑等信息机器或人类与程序之间的接口
硬件接口
电脑等信息机器硬件组件间的接口
软件接口
电脑等信息机器软件组件间的接口,是数据交互的通道,在系统或组件间,完成数据的传递,即API,以HTTP协议形式提供,定义了输入、输出、功能描述的服务。
举个????:比如常见的登陆功能在浏览器中打开登陆页面,输入用户名和密码,点击登陆后,用户名和密码通过客户端与服务器之间的接口传递给服务器,服务器处理提交的数据,去查询数据库,并根据查询到的结果响应客户端发送的请求。
接口的存在使前后端责任划分清晰,发现BUG后可以通过接口区分是前台BUG还是后台BUG;责任划分分明,也可在一定程度上缩短开发周期;接口增加了软件的可拓展性,比如满足接口要求的规则即可实现新增功能。
接口类型
按协议划分:HTTP、TCP、UDP、IP、FTP等
按语言划分:Python、Java、PHP、C、C++等
按范围划分:
系统之间:内部系统之间,内部系统和外部系统之间。程序内部:方法函数和方法之间;类和类之间;模块和模块之间。
什么是接口测试?
接口测试主要测试系统或组件之间交互的数据的正确性,以及逻辑依赖关系的正确性,代替前端或者第三方验证后台响应数据是否正确。
原理
测试人员模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收响应数据后并进行判断的一个过程。可使用工具或代码(Python+unittest+request)模拟客户端向服务器发送请求,校验服务器回发的响应数据是否与预期结果一致。
分类
Web接口测试
服务器接口测试:测试服务器与浏览器的接口外部接口测试:第三方接口测试数据聚合平台:https://www.juhcn/docs/index/otherid/1
模块接口测试
接口测试的优点
接口测试符合测试质量控制前移原则,提早介入。可以发现页面操作发现不了的问题。可以提高测试效率,提升用户体验,降低研发成本。接口测试也是站在用户角度开展的测试。
HTTP协议
协议是计算机通信网络中两台计算机之间进行通信所必须共同遵守的规则或规定;HTTP协议,即超文本传输协议,规定了浏览器和服务器之间通信的规则,是基于请求和响应模式的应用层协议,是目前互联网中广泛使用的一种协议。HTTP协议特点:支持客户端、服务器模式、简单快速、灵活、无连接、无状态
HTTP协议交互过程
客户端通过网络向服务器发送一个请求,目的是向服务器索要资源,服务器接收响应后对客户端的请求作出响应,返回客户端索要的资源。
数据传递格式
互联网的本质就是数据传输,数据传输需要数据载体。
键值对
键名1=值1&键名2=值2
JSON{“键1”:“值1”,“键2”:“值2”,“键3”:“值3”…}
HTML
网页标题
网页显示内容
XML
小花
18
HTML和XML都是标签标记语言,有效数据占有率较低;JSON格式相比标签标记语言传输数据有效率更高,但是JSON语言描述性不及HTML和XML,部分场景依旧使用HTML和XML,若传递少量数据,可能使用JSO
URL,即统一资源定位符,是互联网上标准资源的地址,HTTP使用URL来建立连接和传输数据,互联网上的每个资源都有唯一的URL。
格式:协议://域名:端口号/路径?查询参数1&查询参数2
协议:HTTP/HTTPS域名:本质是IP地址,是为了方便用户去记忆,而自己设计的一个名字,一般需要花钱购买,由一级域名,二级域名,三级域名组成,和服务器一样都需要花钱购买,国内常见的服务商有:万网,新网,西部数据,美橙互联等一级域名:最后一个点后面的内容,.com,.net,.cn二级域名:一级域名左边,一般为需求方自己设计,一级域名和二级域名连在一起应是全世界唯一三级域名:一般为用户自定义,最常见的就是www端口号:在网络主机上定位一个应用,端口号可以省略,没有指定端口号,默认跟随协议HTTP协议默认端口号:80HTTPS协议默认端口号:443路径:对应网页的源代码或网络中的一个数据资源;若资源路径为空,相当于资源路径为“/”。查询参数:传参给网页源码,查询参数语法为键值对
HTTP请求
HTTP请求由客户端发送给服务器,规定了发送给服务器的数据语法格式;请求内容包括:请求行、请求头、请求空行、请求体
请求行
主要内容:请求方法、URL、协议版本请求方法:
POST | 新增 | 有 |
GET | 查询 | 无 |
PUT | 修改 | 有 |
DELETE | 删除 | 无 |
协议版本:httphttphttp0,主要使用http1
请求头
请求头中的数据主要向服务器描述客户端/浏览器的基本信息。
Accept:客户端能够显示的信息类型Accept-Encoding:浏览器支持的压缩类型Accept-language:浏览器支持的语言类型Connection:连接方式,如:Connection:keep-alive➡️保持较短连接,反复和服务器通讯Cookiehost:主机User-Agent:向服务器描述浏览器的类型Content-Type:请求体的数据类型
请求体
POST和PUT请求有请求体,GET和DELETE请求没有请求体。
新版本谷歌浏览器开发者工具中,请求体独立出了一个页签。
HTTP响应
HTTP响应由服务器回发送给客户端,规定了服务器回发给客户端的数据的语法格式。响应内容包括响应行/状态行、响应头、响应空行、响应体
响应行/状态行
主要内容:协议版本、状态码、状态描述
协议版本httphttphttp0,主要使用http1
状态码针对http请求,响应的状态。
*状态码由3位数字组成,第一位数字定义了响应类型,有5种可能取值:
xx:指示信息——表示请求已接收,继续处理2xx:成功——表示请求已被成功接收、理解、接受3xx:重定向——要完成请求必须进行更进一步的操作4xx:客户端错误——请求有语法错误或请求无法实现5xx:服务端错误——服务器无法实现合法的请求
响应头
响应头向客户端描述服务器的基本信息。Content-Type:向客户端描述响应体的数据类型Server:服务器的版本X-Frame-Option:网页中能否显示iframe,sameorigin表示该页面可以在相同域名页面的frame中展示。Content-length:响应体长度
响应体
响应体的数据类型受响应头中Content-Type的值影响,响应体的常见的类型:json、表单、片。
接口风格
传统风格接口
传统风格接口针对用户的某一个操作URL不唯即一个操作可能对应多个URL,响应状态码全部都为200。全部使用POST和GET实现对数据的基本操作。
RESTful风格接口
RESTful是一种为了提高程序易读性和易维护性而制定的接口设计规范,是一个资源定位、资源操作的风格,而非标准,只是提供了一组设计原则。使用唯一的URL定位唯一的资源。在URL中不使用动词,而替换使用词,结合请求方法,区分具体增删改查操作。
Restful风格规范了:URL的实现方式请求的数据的实现方式响应的数据的实现方式
RESTful风格使用POST、DELETE、PUT、GET分别表示增、删、改、查四种操作。
POST:从服务器新建一个资源DELETE:从服务器删除资源PUT:从服务器更新资源GET:从服务器获取一项或多项资源
增
请求方式:POST提交数据格式:键值对或JSON响应状态码:201或200响应返回的数据:返回新生成的资源对象
删
请求方式:DELETE提交数据格式:键值对响应状态码:204响应返回的数据:空
改
请求方式:PUT提交数据格式:键值对或JSON响应状态码:201或200响应返回的数据:返回完成的资源对象
查
请求方式:GET提交数据格式:键值对或JSON响应状态码:200响应返回的数据:返回资源对象的列表/数组或单个资源对象
GET和POST请求
GET:
提交的数据直接显示在地址栏,不安全提交的数据量有限制
POST:
隐式提交数据,更安全没有数据量大小限制
接口测试流程
step分析需求文档,参与需求评审step结合开发提供的接口文档,分析接口step编写接口测试用例step执行接口测试用例
先保证接口的功能是正确的,保证功能的正确性传递特殊数据,保证接口正确使用JMeter编辑自动化测试脚本性能、压力测试
step对缺陷进行跟踪管理step编写接口测试报告
接口测试工具
浏览器插件
接口测试工具不足
测试数据不好控制,无法直接读取或存储json数据不方便测试加密接口扩展性不足
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点