【接口测试】测试基础

news2024/12/26 22:42:24

一、接口测试简介

1.接口测试的定义

接口测试是一种测试系统组件间接口的测试,主要目标是检测外部系统与系统之间以及内部各个子系统之间的交互点,以检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

随着前后端分离开发的程序越来越普遍,后端开发的接口必须符合规范。用户在使用程序时,数据之间的交互也是用接口实现的,所以对接口进行测试是非常有必要的且非常重要的。

在此向大家介绍一些前后端基本概念:

  • 前端:指用户操作的层面,通常都会提供一个可视化界面,例如 Web 前端、APP 前端。前端主要做的事情是网页排版,内容渲染,提供用户输入窗口,屏幕分辨率自适应以及交互效果等。
  • 后端:也是服务器端,对用户数据处理的层面。接收前端传递的数据并对其处理,然后将处理结果返回给前端。后端主要做的事情是负责程序设计架构思想,管理数据库,数据的存取,平台的稳定性与性能等。
  • 前后端接口:前端与后端进行数据交互的统称,也叫做数据接口,属于一种远程调用。通常来说是按照一定约定、规范由后端开发,前端使用。用户在前端进行某些操作,向后端发送请求,从而获取数据或达到一定的目的,前后端协作配合完成用户的操作。

2.接口测试的目的和意义

接口测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。只要将接口暴露出去,那么就应该是准确的,安全的,规范的,稳定的。

接口测试的核心是保证系统的正确和稳定运行。一个系统服务端越接近底层,对系统的整体影响越大。而接口就是服务端对外暴露的一个入口,因此进行接口测试可以保证接口的规范和稳定,保证服务端入口的正确。

接口测试可以保障产品质量,提升用户体验。接口测试可以让更多的隐含缺陷暴露出来,在接口开发阶段就修复掉,降低产品研发成本。在之后的性能测试、界面功能测试也能更加顺利,让产品在保证质量的前提下按时交付。

接口测试的意义在于:

  1. 验证接口的正确性和稳定性:通过测试接口的功能和性能,可以验证接口是否符合预期,并确定其在不同条件下的稳定性和正确性。

  2. 提高系统的可靠性:接口是系统组件间进行交互的桥梁,其质量直接影响到整个系统的可靠性。通过测试可以发现接口中的缺陷和错误,并及时进行修复,从而提高系统的可靠性。

  3. 减少开发成本,节省测试成本:在敏捷开发盛行的时代,测试工作也需要跟随产品的发布进行快速迭代。近两年又提出了测试左移的概念,让测试工作尽早介入,因为越早的发现缺陷,修复的成本就越低。根据数据模型推算,底层的一个 BUG 能够引发上层的 8 个左右 BUG,而且底层的 BUG 很容易引起全系统的崩溃。进行接口测试,可以减少界面测试的 BUG 数,降低修复成本,节省测试成本。

  4. 保证系统的安全性:接口测试可以检测接口级别的安全漏洞,保证系统的安全性。

  5. 促进团队合作:接口测试需要不同部门之间的合作和协调,可以促进团队合作和交流。

总之,接口测试是保证系统质量和可靠性的重要环节,有助于提高系统的健壮性和用户体验。

3.接口测试的分类 

接口测试主要可以分为以下几类:

  1. 功能测试:主要验证接口是否能够正确地完成预期的功能要求,包括输入输出、返回值、异常处理等方面。
  2. 性能测试:主要验证接口在负载、并发等压力下的性能表现,包括响应时间、吞吐量、并发数等方面。
  3. 安全测试:主要验证接口是否存在安全漏洞,例如SQL注入、跨站脚本攻击、权限控制等方面。
  4. 兼容性测试:主要验证接口在不同的操作系统、浏览器、设备等环境下的兼容性,确保接口能够正常运行。

总之,针对不同的测试目的和要求,可以选择相应的测试类型进行接口测试,以便全面覆盖接口的功能和异常情况,保证接口能够正常工作并达到预期的效果。

4.常见的接口协议

接口协议(Interface protocol)指的是需要进行信息交换的接口间需要遵从的通信方式和要求。接口协议的种类非常多。接口协议不仅要规定物理层的通信,还需要规定语法层和语义层的要求。

接口通常有以下几种协议类型:

