什么是接口测试?接口测试基础、案例及Json格式详解

很多小伙伴可能会说接口真的有测试的必要吗?

我只要把功能测试好了不就ok了吗?

答案是肯定的,在中大型项目中,后端、前端多人协同开发过程中,接口测试是必要的。

什么是接口(API)测试?

API全称(Application Progarmming Interface),接口是一个位于复杂系统之上能简化任务,像中间人一样不需要你了解详细的所有细节。比如用户登录页面,只需要调用登录接口,就可以达到登录系统的目的。

接口返回的数据类型都是json,json是一种通用的数据类型.

什么是接口自动化?

接口自动化测试:让程序代替人为对接口项目进行自动化验证测试的过程

接口测试是一种功能测试,也是一种自动化测试。

功能测试的角度上说只要管输入数据后得到的输出结果是怎么样的,从执行方式上来讲接口必须要借助工具来实现。

接口测试与性能测试之间存在接口性能测试,主要通过jmeter来进行压测。

接口测试的意义

  • 更早地发现问题,越早发现bug,修复成本越低

功能测试必须要等到系统提供可测试的界面后才能进行

  • 缩短产品研发周期

接口测试的介入可以更早地发现并解决bug,使得留到功能测试阶段被修复的bug减少,从而缩短整个项目的上线时间

  • 发现更底层的问题

接口测试可以更简单更全面地覆盖到底层的代码逻辑,从而可以发现一些隐藏的bug.

只针对UI层的功能进行测试,就很难发现后端系统对一些异常情况的处理能力.

  • 前端随便变,接口测好了,后端不用变
  • 检查系统的安全性、稳定性
接口测试常用工具:
  • 常用浏览器
  • Postman
  • Jmeter
  • Fiddler

接口的请求和相应原理

针对这一部分所需掌握的知识HTTP协议、会话技术,属于基本常识了,有不了解的同学可自行学习。

JSON语法及数据格式

什么是JSON?

JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation),JSON是轻量级的文本数据交换格式(数据传递)–xml

JSON 独立于语言:JSON 使用 Javascript语法来描述数据对象,JSON 解析器和 JSON 库支持许多不同 的编程语言。 目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON。

语法规则:

