接口测试学习第一天

news2024/11/23 21:06:49

1.  接口

接口的定义:是指系统或组件之间的交互点,通过这些交互点可以实现数据的交互。(数据交互的通道)

接口的分类:硬件接口和软件接口;我们这里只关注软件层面的接口;

1.1  接口的类型

接口测试分类有许多种,按照范围划分:系统之间的接口和程序内部的接口;

系统之间的接口:多个内部系统之间的交互,内部系统与外部系统之间的交互;

程序内部的接口:方法与方法之间,模块与模块之间的交互;

2、接口测试

2.1 概念

接口测试就是对系统或组件之间的接口的进行测试。校验传递的数据正确性和逻辑依赖关系的正确性!

2.2  接口测试原理

模拟客户端向服务器发送请求,服务器接收请求后进行相应的业务处理,并向客户端返回响应数据,检查响应数据是否符合预期;

  •  原理
    •  接口测试,主要针对的测试目标---服务器
  • 怎么测试?
    •  模拟客户端,向服务器发送请求。
  • 用什么测?
    • 工具:fiddler、postman、jmeter
    • 代码:python+UnitTest框架+Requests框架
  • 测什么?
    • 测试服务器针对客户端请求,回发的响应数据是否与预期结果一致!
      • 人眼对比!
      • 断言!

2.3    接口测试的特点

  • 测试可以提前介入,提早发现bug,符合质量控制前移的理念;
  • 可以发现一些页面操作发现不了的问题;
  • 接口测试低成本高收益(底层的一个Bug能够引发上层8个左右Bug,接口测试可以实现自动化);
  • 不同于传统的单元测试,接口测试是从用户的角度对系统进行全面的检测;

2.4  接口测试的实现方式

  • 使用接口测试工具类来实现(比如:JMeter、Postman)
  • 通过编写代码来实现(比如:Python+Requests)

什么是自动化接口测试?

借助工具、代码、模拟客户端发送请求给服务器,借助断言自动判断预期结果和实际结果是否一致!

3.  HTTP协议介绍

HTTP:(HyperText Transfer Protocol) 超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议;

3.1  HTTP协议的特点

  • 支持客户端/服务器模式
  • 简单快速
  • 灵活
  • 无连接
  • 无状态

3.2  应用层、传输层、网络层、链路层的关系