TCP

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、 基于字节流的传输层协议。在 OSI 网络七层模型中属于传输层协议。TCP 提供 IP 环境下的数据可靠传输,它会事先为所发送的数据开辟出连接好的通道,然后再进行数据发送。 TCP 旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠 TCP 提供可靠的通信服务。

UDP

UDP(User Datagram Protocol 用户数据报协议)为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。与 TCP 都是在 OSI 网络七层模型中的传输层协议,但 UDP 提供的是非面向连接的、不可靠数据流传输。它只是把应用程序传给 IP 层的数据报发送出去,但是并不保证它们能到达目的地。

HTTP

HTTP(Hyper Text Transfer Protocol 超文本传输协议)是一个简单的请求-响应协议,通常运行在 TCP 之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。在 OSI 网络七层模型中属于应用层协议。主要特点是简单快速、灵活、无连接、无状态

HTTPS

HTTPS(全称:Hypertext Transfer Protocol Secure),是以安全为目标的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS在HTTP的基础下加入SSL,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。

RPC

RPC(Remote Procedure Call 远程过程调用协议)是一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。简单来说就是一个节点请求另一个节点提供的服务。在 OSI 网络七层模型中,RPC 跨越了传输层和应用层。RPC 使得开发,包括网络分布式多程序在内的应用程序更加容易。像 Web Service、RESTFul 都是 RPC,只是消息的组织形式、消息协议不同。

FTP

也称为文件传输协议,是一种用于在网络上传输文件的协议。FTP 使用客户端/服务器模型,客户端通过在本地和服务器之间来回传输文件来传输文件。

SOAP

也称为简单对象访问协议,是一种基于 XML 的协议,用于在网络上传输结构化数据。SOAP 使用 HTTP 或 SMTP 协议传输,并使用 XML 格式编码数据。

REST

也称为代表性状态转移,是一种基于 HTTP 协议的架构风格。REST 使用 HTTP 方法(GET、POST、PUT、DELETE 等)对资源进行操作,并使用 URI 标识资源的位置。

二、接口文档

1.接口文档介绍

接口文档是一种说明文档,用于描述软件组件或Web服务如何与外界进行交互的接口。它提供了对接口名称、接口URL、调用方式、参数格式、响应格式以及返回示例等信息进行详细说明,使得调用者可以方便地了解和使用接口。

接口文档的主要目的是提供一种标准的文档格式,使得接口的调用者可以根据文档中提供的说明进行操作,同时也可以为接口的开发和维护提供便利。

在前后端分离的项目开发中,一份 API 接口文档至关重要。它是由前后端工程师共同定义接口,之后的开发工作中都需要根据此接口文档进行开发。接口文档可以使项目在开发过程中前后端工程师有一个统一的文件进行沟通交流,如果项目人员更迭,可以方便查看,了解项目功能接口。后期维护上也非常有利。

2.接口文档

以《腾讯文档开放 API 介绍》为例来介绍接口文档,地址:腾讯文档

 

一份优秀的接口文档包含:简介、概念术语、API 概述、使用步骤、API 接口详情和其它内容。

  1. 简介:简要介绍接口文档的主题、目的以及范围,让读者能够快速了解文档的核心内容,不需要过多,描述清楚该文档是做什么用的即可。

  2. 概念术语:专业词汇的解释,列出与接口相关的重要概念和术语,以确保读者对它们有充分的了解。这包括一些基本的计算机科学和编程术语,以及特定于接口的术语。

  3. API概述:对 API 的分类总结,API 都提供了哪些功能;提供对接口的概述,包括接口名称、版本、支持的语言和相关文档等。

  4. 使用步骤:API 接口如何使用、采用的通信协议、使用时注意点、鉴权、返回的错误代码含义都应该有所体现。

  5. API接口详情:API 接口详情是接口文档的核心内容,也是开发工程师查看最多的一个地方,里面记录了每一个接口的详细内容,并且提供了使用示例。有些接口文档就只有一个 API 接口详情,让开发人员知道有多少接口可以使用,怎么使用就可以了。

  6. 其它内容:与接口相关的内容。例如《腾讯文档开放 API 介绍》就有一大项是开发与应用注册,不是接口文档中的主要内容,但与接口相关。

总之,一份优秀的接口文档应该清晰、简明易懂,提供足够的细节,以便读者能够轻松地理解和使用接口。同时,文档应该易于查找和理解,以便读者能够快速解决问题和获得必要的支持。

3.接口分析

