接口测试(一)基础

简介: 接口测试(一)基础

接口测试概述


要进行接口测试,我们肯定要了解什么是接口?什么是接口测试?为什么要进行接口测试?HTTP协议等等知识。


什么是接口


是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作的细节


什么是接口测试


接口测试是对系统或组件之间的接口进行测试,主要是校验数据的交换,传递和控制管理过程,以及相互逻辑依赖关系,其中接口协议分为:HTTP,WebServices,Dubbo,Thrift,Socket类型


为什么要进行接口测试


接口测试实施在多系统的平台架构下,有着极为高效的成本收益比


1.节约了测试成本


根据数据模型推算,底层的一个程序bug可能引发UI层的8个左右的bug,而且底层的bug更容易引起全网的死机,接口测试能够提供系统复杂度上升情况下的低成本高效率的解决方案


2.接口测试门槛较低


接口测试是站在用户的角度对系统接口进行全面高效持续的检测

 

3.效益更高


将接口测试实现为自动化和持续集成,当系统复杂度和体积越大,接口测试的成本就越低,相对应的,效率产出就越高


HTTP协议


HTTP协议是用于从服务器传输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少,它不仅保证计算机正确快速的传输超文本协议,还确定传输文档中的哪一部分,以及哪部分内容首先显示等。


HTTP特点


1.无连接


无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,既断开连接,采用这种方式可以节省传输时间。


2.媒体独立


这意味着,只要客户端和服务端知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送,客户端以及服务器指定使用适合的MIME


3.无状态


HTTP协议是无状态的,无状态是指协议对于事务处理没有记忆能力,如果服务器不需要先前信息,那么它的应答就比较快,但是缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,此时可以设置缓冲

 

HTTP与HTTPS


HTTPS简单来讲是HTTP的安全版,既HTTP下加入了ssl层,简称HTTPS

HTTPS的安全基础是SSL,因此通过它传输的内容都是经过SSL加密的,它的主要作用分为两种:

1.建立一个信息安全通道,来保证数据传输的安全

2.确认网站的真实性,凡是使用https的网站,都可以点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息,也可以通过CA机构颁发的安全签章来查询

 

Request


Request 既请求,由客户端向服务端发出,可以将Request划分为四部分内容

Request Method:请求方法

Request URL:请求链接

Request Headers:请求头

Request Body:请求体


Request Method


请求方法。常见的有两种类型,GET和POST

GET用于信息获取,而且应该是安全的和幂等的(幂等的意思就是一个操作不会修改状态信息,并且每次操作的时候都返回同样的结果)从发送请求的角度,GET请求相当于我们在数据库中做了查询的操作,这样的操作不影响数据库本身的数据。

POST表示可能会修改服务器上资源的请求,也想当于在数据库中做了修改的操作,会影响数据库本身的数据。

除了常规的GET,POST请求,另外还有一些请求方式,如HEAD,PUT,DELETE等

GET            并返回实体主体

POST         向指定资源提交数据进行处理请求,数据被包含在请求体中

PUT            从客户端向服务器传送的数据取代指定的文档的内容,相当于更新

PATCH        对PUT方法的补充,用来对已知资源进行局部更新

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

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

CONNECt   HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器

OPTIONS   允许客户端查看服务器的性能

TRACE       回显服务器收到的请求,主要用于测试或诊断


Request Header


请求头,用来说明服务器要使用的附加信息,比较重要的有Cookie,Referer,User-Agent等

Accept:请求报头域,用于指定客户端可接受哪些类型的信息

Accept-Language:指定客户端可接受的语言类型

Accept-Encoding:指定客户端可接受的内容编码

Host:用于指定请求资源的主机IP和端口号,其内容为请求URL的原始服务器或网关的位置,从HTTP1.1开始,Request必须包含此内容

Cookie:也常用Cookies,是网站为了辨别用户进行Session跟踪而储存在用户本地的数据,Cookies的主要功能是维持当前访问会话

Referer:此内容用来标识这个请求是从哪个页面发过来的,服务器可以拿到这一信息并做相应的处理,如做来源统计,做防盗链处理等

User-Agent:简称UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本,浏览器及版本等信息,在做爬虫时加上此信息可以伪装为浏览器,如果不加很可能会被识别为爬虫

content-type:既Internet Media Type,互联网媒体类型,也叫做MIME类型,在HTTP协议消息头中,使用它来表示具体请求中的媒体类型信息,例如application/x-www-form-urlencoded表示表单数据,text/html代表HTML格式,image/gif代表GIF图片,application/json代表json类型

 

Request Body


既请求体,一般用于POST请求中,主要定义向服务器提交的数据类型,而对于GET请求Request Body则为空