应用层、传输层、网络层、数据链路层_Anita-Sun的博客-CSDN博客_应用层传输层网络层数据链路层应用层包括:应用服务 (FTP(FileTransfer Protocol,文件传输协议)和DNS(Domain NameSystem,域名系统))发送HTTP请求DNS域名解析系统:提供通过域名(www.baidu.com)查找IP地址(102.182.1.1),或逆向从IP地址反查域名的服务。传输层TCP UDP分割数据(HTTP请求报文),并在各个报文上打上标记序号及端口号后转发给网络层。TCP协议:提供可靠的字节流服务(将大块数据分割成以报文段(segment)为单位的数据包进行https://blog.csdn.net/AnitaSun/article/details/115621590ip的作用:在网络环境当中标志唯一主机;

端口的作用:在一台主机上长到唯一应用;

应用层(Http):端口层-IP层-链路层;

4.   URL

URL:  (Uniform Reaource Locator)统一资源定位符,是互联网上标准资源的地址。HTTP使用URL来建立链接和传输数据;

URL格式

http://www.test.cn:8080/news/index.html?uid=123&page=1;

  • 协议部分:http,常见的协议有Http,Https,ftp等;规定数据传输的方式
  • 域名部分:www.test.cn,也可以使用ip地址作为域名使用;在网络环境中找到主机
  • 端口部分:8080,端口可以省略,默认端口(http:80,https:443,ftp:21);在网络主机上,标识一个进程(应用程序)
  • 资源路径部分:/news/index.html;标识网络资源(文件、图片、音视频、变量等)
  • 查询参数部分:uid=123&page=1,可以允许有多个参数,多个之间用&作为分隔符;

5、HTTP请求

作用:

  • 客户端(APP、浏览器),发送请求给服务器时,使用的协议;
  • 规定发送给服务器的数据传输的语法格式;

整体格式:

  • 请求行:http请求第一行。请求方法(空格)URL(空格)协议版本;
  • 请求头:语法格式:k:v
    • user-Agent:描述当前本地浏览器的类型;防止客户端恶意攻击;
    • content_type:标识请求体的数据类型
  • 空行:代表http请求头结束;
  • 请求体:请求发送时携带的数据;数据类型content-Type的值
    • Post和Put有请求体;
    • get和delete没有请求体;

请求行

  • http请求方法:(大小写无所谓)
  • get:     查询
  • post:    添加。(常用在登录)
  • put:       修改。
  • DeLETE:删除;

请求头

  • 语法格式:K:V
  • User-Agent:产生请求的浏览器类型;
  • content-Type:请求体数据的类型
  • application/json:json数据格式;
  • application/x-www-form-urlencoded:form表单数据;

 请求体

  • get、delete方法没有请求体;
  • put、post方法有请求体;
  • 数据值的组织形式。受content-Type的值影响;

6、HTTP响应

作用:

  • 服务器端,针对客户端发送的http请求,回发响应数据;
  • 规定回发给客户端的数据组织格式;

整体格式:

  • 响应行(状态行):协议版本(空格)状态码(空格)状态描述
  • 响应头:语法格式:K:V
  • content-Type:描述响应体中的数据类型;
  • 空行:代表响应头结束;
  • 响应体:绝大多数不为空。(请求成功:回发数据,失效:回发错误信息)
  • 数据类型受content_type值影响;

 状态行:

  • 状态行由协议版本号、状态码、状态消息三部分组成;
  • 状态码有三位数字组成,第一个数字定义了响应类别;
    • 1XX:指示信息-表示请求已接收,继续处理;
    • 2XX:  成功-表示请求已被成功接收、理解、接受;常见200,201
      • 201状态码表示服务器已经完成了客​​户端接收到的请求,并根据接收到的请求创建了一个新的资源
    • 3XX:重定向-要完成请求必须进行更进一步的操作;待访问的资源需要重新指定路径访问;
    • 4XX:客户端错误-请求有语法错误或请求无法实现;常见404,403
      • 403什么意思详见:

网页显示403是什么意思_聚名网的博客-CSDN博客_返回403403 forbidden是什么意思?网页显示403是什么意思?相信很多人都会有这样的疑问,下面小聚为您详解一下以上问题。https://blog.csdn.net/zacji/article/details/121471980

  • 5XX:服务端错误-服务器未能实现合法的请求;

响应头:

响应头用于描述服务端的基本信息,以及数据的描述。服务器通过这些数据的描述信息,可以通知客户端如何处理响应数据;

语法格式:K:V

Content-Type:值为响应体的数据类型;

Content-Length:响应体的大小,可以不写,浏览器会自动求取,一旦写,必须准确!

响应体:

响应体就是响应的消息体。数据可以是普通文本、XML、JSON、HTML源码;

7、RESTful接口风格

定义

一种软件架构风格、设计风格、而不是标准、只是提供了一组设计原则和约束条件;

REST:(Representational State Transfer)的缩写,词组的翻译是表现层状态化;如果是一个架构符合REST原则,就称为RESTful架构;

特点:

  • 1、每一个URL代表一种资源;
  • 2、客户端和服务器之间、传递这种资源的某种表现层;
  • 3、客户端通过四个HTTP动词;对服务器端资源进行操作,实现表现层状态转化;
  • 4、接口之间传递的数据最常用的格式为JSON;

常见的HTTP动词有以下四个:

  • get: 从服务器获取资源(一项或多项);
  • post:在服务器新建一个资源;
  • PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源);
  • DELETE(DELETE):从服务器删除资源;

8、接口测试流程

  • 1、需求分析
    • 主要依据需求文档
  • 2、接口文档分析
    • 一般是由开发人员编写接口文档(API文档)
  • 3、设计测试用例,测试计划
  • 4、执行测试
    • 使用接口测试工具实现
    • 通过编写代码实现
  • 5、接口缺陷管理与跟踪
  • 6、生成测试报告
  • 7、接口自动化持续集成(可选)

