接口测试基础

2023-11-06

目录

一、接口及接口测试概念

1、接口

接口的类型

2、接口测试

二、HTTP协议

1、HTTP协议的特点

2、URL格式

3、HTTP请求

4、HTTP响应

三、接口规范

1、传统风格接口

2、RESTful风格接口

四、接口测试流程

1、接口测试流程

2、接口文档解析

3、接口测试的测试点(测试维度)

4、手工测试与接口测试的区别

5、单接口测试(以登录接口用例)

6、业务场景测试


学习视频来自于:3天postman接口测试工具视频教程,适合小白观看,高薪必看_哔哩哔哩_bilibili

一、接口及接口测试概念

1、接口

接口是数据交互的通道,在系统或组件之间,完成数据的传递。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA7ZaJ7Jq0LTE2NQ==,size_20,color_FFFFFF,t_70,g_se,x_16

接口的类型

按划分形式,大致分为以下三类:

1、按协议分,协议不同,接口类型不同。HTTP、TCP、UDP、IP、FTP、USB....

2、按语言分。Java、Python、PHP、C++....

3、按范围划分,系统之间和程序内部。

  • 系统之间:内部系统之间、内部系统和外部系统之间

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA7ZaJ7Jq0LTE2NQ==,size_20,color_FFFFFF,t_70,g_se,x_16

  • 程序之间:方法(函数)和方法(函数)之间、类和类之间、模块和模块之间
#使用接口
def bird():
    something="虫子"
    eat(something)

#接口
def eat(something):
    print(f'小鸟在吃{something}')

bird()

2、接口测试

概念:测试系统或组件之间交互的数据的正确性,逻辑依赖关系的正确性

接口测试原理

借助工具、代码模拟客户端向服务器发送请求, 校验服务器回发的响应数据与预期结果是否一致

  • 数据(预期结果)来源:用户需求

接口测试的特点

  •  接口测试可以提早介入,提前发现bug,符合测试的质量控制前移原则
  • 可以发现页面操作发现不了的问题。如:支付密码,输入非数字、特殊字符
  • 低成本高收益(接口的一个bug ,可能对应上层界面 N 个bug,接口测试可以实现自动化)
  •  不同于传统的单元测试,接口测试站在用户的角度对系统进行全面的测试(用户奇葩的想法在前端页面无法完成,而接口测试可以实现,保证服务器的健壮性)

接口测试的实现方式

  • 工具:postman、fiddler、jmeter
  • 代码:Python + UnitText框架 + requests框架

什么是自动化接口测试?