一个接口应该有请求方式、URL、请求参数和返回参数四部分内容。

  • 请求方式:接口请求发送的方式,例如 GET、POST、PUT、DELETE。
  • URL:接口请求的地址。
  • 请求参数:一般有四个内容,分别是参数名称、参数类型、是否必选和描述。
  • 返回参数:返回参数结构多样,可以是 Code 和 Message,也可以是一个对象或列表。

一个接口的详情应该包括四部分内容,分别是接口描述、输入参数、输出参数及示例。

  • 接口描述:接口功能介绍和接口的定义(包括接口的 URL、请求方式)。
  • 输入参数:输入参数的定义和描述。
  • 输出参数:调用接口后的返回值。
  • 示例:接口的使用,示例代码。

如下图所示:

3.1 接口描述

描述

定义

接口名

/openapi/v1/user/auth

请求方式

POST

请求格式

application/x-www-form-urlencoded

 本接口用于获取用户的登录态

 3.2 输入参数

以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见公共请求参数。

参数名称

类型

必选

描述

APPID

Integer

公共参数

TIMESTAMP

Integer

公共参数

NONCE

Integer

公共参数

SIGNATURE

String

公共参数

下面登录方式三选一,每次只能传一种方式

企业微信 Token/Code 登录时,传下列参数

参数名称

类型

必选

描述

third_token

String

第三方票据,用户向第三方验证用户信息

login_type

Integer

填 0

 QQ 登录时,传下列参数

参数名称

类型

必选

描述

third_daid

Integer

第三方登录域

third_puin

Integer

第三方登录QQ号

third_pskey

String

第三方登录PSkey

login_type

Integer

填 1

微信登录时,传下列参数 

参数名称

类型

必选

描述

third_wx_appid

String

第三方微信appid

third_openid

String

第三方微信登录OpenID

third_access_token

String

第三方微信access token

login_type

Integer

填 2

第三方回调登录时,传下列参数

参数名称

类型

必选

描述

third_token

String

第三方票据,用户向第三方验证用户信息

login_type

Integer

填 3

3.3 输出参数

参数名称

类型

描述

toid

String

用户ID

toid_key

String

用户登录key

jump_code

String

跳转用一次性 code

3.4 示例

如下图所示是创建文档接口的示例。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1050059.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Visio如何对文本打下标、上标,以及插入公式编辑器等问题(已解决)

解决这个问题的本质问题,就是在Visio中插入公式编辑器(这不是visio的常用命令,需要添加)。 打开Visio--》文件--选项 点击选项,弹出对话框。在自定义功能区中,点击 常用命令,在下拉选项中&#…

【Ambari】银河麒麟V10 ARM64架构_安装Ambari2.7.6HDP3.3.1问题总结

🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐开着拖拉机回家_大数据运维-CSDN博客 🎐✨🍁 🪁🍁 希望本文能够给您带来一定的帮助🌸文…

IDEA Debug技巧大全,看完就能提升工作效率

作者简介 目录 1.行断点 2.方法断点 3.异常断点 4.字段断点 5.条件表达式 1.行断点 行断点就是平时我们在代码行旁边单击鼠标打上的断点,这个没有什么好说的。关键点在于很多人不知道的,行断点其实是可以右击选择是对改行的全部调用都生效&#xf…

如何在Proteus进行STM32F103C8T6模拟以及keil5开发

一、下载Proteus 8和keil5 最新版 Proteus 8.15 Professional 图文安装教程(附安装包)_proteus密钥_main工作室的博客-CSDN博客Keil uVision5 5.38官方下载、安装及注册教程_keil uvision5下载_这是乐某的博客-CSDN博客 二、新建STM32F103C8项目 接下来…

计算协方差矩阵df.cov()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 计算协方差矩阵 df.cov() [太阳]选择题 下列选项对代码运行结果描述错误的是? import pandas as pd df pd.DataFrame({ A: [1, 2, 3, 4, 5], B: [5, 4, 3, 2, 1] }) prin…

二维码智慧门牌管理系统:智能生活的新选择

文章目录 前言一、地址的唯一性与规范性二、智能化生活三、智能家居的融合四、广泛的应用场景 前言 在科技飞速发展的今天,智能化已经渗透到我们生活的各个层面。而在我们日常生活中,门牌号码的识别和管理是一个看似平凡但却非常重要的环节。为了更好地…