JSON 语法是 JavaScript 对象表示语法的子集。

  • 数据在名称/值(键值对)对中 如 {“name” : “zs”}
  • 数据由逗号分隔 如 {“name” : “zs” , ”age”:”18”}
  • 大括号保存对象 如 {“name” : “zs” , ”age”:”18”}
  • 中括号保存数组 如 {“score” : [100,80,90]
数据格式:

接口测试流程

1.接口文档必备要素

接口说明

调用url

请求参数

请求方式

请求参数、参数类型、请求参数说明

返回参数说明

2.接口请求报文拼接方式

URL拼接:

url拼接规则为:Url?param1=value1¶m2=value2

问号前面是请求url,后面是请求参数和参数值,多个参数用&连接

如:
https://api.douban.com/v2/book/search?q=邹伟伟

JSON串:

需要测试工具完成,如postman、jmeter等。其传参方式符合json的组合规则。

3.接口类型

http api接口

http api 接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式,返回报文一般都是json串,请求方式有get、post等方式,

这两种为最常用的请求方式。

webservice接口

webservice 接口是走soap协议通过http传输,请求报文和返回报文都是xml格式,需要通过工具才能进行测试。

数据库访问接口

数据库访问接口是走jdbc方式连接数据,对数据库进行增删改查操作,需要使用工具进行测试。

GET、POST区别:

get使用url或cookie传参,post将数据存放在body中

get的url在长度上有限制,post数据可以很大

post比get更安全,因为数据在地址栏上不可见

一般get用于获取数据,post用于发送数据

HTTP状态码:

200 2开头表示请求发送成功

300 3开头表示重定向

400 4开头表示客户端发送请求有语法错误

401 访问页面未授权

403 无权访问

404 无此页面

500 5开头表示服务器异常

500 服务器内部异常

504 服务器端超时,未返回结果

1.第一个案例(发送一个get请求)
# coding=utf-8 import requests # 请求的链接 url = 'http://suggest.taobao.com/sug?code=utf-8&q=裤子&callback=cb 用例' # 发送get请求 r = requests.post(url) # 请求的状态码 200代表成功 status = r.status_code print(status) # 请求的内容 j = r.json() print(j)

输出结果如下:

2.第二个案例(发送一个post请求)

# 请求的链接 url = 'http://suggest.taobao.com/sug' # post请求以字典格式传入 data = {'code': 'utf-8', 'q': '裤子', 'callback': 'cb 用例'} # 发送post请求 r = requests.post(url, data) # 请求的状态码 200代表成功 status = r.status_code print(status) # 请求的内容 print(r.content)

输出结果如下:

(接口只返回了一个b,这里只需要明白遇到post接口怎么去请求就好了~)

3.第三个案例(进行接口状态码断言)

# coding=utf-8 import requests # 请求的链接 url = 'http://suggest.taobao.com/sug?code=utf-8&q=裤子&callback=cb 用例' # 发送请求 r = requests.post(url) # 请求的状态码 200代表成功 status = r.status_code # 进行接口的状态码断言,等于200则认为通过,不是200不通过 if status == 200: print('用例测试通过') else: print('测试不通过') print(status) # 请求的内容 j = r.json() print(j)

输出结果如下:

4.第四个案例(进行接口内容断言-正常情况)

# coding=utf-8 import requests # 请求的链接 url = 'http://suggest.taobao.com/sug?code=utf-8&q=裤子&callback=cb 用例' # 发送请求 r = requests.post(url) # 请求的状态码 200代表成功 status = r.status_code # 进行接口的状态码断言,等于200则认为通过,不是200不通过 if status == 200: print('用例测试通过') else: print('测试不通过') print(status) # 请求的内容 j = r.json() # 判断接口返回内容里面,有没有 裤子女夏 内容 if '裤子女夏' in str(j): print('存在此数据') else: print('不存在此数据') print(j)

输出结果如下:

5.第五个案例(进行接口内容断言-异常情况)

# coding=utf-8 import requests # 请求的链接 url = 'http://suggest.taobao.com/sug?code=utf-8&q=裤子&callback=cb 用例' # 发送请求 r = requests.post(url) # 请求的状态码 200代表成功 status = r.status_code # 进行接口的状态码断言,等于200则认为通过,不是200不通过 if status == 200: print('状态码校验过') else: print('状态码校验不通过') print(status) # 请求的内容 j = r.json() # 判断接口返回内容里面,有没有 裤子女夏 内容 # 裤子女夏 增加了一个1 if '裤子女夏1' in str(j): print('存在此数据') else: print('不存在此数据') print(j)

输出结果如下:

6.第六个案例(接口的小封装-接口和逻辑代码分开控制-~)

增加config.py主要存放接口

# coding=utf-8 # baseurl 一般接口都是分测试接口和正式接口的,只需要修改ip即可 baseurl = 'http://suggest.taobao.com' # 假装是登录接口 baseurl=于楼上 url_login = baseurl + '/sug?code=utf-8&q=裤子&callback=cb 用例' # 假装是注冊接口 url_register = baseurl + '/sug?code=utf-8&q=裤子&callback=cb 用例' # 假装是首页接口 url_home = baseurl + '/sug?code=utf-8&q=裤子&callback=cb 用例'

增加testapi.py

# coding=utf-8 import requests # 引入config配置接口的文件 import config # 发送请求 使用config.来调用想要的接口 调用首页接口 r = requests.get(config.url_home) # 请求的状态码 200代表成功 status = r.status_code # 进行接口的状态码断言,等于200则认为通过,不是200不通过 if status == 200: print('状态码校验过') else: print('状态码校验不通过') print(status) # 请求的内容 j = r.json() # 判断接口返回内容里面,有没有 裤子女夏 内容 # 裤子女夏 增加了一个1 if '裤子女夏1' in str(j): print('存在此数据') else: print('不存在此数据') print(j)

输出结果如下:


用心的同学已经发现了,这样的话每次接口变了链接等,只需要修改config文件即可 不用去逻辑代码里面去找了

通用接口用例设计

通过性验证

要保证这个接口功能是正确的,按照接口文档上的参数,正常传入,查看是否可以返回正确的结果

参数组合

如:现有一个操作商品的接口,有个字段type。type传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,这样就要测参数组合,type传1的时候,只传商品名称能不能修改成功;id、名称、价格都传的时候能不能修改成功

接口安全:

绕过验证

如购买了一个商品,价格是300元,提交订单时候,把这个商品的价格改成3元,后端有没有做验证,更狠点,我把钱改成-3,是不是我的余额还要增加?

绕过身份授权

如修改商品信息接口,必须得是卖家才能修改,那我传一个普通用户,能不能修改成功,传一个其他的卖家能不能修改成功

参数是否加密

如登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到你的请求,就能获取到你的信息。

加密规则是否容易破解

密码安全规则

对密码的复杂程度校验

异常验证

不按照接口文档上的要求输入参数,来验证接口对异常情况的校验

如必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11

必传非必传、参数类型、入参长度。

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

AI搜索优化指南:2026年长沙五大GEO服务商深度测评与产业适配解析

立足中部数字经济的核心腹地,长沙凭借工程机械、文化创意、食品加工等特色产业集群,正加速AI化转型步伐。根据《2025-2026年长沙数字经济发展行动计划》的指引,利用GEO优化在AI搜索中精准获客,已成为本地企业提升竞争力的关键。行…

深度研究智能体完整实现指南,助你掌握大模型应用开发

文章介绍了深度研究智能体的实现方法,包括规划研究、拆解任务、深入研究、数据反思和总结报告等步骤。作者使用DeepSeek-R1模型和Tavily搜索工具构建了研究系统,提供了完整的代码实现和系统架构设计,为开发者提供了大模型应用开发的实用参考。…

Linux命令-ip命令(网络配置工具)

🧭 说明 ip 命令是现代 Linux 系统中功能强大的网络配置工具,它取代了传统的 ifconfig、route 等命令,提供了更统一和强大的网络管理功能。 下表汇总了 ip 命令的核心操作对象和主要功能。操作对象核心功能简介替代的传统命令link管理网络设备…

超越文本生成:Agent 的三重能力如何为 LLM 注入决策与记忆

第一重觉醒:Tool —— 打开通往世界的窗 从石器到 Agent:工具演化的宏大叙事 人类文明的历史,在某种程度上就是工具演化的历史。 250 万年前,第一批石器出现在东非大裂谷。那是人类智慧第一次外化为物质形态——我们的祖先发现&am…

导师严选8个AI论文软件,专科生搞定毕业论文+格式规范!

导师严选8个AI论文软件,专科生搞定毕业论文格式规范! AI工具让论文写作不再难 在当今学术环境中,AI工具正逐渐成为学生和研究者不可或缺的助手。对于专科生而言,撰写毕业论文不仅是学业的重要环节,更是对综合能力的一次…

Linux命令-iotop命令(实时磁盘 I/O 监控工具)

🧭 说明 iotop 是一个类似 top 命令的实时磁盘 I/O 监控工具,它能精确显示系统中各个进程或线程的磁盘读写情况,帮助快速定位 I/O 密集型进程 。 🔧 安装与基本使用 安装命令 大多数 Linux 发行版默认未安装 iotop,可以…

【必看收藏】LLMs与KGs融合三大框架:2026前沿技术路线图

LLMs与KGs融合是AI发展的必然趋势,通过三大核心框架(KG增强LLM、LLM增强KG、协同进化)形成互补。当前RAG等技术已落地应用,未来将向数据与知识双轮驱动的智能体方向发展,构建既流畅精确又可解释可靠的新一代AI系统。大…

基于dsPIC33CK256MP508的单电阻采样相电流重构算法工程代码功能说明

单电阻采样 基于单电阻采样的相电流重构算法 keil完整工程。 单电阻采样 f103的单电阻,完整工程,带文档,带硬件资料。 f3平台的单电阻完整工程,代码详细注释。 还有微芯的单电阻smo代码加文档 具体如截图请看下一、工程概述 本工程…

软件测试(功能、接口、性能、自动化)详解 | 测试人生路

一、软件测试功能测试 测试用例编写是软件测试的基本技能;也有很多人认为测试用例是软件测试的核心;软件测试中最重要的是设计和生成有效的测试用例;测试用例是测试工作的指导,是软件测试的必须遵守的准则。 黑盒测试常见测试用…

蓝桥杯 Java 编程题提交前自查清单

蓝桥杯 Java 编程题提交前自查清单这份清单针对蓝桥杯无实时评测的特点,帮你在提交前规避语法错误、逻辑漏洞、边界问题等高频失分点,提升一次编码的正确率。一、 语法与编译自查(杜绝 0 分)包声明与类名主类名必须为 Main&#x…

5分钟加载时间,一个Bug:当技术优化“撞碎”用户习惯

一次将软件启动时间从五分钟缩短至30秒的优化,却引发客户负面反馈的井喷。这不是技术的失败,而是技术与社会习惯碰撞的典型缩影。 凌晨三点,伦敦证券交易所的交易系统突然崩溃。当技术人员最终发现罪魁祸首是一个被忽视了三年的警告信息时&am…

2026双重突破:世界模型构建×具身智能实践

要说2025年AI圈最火的是什么,智能体(Agent) 当仁不让。从AutoGPT到各类AI助理,Agent几乎成了AI落地的代名词。2026,新风向,似乎是——世界模型(World Models) 具身智能(…

【干货收藏】AI Agent时代:从卖软件到封装行业经验的终极指南,打造可复用的数字员工

文章阐述了AI Agent作为新一代应用范式的崛起,它不再是简单的软件工具,而是能自主执行任务的"数字员工"。文章详细介绍了AI Agent的核心架构(感知→决策→行动→反馈→迭代),以及如何将行业专家经验封装进Ag…

英伟达Rubin 架构对未来AIDC方案的影响初探

英伟达在CES 2026上展示的 Vera Rubin 架构及其配套的机架级系统,不仅仅是芯片的升级,更是对未来AIDC形态的一次重构。一、 Rubin 架构对AIDC方案的影响英伟达正在强力推动AIDC从“服务器堆叠”时代进入“机架即计算机”的时代。以下是这些新品对未来AID…

必藏!LIR3AG框架:8B模型秒杀32B推理模型,RAG性能提升22.5%,成本降低98%

LIR3AG是一种创新的轻量级重排推理策略框架,通过检索器、重排器和推理构造器三个模块,将推理模型能力"蒸馏"到轻量级模型中。实验显示,8B参数的LIR3AG在多跳问答任务上超越32B参数推理模型,F1指标提升6.2%-22.5%&#x…

ESP8266 温湿度监测系统教程(SHT30+MAX7219+LeanCloud+HTTP 服务)

本教程将手把手教你搭建一个基于 ESP8266 的温湿度监测系统,实现「每秒读取温湿度 点阵屏实时显示 HTTP 局域网访问 每 5 分钟上传 LeanCloud 云端」的完整功能,适合新手快速上手。 一、项目功能清单 硬件:ESP8266 驱动 SHT30 温湿度传感…

48、MQTT 3.1.1

MQTT 3.1.1 在物联网(IoT)、工业控制、智能家居等场景中,设备往往面临带宽有限、计算资源紧张的问题。MQTT(Message Queuing Telemetry Transport)作为轻量级发布/订阅模式协议,凭借低开销、高可靠、易实现…

用S7 - 300 PLC和组态王搭建宾馆热供水电气控制系统

S7-300 PLC和组态王组态宾馆热供水电气控制系统 带解释的梯形图接线图原理图图纸,io分配,组态画面 最近在研究宾馆热供水电气控制系统,发现用S7 - 300 PLC和组态王来做是个不错的选择。接下来就和大家好好唠唠这个系统的搭建过程&#xff0c…

从数据手册到驱动程序:全志R528寄存器操作实战指南

从数据手册到驱动程序:全志R528寄存器操作实战指南 引言:嵌入式开发的必经之路 在嵌入式开发中,理解如何根据数据手册编写驱动程序是核心技能之一。本文以全志R528芯片为例,深入解析如何从数据手册出发,完成外设驱动的…

Comsol中含色散材料光子晶体能带求解大揭秘

Comsol含色散材料光子晶体能带求解。 包含一维光子晶体和二维光子晶体。 共十余个mph文件,包含多个技巧。最近在研究光子晶体的时候,发现Comsol在求解含色散材料的光子晶体能带方面有着强大的功能。今天就来和大家分享一下我在这个过程中的一些发现和经验…