利用 工具、代码 代替人工 来判断响应结果与预期结果是否一致(依赖断言

二、HTTP协议

HTTP协议:(HyperText Transfer Protocol)超文本传输协议。基于请求和响应模式应用层的协议 。也是目前互联网上广泛使用的一种协议。

1、HTTP协议的特点

  • 支持 客户端、服务器模式
  • 简单快速 (数据可以直接在URL上携带、传递)
  • 灵活(支持的语法格式、数据类型多)
  • 无连接(HTTP---B/S,TCP---C/S (C/S连接要3次“握手”,断开连接要4次“挥手”))
  • 无状态

2、URL格式

URL:(Uniform Resource Locator)统一资源定位符,是互联网上标准资源的地址。
语法格式:
协议:http 和 https
域名:IP地址
端口号
  • http 协议默认端口:80
  • https 协议默认端口:443
资源路径:对应网页的源代码或网络中的一个数据资源。 资源路径可以为空
查询参数:传参给网页源代码。
  • 资源路径 隔分
  • 查询参数可以有多个,之间用 & 隔分。
  • 参数参数的语法 k=v 

3、HTTP请求

由客户端发送给服务器;规定了发送给服务器的数据的语法格式

整体格式:http协议由 请求行,请求头,空行,请求体 组成

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA7ZaJ7Jq0LTE2NQ==,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA7ZaJ7Jq0LTE2NQ==,size_20,color_FFFFFF,t_70,g_se,x_16

请求方法:
  • POST:新增 ——有请求体(登录、注册主要使用)
  • PUT:修改 —— 有请求体
  • GET:查询 —— 没有请求体
  • DELETE: 删除  —— 没有请求体

协议版本:
  • http1.1/http1.2/http2.0 (主要使用 http1.1)
请求头
  • 作用:向服务器描述 客户端(浏览器)的基本信息。
  • User-Agent:向服务器描述浏览器的类型
  • Content-Type:向服务器描述 请求体的数据类型

实践:用Charles抓包验证

Tpshop商城在线网址:http://tpshop-test.itheima.net/

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA7ZaJ7Jq0LTE2NQ==,size_20,color_FFFFFF,t_70,g_se,x_16

4、HTTP响应

 由服务器回发给客户端;规定了服务器回发给客户端的数据的语法格式

整体格式

HTTP响应由 响应行(状态行)、响应头、空行、响应体 组成

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA7ZaJ7Jq0LTE2NQ==,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA7ZaJ7Jq0LTE2NQ==,size_20,color_FFFFFF,t_70,g_se,x_16

状态码:针对 http请求,响应的状态
  • 1xx: 请求需要进一步访问。
  •  2xx:成功。 200 ok
  • 3xx: 数据资源需要重定向访问。
  • 4xx: 客户端错误。404 Not Found 文件/资源 不存在。 403 Forbidden 文件/资源 拒绝被访问(没有权限)
  • 5xx: 服务端错误。

响应体 :响应体的数据类型,受响应头中 Content-Type 的值影响。 常见的类型:
  • json 类型
  • 表单 类型
  • 图片 类型

三、接口规范

1、传统风格接口

  • 使用 GET、POST 实现所有数据的 增删改查操作。
  • 针对 用户的某一个操作,URL 不唯一。
  • 状态码 统一使用 200

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA7ZaJ7Jq0LTE2NQ==,size_20,color_FFFFFF,t_70,g_se,x_16

2、RESTful风格接口

  • 使用 GET/POST/PUT/DELETE 分别表示 查、增、改、删
  • 使用 一个 URL 对应一个唯一的资源。
  • 状态码,根据实际操作请求加以区分。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA7ZaJ7Jq0LTE2NQ==,size_20,color_FFFFFF,t_70,g_se,x_16

四、接口测试流程

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA7ZaJ7Jq0LTE2NQ==,size_20,color_FFFFFF,t_70,g_se,x_16

1、接口测试流程

  • 需求分析与评审
  • 接口文档分析
  • 设计测试计划
  • 设计接口测试用例并提交评审
  • 执行接口测试用例(用工具or代码)
  • bug管理与回归
  • 生成测试报告
  • 接口自动化持续集成(可选)

 什么是接口文档?(由开发人员编写的描述接口相关信息的文档,也叫API文档

展现形式
  • 在线文档 (html)
  • 离线文档 (word 、xmind 、pfd 、Excel)

2、接口文档解析

(登录接口为例)
http 请求:
请求行:
  • 请求方法:POST
  • URL: http://ihrm-test.itheima.net/api/sys/login
  • 协议版本:默认 http/1.1
请求头:
  • Content-Type : application/json
请求体:
  • { “mobile”:“13800000002”, ”password” : ”123456” }
http 应答:
响应行:
  • 状态码、状态描述:200 ok
响应头: 无
响应体:
  • 第一种情况:{"success":true,"code":10000,"message":"操作成功!","data":"xxx"} 第一种情况
  • 第二种情况:{"success":false,"code":20001,"message":"用户名或密码错误","data":null}
  • 第三种情况:{"success":false,"code":99999,"message":"抱歉,系统繁忙,请稍后重 试!","data":null}

3、接口测试的测试点(测试维度)

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETkDtlonsmrQtMTY1,size_20,color_FFFFFF,t_70,g_se,x_16

4、手工测试与接口测试的区别

用例设计要点

手工测试:

  • 测试页面布局、控件的位置是否精准
  • 针对 用户名编辑框中的数据值,展开测试 正确手机号、手机号有特殊字符、手机号不足11位、手机号超11位、手机号为空...)
  • 针对 密码编辑框中的数据值,展开测试 正确密码、错误密码、密码有特殊字符、密码1位、密码100位、密码为空....)
  • 针对 验证码的编辑框中的数据值,展开测试 正确验证码、错误验证码、过期验证码、验证码为空...)

接口测试:

  • 手工页面中的 用户名 编辑框的值,对应 接口中 key username value值。针对 username 的值展开测试。
  • 手工页面中的 密码 编辑框的值,对应 接口中 keypassword value值。针对 password value值展开测试。
  • 手工页面中的 验证码 编辑框的值,对应 接口中 key verify_code的value值。针对verify_code value值展开测试。

测试要点 

手工测试,只要测 编辑框中的数据值  
接口测试,除了要 测试参数值 以外,还要对 参数本身 进行测试。
正向:
  • 必选参数:只选择所有的必选参数。
  • 组合参数:必选参数 与 可选参数,组合测试。
  • 全部参数:所有的必选 + 所有 可选