源码编译安装pkg-config

安装环境:银河麒麟 1 到这个网址下载pkg-config源码: Index of /releases (pkg-config.freedesktop.org) 2 解压 3 进入解压后的目录。输入 ./configure 但是报错。 4 根据报错信息,将configure改为: ./configure --with-i…

怒刷LeetCode的第19天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:遍历一次数组 方法二:贪心算法 方法三:双指针 第二题 题目来源 题目内容 解决方法 方法一:动态规划 方法二:贪婪算法 方法三:正则表达式 第…

基础算法--KMP字符串

KMP 算法是一个快速查找匹配串的算法,它的作用其实就是本题问题:如何快速在「原字符串」中找到「匹配字符串」。 在朴素解法中,不考虑剪枝的话复杂度是 O(m∗n) 的,而 KMP 算法的复杂度为 O(mn)。 KMP 之所以能够在O(mn) 复杂度内…

成都优优聚公司是靠谱的吗?

成都优优聚公司专业美团代运营团队,以高效、专业、全面的服务赢得了众多客户的青睐。作为一家在美团代运营行业具备丰富经验和优质资源的公司,我们始终以客户的需求为导向,致力于为客户打造出色的美团线上运营方案。 我们公司拥有一支经验丰富…

设计模式探索:从理论到实践的编码示例 (软件设计师笔记)

😀前言 设计模式,作为软件工程领域的核心概念之一,向我们展示了开发过程中面对的典型问题的经典解决方案。这些模式不仅帮助开发者创建更加结构化、模块化和可维护的代码,而且也促进了代码的复用性。通过这篇文章,我们…

处理不平衡数据的十大Python库

数据不平衡是机器学习中一个常见的挑战,其中一个类的数量明显超过其他类,这可能导致有偏见的模型和较差的泛化。有各种Python库来帮助有效地处理不平衡数据。在本文中,我们将介绍用于处理机器学习中不平衡数据的十大Python库,并为…

面向对象之旅:核心理念、设计方法与UML详解(软件设计师笔记)

😀前言 面向对象技术是现代软件工程的核心,为软件设计和开发带来了一种强大且有序的方法。通过将现实世界的实体和概念映射到可操作的代码结构,该技术使我们能够更高效、清晰和可靠地创建复杂的软件系统。在本章中,我们将详细介绍…

我的国庆回家之路

文章目录 回家的计划假期的礼物学习新技术与家人团聚遇到的趣事总结 🎉欢迎来到IT陈寒的博客空间~我的国庆回家之路 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈寒的博客🎈该系列文章专栏:Java学习路线&#x1…

【运维日常】华为云专线实现idc通过nat出网

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…

【VUE复习·9】v-for 基础用法(循环渲染也叫列表渲染)

总览 1.v-for 都能循环什么 2.用法 一、v-for 都能遍历什么 能循环的东西包括:数组、对象、字符串(和java里面的3个引用数据类型一样)、纯粹循环数量(少用) 二、用法 1.用法1:简单循环(遍历…

开源协作开发者内容平台Vrite

什么是 Vrite ? Vrite 是一个开源协作空间,用于创建、管理和部署产品文档、技术博客和知识库。它旨在提供高质量、集成的用户和开发人员体验。 Vrite 具有以下功能: 内置管理仪表板,用于使用看板或列表视图管理内容生产和交付&am…

亘古难题:前端开发 or 后端开发

目录 一、引言二、两者的对比分析1. 技能要求和专业知识前端开发后端开发 2. 职责和工作内容前端开发后端开发 3. 项目类型和应用领域前端开发后端开发 4. 就业前景和市场需求前端开发后端开发 三、技能转换和跨领域工作四、介绍全栈开发五、结语附、开源项目微服务商城项目前后…

Java获取给定月份的前N个月份和前N个季度

描述: 在项目开发过程中,遇到这样一个需求,即:给定某一月份,得到该月份前面的几个月份以及前面的几个季度。例如:给定2023-09,获取该月份前面的前3个月,即2023-08、2023-07、2023-0…

2023/9/30 -- ARM

今日任务&#xff1a;消息队列实现进程之间通信方式代码&#xff0c;现象 msgW.c: #include <myhead.h> //消息结构体 typedef struct {long msgtype; //消息类型char data[1024]; //消息正文 }Msg_ds;#define SIZE sizeof(Msg_ds)-sizeof(long) //…