9、接口文档

作用:

  • 1、能够让前端开发与后台开发人员更好的配合,提高工作效率;
  • 2、项目迭代或者项目人员更新迭代时,方便后期人员查看和维护;
  • 3、方便测试人员进行接口测试;

展现形式:

  • 1、word格式
  • 2、excel格式
  • 3、pdf格式

结构:

  • 1、基本信息
    • 资源路径(协议和域名在系统信息中)
      • 请求方法
      • 接口描述
  • 2、请求参数
    • 请求头
      • Content-Type:描述请求体的数据类型!
    • 请求体
      • 实现该接口使用的数据及对应类型
  • 3、返回数据:
    • 状态码200
    • 错误码(自定义状态码)
      • 码值
      • 描述信息

9.1  接口文档解析

  • 接口文档的解析本质:从接口文档中,找出http请求所需要的的数据信息
    •  主要包含:请求方法、URL、请求头、请求体、响应状态码、描述。
  • 以登录为例:
    • 请求方法:post
    • URL:http........./login
    • 请求头: Content-Type:application/json
    • 请求体:{"mobile":"111111...","password":"111,,,,"}
    • 响应状态码:200
      • 错误码:
        • 10000:操作成功!
        • 20001:用户名或密码错误!
        • 99999:抱歉,系统繁忙,请稍后重试!

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

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

相关文章

LeetCode-28-找出字符串中第一个匹配项的下标

1、KMP算法$$ 解决本问题最简单的方法就是暴力穷举,思路简单但时间复杂度为O(m∗n)O(m*n)O(m∗n)。此处我们仅考虑最优的KMP算法,时间复杂度为O(mn)O(mn)O(mn)。 KMP算法的优化之处在于当我们对比haystackhaystackhaystack和needleneedleneedle时&…

[附源码]计算机毕业设计springboot基于Java酒店管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

亚马逊商品销售数据爬虫分析报告

家电产业和消费者升级悄然地展开。 市场的这种变化使消费者对家用电器的期望不再仅仅是一个简单的功能满足,而是更多的细节体验和技术创新。 通过洞察家用电器的消费特点,有利于确定市场的未来趋势,从而积极应对市场变化。 ▼ 我们围绕亚马逊…

AI智能视频技术在考古工作中的安防应用

文物考古关系着民族文化的传承、历史的记录与保留,工作意义重大。考古发掘工地由于面积大、区域多且分散,以及周边环境复杂,因此安全防护工作开展困难,整体的安全形势不容乐观。 一、考古现场安保面临问题:1、考古遗址…

K - Scholomance Academy Gym - 103202K

题目链接 题意:很长,读了很长时间才懂: 就是给一个物品评分,假设分数大于等于x,就将其判断为正数,否则判断为负数 这样判断肯定会出现一些误判,那么我们将判为负数的正数成为假正数&#xff0…

C. Set or Decrease(二分 + 有两个不确定情况如何二分)

Problem - 1622C - Codeforces 给你一个整数数组a1,a2,...,an和整数k。 在一个步骤中,你可以 选择某个索引i并将ai减少1(使aiai-1)。 或者选择两个索引i和j,将ai等于aj(使aiaj)。 为了使数组∑i1nai≤k的…

启动服务提供者报 zookeeper not connected错

今天启动zookeeper的服务提供者后,报 zookeeper not connected错,记录一下解决过程 意思是zookeeper注册中心连接不上,无非两个原因: 第一:zookeeper没有启动好。第二:zookeeper的ip以及端口号配置没配好 …

算法day35|860,406,452

目录 860.柠檬水找零 406.根据身高重建队列 452. 用最少数量的箭引爆气球 860.柠檬水找零 class Solution:def lemonadeChange(self, bills: List[int]) -> bool:five,ten,twenty 0,0,0for bill in bills:#情况一:如果bills是5元,不需要找零if bill…

黑马点评--附近商铺