反向:
  • 多参:多出 一个或多个 必选参数。
  • 少参:缺少必选参数。
  • 无参:没有参数。
  • 错误参数:修改参数名为 错误名称。

5、单接口测试(以登录接口用例)

手工用例设计八大要素:用例编号、标题、项目描述、优先级、预置条件、测试数据、执行步骤、预期结果

接口测试用例:编号、标题、用例名称、优先级、预置条件、接口名称、测试方法、URL、请求头、请求体(请求数据)、预期结果

(复制粘贴,自己打容易出错) 

单接口用例设计——登录成功

单接口用例设计——用户名相关

单接口用例设计——密码相关

 单接口用例设计——参数相关

6、业务场景测试

业务场景测试用例设计——测试点分析

指导思想:
  • 业务场景尽量遵循用户实际使用的场景,按顺序调用接口进行测试。
  • 尽量使用最少的测试用例,覆盖最多的业务场景。
  • 登录成功 —— 添加员工 —— 查询员工 —— 修改员工 —— 再查询 —— 删除员工 —— 查询 员工列表
  • 一般情况下,只需要测试 正向 的业务场景即可!

依赖关系:

  • 1. 登录成功返回的 令牌, 被 添加、查询、修改、删除 依赖。
  • 2. 添加员工成功,返回 员工id, 被 查询、修改、删除 依赖。

业务场景——添加员工

 业务场景——查询、修改员工

业务场景——删除员工、查询员工列表

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

接口测试基础 的相关文章

  • Jmeter 压测-性能调优5大注意

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 小白也能学会的创建Git仓库实操

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 2k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 软件测试/测试开发/全日制/测试管理丨Redis内存数据库

    Redis是一种开源 内存中的数据结构存储系统 它提供了高性能 灵活性和丰富的数据结构 以下是Redis内存数据库的基本介绍 键值存储 Redis基于键值对的存储模型 其中每个键都与一个特定的值相关联 这种简单的数据模型使其易于使用和理解
  • 软件测试/测试开发/全日制/测试管理丨Python深拷贝与浅拷贝

    深拷贝和浅拷贝是两种不同的拷贝方式 它们在处理可变对象 如列表 字典 时有着不同的行为 以下是深拷贝和浅拷贝的主要区别 1 浅拷贝 Shallow Copy 创建方式 浅拷贝通过复制原始对象 创建一个新对象 但对于原始对象中的可变对象 如列
  • Selenium小技巧!

    Chrome DevTools 简介 Chrome DevTools 是一组直接内置在基于 Chromium 的浏览器 如 Chrome Opera 和 Microsoft Edge 中的工具 用于帮助开发人员调试和研究网站 借助 Chro
  • Locust负载测试工具实操

    本中介绍如何使用Locust为开发的服务 网站执行负载测试 Locust 是一个开源负载测试工具 可以通过 Python 代码构造来定义用户行为 避免混乱的 UI 和臃肿的 XML 配置 步骤 设置Locust 在简单的 HTTP 服务上模
  • Python自动化操作:简单、有趣、高效!解放你的工作流程!

    今天跟大家分享一套自动化操作流程解决方案 基于 Python语言 涉及 pyautogui pyperclip pythoncom win32com 依赖包 安装命令为 pip install pyautogui pip install p
  • 外包干了3个月,技术退步明显。。。。。

    先说一下自己的情况 本科生 19年通过校招进入广州某软件公司 干了接近4年的功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了四年的功能测试 已经让我变得不思进取 谈了2年的女朋友
  • Jmeter 性能-并发量计算

    并发概念 指网站在同一时间访问的人数 人数越大瞬间带宽要求更高 服务器并发量分为 业务并发用户数 最大并发访问数 系统用户数 同时在线用户数 估算业务并发量的公式 C nL T C C 3 C的平方根 说明 C是平均的业务并发用户数 n是l
  • APP端网络测试与弱网模拟

    当前APP网络环境比较复杂 网络制式有2G 3G 4G网络 还有越来越多的公共Wi Fi 不同的网络环境和网络制式的差异 都会对用户使用app造成一定影响 另外 当前app使用场景多变 如进地铁 上公交 进电梯等 使得弱网测试显得尤为重要
  • 测试工程师能否作为一份「终身职业」?30岁+怎么办?

    讨论 测试工程师可否作为一份终生的职业 这是我在论坛看到的一个讨论 你的答案是什么呢 我希望大家能认真思考后给出一个属于自己的答案 无论你是新手入门 还是资深专家 回答这个问题请不要凭一腔热血 也不用过分消极 别总和钱挂钩 平心而论即可 就
  • 测试用例评审流程优化

    测试用例 评审是QA日常工作流程中的关键一环 是QA同学完善测试用例 交流测试经验的好机会 负责组内测试用例建设以来 作者对于评审流程做了一些优化工作 本文作者将整个优化过程中的心得体会做了一个总结 希望能给大家带来帮助 01 原始流程 1
  • 软件测试|SQLAlchemy环境安装与基础使用

    简介 SQLAlchemy 是一个强大的 Python 库 用于与关系型数据库进行交互 它提供了高度抽象的对象关系映射 ORM 工具 允许使用 Python 对象来操作数据库 而不必编写原生SQL查询 本文将介绍如何安装 SQLAlchem
  • 软件测试|Python数据可视化神器——pyecharts教程(九)

    使用pyecharts绘制K线图进阶版 简介 K线图 Kandlestick Chart 又称蜡烛图 是一种用于可视化金融市场价格走势和交易数据的图表类型 它是股票 外汇 期货等金融市场中最常用的技术分析工具之一 可以提供关于价格变动 趋势
  • 软件测试|如何使用selenium处理iframe富文本输入框

    简介 在网页开发中 富文本框是常见的元素 用于输入富文本内容 如富文本编辑器或邮件编辑器 如果我们要使用Python和Selenium进行自动化测试或操作这种富文本框 可能会遇到一些挑战 本文将详细介绍如何使用Python和Selenium
  • Jmeter 性能-阶梯负载最终请求数

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 开眼了,自动化测试还能这样用?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 程序员找工作难!拿到外包公司的 offer 我应该去么?

    引言 前一阵子有一个帖子引起了非常广泛的讨论 描述的就是一个公司的外包工作人员 加班的时候因为吃了公司给员工准备的零食 被公司的HR当场批评 这个帖子一发出来 让现在测试行业日益新增的外包公司备受关注 那么外包公司和非外包公司有什么样的不一
  • 一文让你快速写出高效的软件测试用例

    前言 编写测试用例的目的就是确保测试过程全面高效 有据可查 但要编写出高效的测试用例 需要搞清楚什么是测试用例 以及如何编写出高效的测试用例 接下来将从以下几个部分来进行展开 1 什么是测试用例 2 如何编写测试用例 3 软件测试学习资源分
  • 外包干了3个月,技术退步明显。。。。。

    先说一下自己的情况 本科生 20年通过校招进入广州某软件公司 干了接近3年的 功能测试 今年年初 感觉自己不能够在这样下去了 长时间呆在一个舒适的环境会让一个人堕落 而我已经在一个企业干了3年的功能测试 已经让我变得不思进取 谈了2年的女朋

