接口测试(一)基础

接口测试概述

要进行接口测试,我们肯定要了解什么是接口?什么是接口测试?为什么要进行接口测试?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‘}

原文地址:https://www.cnblogs.com/zouzou-busy/p/10992224.html

时间: 2024-10-04 18:31:51

接口测试(一)基础的相关文章

如何做好接口测试?

sgbtmy:基于selenium的自动化框架开发,我主要是想问一下,你的框架除了前台的自动化,后台的数据的测试是否集成在你的测试框架中? 小刀:你好,个人理解的你所说的后台的数据的测试是指的是对数据的校验,不知理解的是否正确,那么根据这个理解,我的解释是,在我们框架中,增加了很多的功能方法用来帮助进行自动化脚本的编写和结果校验,其中就包括后台数据校验方法,当我们的测试用例需要在后台进行数据校验的时候,调用这些数据校验方法即可.相当于是,前台页面操作的自动化是封装selenium的方法去操作页面

如何做好接口测试?【转载】

sgbtmy:基于selenium的自动化框架开发,我主要是想问一下,你的框架除了前台的自动化,后台的数据的测试是否集成在你的测试框架中? 小刀:你好,个人理解的你所说的后台的数据的测试是指的是对数据的校验,不知理解的是否正确,那么根据这个理解,我的解释是,在我们框架中,增加了很多的功能方法用来帮助进行自动化脚本的编写和结果校验,其中就包括后台数据校验方法,当我们的测试用例需要在后台进行数据校验的时候,调用这些数据校验方法即可.相当于是,前台页面操作的自动化是封装selenium的方法去操作页面

2017 正确的学习姿势

测试到底如何学习? 如果你是以下这几条里中枪的,那么后面的内容对你来说多少是有用的. 1. 虽然想学点东西,身边没任何资源,毫无方向 2. 好像学的东西都很简单,总自以为都会了 3. 学到的总是皮毛,无法结合到一起,不成体系 4. 学是学了,但项目中就用不上 直入正题,从常见的测试技术方向来谈谈,到底怎么样学习才是正确的姿态,避免入坑又没学到什么,能发挥出来才是硬道理,这波先大致来看看有些什么,有机会再深入探讨. (功能测试.自动化测试.接口测试.性能测试.安全测试) 功能测试 为什么有功能测试

接口测试之基于LoadRunner的一个简单示例

这几天一直在捣鼓接口测试,以下总结一下: 1.什么是接口测试:接口是指系统模块与模块之间或者系统与系统之间进行交互,一般我们用的多的是HTTP协议的接口.WebService协议的接口.还有RPC(Remote Procedure Call Protocol)的接口.不管是哪种接口,其本质就是发送一个Request,然后服务器响应后返回一个response,然后我们对response进行分析,这就是接口测试. 2.消息接口测试的两种: a) Webservice:使用soap协议得到想要的东西(

海量用户-高并发SAAS产品测试上线流程

海量用户高并发SAAS产品测试上线流程 SAAS产品测试上线流程-以Web插件产品为例子 1   概述 在互联网产品中,IT公司之间更加注重产品功能之间的协作,SAAS形态的产品扮演着越来越重要的作用. 一个典型的完全由宿主代理的SAAS服务的通讯流程如下图: 这样的产品一般具有如下特点: 一般由第三方提供专门的服务 通常以网络为媒介来提供服务 具备嵌入的客户端功能 具备第三方服务端功能 一般不以独立的产品形式直接面向客户 一般需要集成“寄生”在宿主产品中来面向客户 SAAS形态的主要产品有:

JAVA工程师技能要求

近期做了个JAVA工程师分类, JAVA工程师可能是市场上最多类的程序员:   初级JAVA工程师的基本要求 Good basic programming skills 良好基本编程技能 Foundational Java knowledge JAVA基础知识 Object-Oriented Programming 面向对象编程 Learning on the job  工作中持续学习 Following instructions and receiving feedback 听从指示与反馈 T

0223 研发工程师如何提高接口质量?

背景 最近团队中把只会做功能测试的测试岗位去掉了,那么软件质量的保证就落到了开发人员和产品人员的工作职责中了,不说这完全是一件坏事,这为开发岗位提出了更高的要求. 为了适应团队的变化,找了一门小课程补充了一下关于接口测试的知识和思维.本文是学习完毕之后的一个小结. 当成是学完之后的一个收货的输出,希望可以帮到相关的研发同学. 主要内容 软件测试的主要内容是: 测试工程师做的最多是界面测试,而研发工程师由于实际工作环境的限制,可能只做过少量的单元测试和少量的单接口功能测试: 那如何在没有或者缺少测

java web 开发三剑客 -------电子书

Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知Internet的目的是让各个net交互.所以,Internet实质上是将世界上各个国家.各个网络运营商的多个网络相互连接构成的一个全球范围内的统一网,使各个网络之间能够相互到达.各个国家和运营商构建网络采用的底层技术和实现可能各不相同,但只要采用统一的上层协议(TCP/IP)就可以通过Internet

1、接口测试概要和http基础乱抄篇

一.接口测试的要点: 图片是抄袭的,但是自己还是要总结下要点: 1.检查接口返回的数据是否与预期的一致: 2.检查接口的容错性,验证传递错误的数据类型时,能否正常的处理: 3.接口参数的边界值: 4.接口的性能,即接口请求的响应时间和响应数: 5.接口的安全性: 二.http协议基础乱抄: 首先,说的最多的是,http协议是一种无状态,无连接的协议,即服务端没办法识别请求是谁发起的,响应请求后连接自动断开:服务端只是单纯的给请求返回数据,你要我就给,我也不知道你是谁,发给你我就断开了,一拍两散:

接口测试基础与工具

接口测试基础与工具 2016-09-12 接口测试是集成测试实现的一种方式,分为: 消息接口测试 代码接口测试两类 本章主要还是针对消息接口为主的. 1 接口测试基础 1.1 什么是接口测试 接口是指系统模块与模块或系统与系统间进行交互,一般现在我们用的多的是基于HTTP协议为基础的接口(包括WebService协议或者Tuxedo协议),除此之外还有RPC的接口,但不管是哪种接口,其本质就是发送一个Request报文给服务器,然后服务器响应返回一个Response报文. 我们对Response