比如在登录之前我们填写了用户名和密码信息,提交时这些信息就会以Form Data的形式提交给服务器,此时注意Request Headers中指定了connect-Type为application/x-www-form-urlencoded,只有设置connect-Type为application/x-www-form-urlencoded才会以Form Data形式提交,另外我们可以将Connect-Type设置为application/json来提交Json数据,或者设置为multipart/form-data来上传文件

常用Connect-Type和POST提交数据方式的关系

Connect-Type 提交数据方式

application/x-www-form-urlencoded 表单方式提交

multipart/form-data 表单文件上传提交

application/json 序列化Json数据提交

text/xml XML数据提交

application/x-www-form-urlencode与multipart/form-data的区别

在没有type=file时候,用默认的application/x-www-form-urlencode就行

在有type=file时,要用multipart/form-data编码方式,浏览器会把表单以控件为单位分割,并且为每个部分加上Content-Disposition(from-data或file),Content-Type(默认为text/plain)


Response


Response,既响应,由服务端返回给客户端,Response可以划分为三部分

Response Status Code

Response Headers

Response Body


Response Status Code


响应状态码,此状态码表示了服务器的响应状态,如200则表示服务器正常响应,404则表示页面未找到,500则表示服务器内部发生错误,常用状态码如下

200  成功  服务器已成功处理了请求

201  已创建  请求成功并且服务器创建了新的资源

301  永久移动  请求的网页已永久移动到新位置,既永久重定向

302  临时移动  请求的网页暂时跳转到其他页面,既暂时重定向

400  错误请求  服务器无法解析该请求

401  未授权  请求没有进行身份验证或验证未通过

403  禁止访问  服务器拒绝此请求

404  未找到  服务器找不到请求的网页

500  服务器内部错误  服务器遇到错误,无法完成请求

501  未实现  服务器不具备完成此请求的功能

502  错误网关  服务器作为网关或代理,从上游服务器收到无效响应


Response Headers


响应头,其中包含了服务器对请求的应答信息,如Content-Type,Server,Set-Cookie等,下面将一些常用的头信息说明如下

Date:标明Response产生的时间

Last-Modified:指定资源的最后修改时间

Content-Encoding:指定Response的编码

server:包含了服务器的信息,名称,版本号等

Content-Type:文档类型,指定了返回的数据类型是什么,如text/html则返回HTML文档,application/x-javascript则代表返回javascript文件,image/jpeg则返回了图片

Set-Cookies:设置Cookie,Response Headers中的Set-Cookies既告诉浏览器需要将此内容放在Cookies中,下次请求携带Cookies内容

Expires,指定Response的过期时间,使用它可以控制代理服务器或者浏览器将内容更新到缓冲中,如果在次访问时,直接从缓冲中加载,降低服务器负载,缩短加载时间


Response Body


既响应体,响应的正文数据都是在响应体中,如请求一个网页,它的响应体就是网页HTML代码,请求一张图片,它的响应体就是图片的二进制数据,一般在接口的响应内容大多都是json数据内容


Json


json数据类型是做接口自动化必须要知道的,后期整理接口自动化文档时在详细说

json是一种轻量级的数据交换格式,它独立于语言和平台,json解析器和json库支持不同的编程语言,json具有自我描述性,很容易理解,目前大多数接口返回的数据类型为json‘

json数据解析

python中可以使用json模块来对json数据进行编解码,它包含了两个方法

json.dumps()将python数据转化为json数据

json.loads()将json数据转化为python数据类型


看两段代码

import json
data = {'id': 3, 'name': 'zouzou', 'pwd': '77'}
print(type(data))
json_data = json.dumps(data)
print(type(json_data))
print(json_data)
执行结果:
<class 'dict'>
<class 'str'>
{"id": 3, "name": "zouzou", "pwd": "77"}
import json
#外面必须是单引号
json_data='{"id":3,"name":"zouzou","pwd":"77"}'
print(type(json_data))
data=json.loads(json_data)
print(type(data))
print(data)
执行结果:
<class 'str'>
<class 'dict'>
{'id': 3, 'name': 'zouzou', 'pwd': '77'}

相关文章
|
9天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
38 3
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
59 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
2月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
240 7
Jmeter实现WebSocket协议的接口测试方法
|
2月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
249 3
快速上手|HTTP 接口功能自动化测试
|
2月前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
48 5
|
1月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
40 0
|
3月前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
4月前
|
存储
Postman 接口测试配置 Pre-request Script
Postman 接口测试配置 Pre-request Script
212 5
Postman 接口测试配置 Pre-request Script
|
3月前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
3月前
|
SQL Java 测试技术
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决