随机推荐

  • SSH远程登录原理与运用

    SSH是每一台Linux电脑的标准配置 随着Linux设备从电脑逐渐扩展到手机 外设和家用电器 SSH的使用范围也越来越广 不仅程序员离不开它 很多普通用户也每天使用 SSH具备多种功能 可以用于很多场合 有些事情 没有它就是办不成 本文是
  • 基于用户 的协同过滤算法

    计算用户相似度和用户对未知物品的可能评分 基于用户的协同过滤算法主要包括两个步骤 1 找到和目标用户兴趣相似的用户集合 2 找到这个集合中的用户喜欢的 且目标用户没有听说过的物品推荐给目标用户 例如现在有A B C D四个用户 分别对a b
  • bugku-本地管理员

    打开场景是登录框 尝试弱口令登录 这里我使用的弱口令有 admin 123456 admin 888888 admin admin admin admin23等 均登陆失败 提示IP已被记录 查看页面源码看看有没有什么提示 可以看到提示了
  • vue2-cli5使用postcss-pxtorem(px转rem)及适应手机微信

    前言 1 为了使项目适配于各种pc端分辨率 所以使用了此插件 2 设计图尺寸是1920 3 根据大多数移动端使用情况 只适配了微信系统 4 vue2 cli5 vue 2 6 14 node 16 14 2 vue2 cli5 ant de
  • PHP发送带附件的电子邮件,使用php发送带附件的电子邮件

    我使用此代码使用php发送带附件的电子邮件 但由于我收到电子邮件并且附件出现在内容中 因此附件中存在错误 在我使用相同的代码并且它成功运行之前 为什么 sending email with attachments function send
  • python设计模式-工厂模式-最简洁的说明与代码

    工厂模式简介 工厂模式实现途径是一个类或者一个方法 通过这个类可以自动化创建出我们想要的对象 工厂模式作用 便于实例化对象 还便于之后增加更多的对象 代码实现 class A pass class B pass class Factory
  • [创业-40]:优秀人与普通人的区别

    0 优秀者是接纳的 口袋 有则改之无则加勉 普通人是踢 皮球 1 优秀者以他人为中心 普通人以自我为中心 2 优秀者遇事先保持冷静 普通人遇事先发泄情绪 3 优秀者善于站在别人的角度思考问题 普通人希望别人站在自己的角度理解自己 4 优秀者
  • Qt unicode字串转中文

    有时候 直接在html里面获取的字符串就是带有 u 的 然后直接显示的时候 u 也会显示出来 这里就是教你如何去掉 u QString filename u6211 u662f u4e2d u6587 do int idx filename
  • 将vscode字体字号调大

    1 进入vscode 2 找到页面左下角齿轮标符点击 然后在弹出选项那里点击设置 setting 3 点击文本编辑器 4 点击字体 5 找到font size点击设置数字 个人建议18 22 即可
  • ‘close’ was not declared in this scope

    close was not declared in this scope 没有包含头文件 unistd h 造成的 加上 include
  • Spring Cloud 学习笔记二:搭建微服务工程之Eureka 注册中心开启安全认证

    目录 Eureka 注册中心开启密码认证 Eureka 注册中心开启密码认证 Eureka 自带了一个 Web 的管理页面 方便我们查询注册到上面的实例信息 但是有一个问题 如果在实际使用中 注册中心地址有公网 IP 的话 必然能直接访问到
  • 如何在30天内,通过TikTok变现一万美金。按照我的方法,你也可以

    大家好 我是项柚 最近创作者基金愈发火热 Tiktok又热了起来 但还是很多朋友停留在川普封停TT的时间节点上 一直没有时间 今天特意写一篇文章来详细分析 其实圈子很重要 方向很重要 所以很多Tiktok运营者做不好的原因是没有交流的圈子
  • [HFCTF2020]EasyLogin

    知识点 jwt伪造 jwt 全称 Json Web Token 是一种令牌格式 可以用来区分各个用户 形式是下面这样 eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9 eyJzZWNyZXRpZCI6MSwidXNl
  • GitHub C 和 C++ 开源库的清单(含示例代码)

    内容包括 标准库 Web应用框架 人工智能 数据库 图片处理 机器学习 日志 代码分析等 标准库 C 标准库 包括了STL容器 算法和函数等 C Standard Library 是一系列类和函数的集合 使用核心语言编写 也是C ISO自身
  • PintOS lab2 User Programs 实验记录

    Background 大体流程如下图所示 显然这时候start process无法被调度到 然后start process 里面load out文件 o文件就是对象文件 是可重定向文件的一种 通常以ELF格式保存 里面包含了对各个函数的入口
  • 教你手机如何查看真实的IP地址

    有朋友不会查询自己手机的IP地址 很多时候我们需要使用vpn切换手机当前的IP 如何判断我们切换IP成功了呢 今天站长就教你手机如何查看目前真实的IP地址 1 打开手机浏览器 2 在搜索框里输入 ip 然后点击搜索 在搜索结果页面就会显示你
  • ESP32 上快捷部署 Tensorflow lite 机器学习(TinyML)

    在这篇文章中 我将向您展示使用 Arduino IDE 将 TensorFlow Lite 模型部署到 ESP32 的最简单方法 无需任何编译内容 Arduino 库 这个 Arduino 库是为了简化使用 Arduino IDE 将用于微
  • 4.8xml于json

    HTTP 协议 HyperText Transfer Protocol 超文本传输协议 是 TCP IP 协议集中的协议 是一个简单的请求 响应协议 指 定了客户端发送给服务器的消息以及服务器的响应 所有的 WWW 文件都必须遵守这个标准
  • matplotlib绘制饼状图

    源自http blog csdn net skyli114 article details 77508430 ticket ST 41707 PzNbUDGt6R5KYl3TkWDg passport csdn net pyplot使用pl
  • 接口测试基础

    目录 一 接口及接口测试概念 1 接口 接口的类型 2 接口测试 二 HTTP协议 1 HTTP协议的特点 2 URL格式 3 HTTP请求 4 HTTP响应 三 接口规范 1 传统风格接口 2 RESTful风格接口 四 接口测试流程 1