附近商铺 GEO数据结构 GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本加入了对GEO的支持,允许存储地理坐标消息,帮助我们根据经纬度来检索数据。常见的命令有: GEOADD:添加一个地理空间信息&#xff0…

gcexcel-java-5.2.5 Crack update in 2022-11-28

gcexcel高速 Java Excel 电子表格 API 库 在 Java 应用程序中以编程方式创建、编辑、导入和导出 Excel 电子表格。几乎可以在任何地方部署。 创建、加载、编辑和保存 Excel 电子表格 保存为 .XLSX、PDF、HTML、CSV 和 JSON 基于具有零 Excel 依赖性的 Excel 对象模型 在本地、…

Tomcat负载均衡部署动静分离

NginxTomcat架构拓扑 环境部署 Nginx服务器:IP地址192.168.32.3 Tomcat服务器1:IP地址192.168.32.4 Tomcat服务器2:IP地址192.168.32.5 关闭防火墙,关闭开机自启 systemctl stop firewalld.service setenforce 0Nginx 主机安…

计算机组成原理习题课第三章-1(唐朔飞)

计算机组成原理习题课第三章-1(唐朔飞) ✨欢迎关注🖱点赞🎀收藏⭐留言✒ 🔮本文由京与旧铺原创,csdn首发! 😘系列专栏:java学习 💻首发时间:&…

高电压放大器与高电流放大器该如何选择使用

虽然电压放大器和电流放大器都属于功率放大器的分支类型,所能起到的效果和作用也都是一致的,不过两者还是细微差别的。经常会有人在后台咨询“电压放大器和电流放大器有什么区别,该如何选择使用”等等,针对这些疑问,今…

zynq实现视频动态字符叠加OSD,提供2套工程源码和技术支持

目录1.网上同行的OSD方案(太low)2.本方案OSD的优势3.HLS实现方案4.OSD延时和资源占用情况5.工程1:zynq7100实现字符叠加6.上板调试验证7.福利:工程源码获取1.网上同行的OSD方案(太low) 视频的字符叠加,简称OSD,是FPGA图像处理的基…

PG::Vegeta1

nmap -Pn -p- -T4 --min-rate1000 192.168.201.73 nmap -Pn -p 22,80 -sCV 192.168.201.73 查看80端口的服务。 没有发现可用的信息,尝试爆破路径。 gobuster dir -e -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-big.txt -u htt…

年薪50W的数字前端设计工程师是做什么的?

近两年,芯片行业大火,行业的发展受到了很大的政策支持,芯片行业不仅发展前景好,薪资待遇也很高,所以不少人纷纷转行IC,那么转行IC岗位该如何选择呢?下面IC修真院就重点为大家来介绍一下数字前端…

【Android App】检查手机连接WiFi信息以及扫描周围WiFi的讲解及实战(附源码和演示 超详细必看)

需要全部代码请点赞关注收藏后评论区留言私信~~~ 一、检查是否连接WiFi以及输出WiFi信息 传统的定位方式不适用于室内的垂直定位,原因如下: (1)卫星定位要求没有障碍物遮挡,它在户外比较精准,在室内信号就…

【Canvas】js用canvas绘制一个钟表时钟动画效果

学习JavaScript的看过来,有没有兴趣用Canvas画图呢,可以画很多有趣的事物,自由发挥想象,收获多多哦,旋转角度绘图这个重点掌握到了吗,这里有一个例子,如何用canvas画钟表时钟动图效果&#xff0…

Mybatis:快速搭建Mybatis(2)

快速搭建Mybatis搭建Mybatis目录框架步骤一:创建Maven工程步骤二:创建mybatis的核心配置文件步骤三:创建mapper接口步骤四:创建Mybatis的映射文件步骤四:通过junit测试增删改查功能步骤五:加入logback日志功…

【JavaSE】String类型

目录 1. Java中为何要有 String 类? 2. String 类中的常用方法 2.1 String 类中的构造方法 2.2 String 类对象的比较 2.2.1 比较是否引用同一个对象 2.2.2 使用 equals 方法 2.2.3 compareTo 方法 2.3 字符串的查找 2.4 字符串与别的数据类型的转换 2.4.1 数值和字…