定义:

接口就是开发人员编写的函数或方法,完成一定功能的代码集合。
两个不同的系统或者一个系统中两个不同的功能,他们互相连接部分称为接口。

  1. '''
  2. 接口路径:/add
  3. 参数列表:number01,number02
  4. 返回数据:result 加法运算的结构
  5. '''
  6. # 定义函数三要素:函数名/接口名称/功能名称、参数列表、返回值
  7. add(1,2) # 结果为3
  8. # 测试人员关注:接口的入参 和 输入结果
  9. # 接口输入的参数范围、参数类型、参数约束关系、参数是否可填/必填

类型:

外部接口:

  1. 1. 比如从别的网站或服务器上获取资源或信息,网站或服务器资源不会把自己的数据库共享出来
  2. 2. 他们只能提供写好的方法来获取数据,我们引用他们提供的接口,就可以使用他们的方法,从而达到共享的目的

常见的web接口

http接口:

http接口走http协议,通过路径区分调用的接口,请求的报文一般是key=value形式的,返回报文一般都是json格式,get和post方法是我们常用的请求方法

Web Service接口

运行soap协议通过http传输,请求报文和返回报文都是xml格式,测试过程中通过工具进行测试

内部接口:

  1. 1. 方法与方法之间,模块与模块之间的交互
  2. 2. 比如一个系统,有登录模块、有查看信息等

优势:

规范性:定义接口的时候就是在定义规范,定义接口文档
扩展性:函数编程

本质:

测试人员借助工具模拟客户端项服务器端发送请求报文
服务器端接受请求报文,对响应的报文做出处理并项客户端返回应答
工具模拟客户端接受应答,然后测试人员检查应答是否正确

组成:

(1)接口名 :

/app/login,/admin/login,/xxx/login

(2)参数:

参数名称 是否必选 类型 描述
serviceId 是 String API 所在的服务唯一 ID。
apiIds.n 否 String API 接口唯一 ID 数组。
offset 否 Int 偏移量,默认为0。
limit 否 Int 返回数量,默认为20,
最大值为100。
orderby 否 String 根据哪个字段排序。
order 否 String 排序方式。
searchName 否 String 按照 API 路径名字模糊搜索。
searchId 否 String 按照 API 唯一 ID 精确搜索。

(3)内部代码:

  1. public interface Map {
  2. interface Entry{
  3. int getKey();
  4. }
  5. void clear();
  6. }

(4)返回值:

image.png

地址:

协议://服务器IP或域名:端口号/应用名/接口名/
接口路径:uri叫做统一资源标识符,用来表示网址或接口中具体的位置或名称,是url的一部分。

协议:根据需求确定使用哪种协议

  1. - http(超文本传输协议)
  2. - https(基于ssl或者安全的超文本传输协议)
  3. - ftp(文件传输协议)
  4. - smtp(简单邮件传输协议)
  5. - pop(邮局协议)

:::success

服务器IP或域名:提供接口的系统所部署的服务器地址,服务器ip取决于搭建环境的人员
  1. - 127.0.0.2
  2. - api.weixin.qq.com

::: :::info

端口号:一台服务器会提供多个服务,用户不同的端口号区分不同的软件或接口
  1. **端口号是0~65535之间的整数**
  2. - http默认端口号是80
  3. - https的默认端口号是443
  4. - FTP的默认端口号是21
  5. - SSH的默认端口号是22
  6. - SMTP的默认端口号是25
  7. - POP3的默认端口号是110
  8. - Mysql的默认端口号是3306
  9. - Tomcat的默认端口号是8080
  10. - Redis的默认端口号是6379

:::

应用名:应用模块

:::tips

接口名:函数、类、包、文件等的名字
  1. - App登录:/app/v1/user/login
  2. - 管理后台登录:/admin/v1/user/login
  3. - 创建群:/app/v1/group/create

::: :::danger 参数:?用于分割接口地址和参数的标志必须用英文问号
地址栏中存在?一般都是get请求方法
参数名称,标识发送给服务器的接口的数据,请求服务器处理,用于传参
&用于连接多个参数,是固定写法,只要超过一个参数就要写一个& :::

举例:https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=ACCESS_TOKEN

协议:https 服务器IP:api.weixin.qq.com 端口号:无 应用名:cgi-bin 接口名: getcallbackip? 参数: access_token=ACCESS_TOKEN

测试:

  • 是测试系统组件间接口的一种测试
  • 主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点
  • 测试的终点是要检查数据的交换、传递和控制管理过程,以及系统之间的相互逻辑依赖关系等
  • 测试接口,就是指测试接口的功能、性能、稳定性、安全性测试

    原因:

  • 接口测试自动化维护成本比UI自动化维护成本更低

  • 接口测试相对更容易实现自动化测试持续集成
  • 可以减少回归测试人力与实践成本、缩短测试周期,满足后端快速发布版本的需求

    左移:

  • 提测之前已经介入测试

  • 在需求评审时不只是了解需求,更要去评估需求的质量,分析需求的合理性以及完整性
  • 在开发阶段时也要参与设计方案的设计,了解开发的实现方式
  • 开发负责模块单一,测试介入可评估修改影响范围,补充遗漏
  • 测试可以通过提供测试用例或自动化脚本方式给开发,让开发在设计是考虑的更全面
  • 越早发现问题,解决成本就越低

    作用:

  • 自动准备初始化数据

  • 自动执行测试用例
  • 自动验证接口返回结果的正确性
  • 自动验证数据库数据的和正确性
  • 自动生成测试报告

    质量:

  • 业务功能覆盖是否完整

  • 业务规则覆盖是否完整
  • 参数验证是否达到要求(便捷、业务规则)
  • 接口异常场景覆盖是否完整
  • 接口覆盖率是否达到要求
  • 代码覆盖率是否达到要求
  • 性能指标是否满足要求
  • 安全指标是否满足要求

    流程:

  • 确认测试目标和范围:根据需求文档、设计文档和其他相关的文档,明确接口的测试目标和范围

  • 设计测试用例:根据测试目标和测试范围,设计用例,正常流程、异常流程、边界条件
  • 搭建测试环境:搭建测试环境,包含测试服务器、数据库、测试数据等
  • 执行测试用例:按照测试用例进行测试执行,记录测试结果和bug
  • 缺陷管理:对测试中发现的缺陷进行管理,包含提交缺陷、缺陷修复、缺陷验证等
  • 自动化测试:对接口进行自动化测试,提高测试效率和测试覆盖率
  • 性能测试:对接口进行性能测试,响应时间,吞吐量,并发量等指标
  • 安全测试:对接口进行安全测试,检查数据健米、数据传输安全,放置sql注入,xss攻击等
  • 测试报告:根据测试结果和数据生成测试报告,给出测试总结和建议

    步骤:

  • 需求分析

    • 分析接口的功能要求
    • 接口地址
    • 请求方法
    • 参数
    • 返回值
  • 编写测试用例
  • 搭建测试环境
  • 编写与调试测试脚本
  • 执行测试脚本
  • 生成测试报告

    文档:

  • 封面

    • 公司规定的封面、log、内容、标题、版本、公司名称、文档产生的日期
  • 修订历史
    • 版本、修订说明、修订日期、修订人、审核时间、审核人
  • 接口信息
    • 请求方式、接口地址
  • 功能描述
    • 接口功能介绍
  • 接口参数
    • 参数表格,说明参数名字、类型、长度、约束、备注
  • 返回值
    • 返回值模板,每个字段的含义
  • 调用限制,安全方面

    • 加密方式

      计划:

  • 测试目标:确定接口测试的目标,例如测试接口的功能。性能、安全等方面

  • 测试范围:确定接口测试的范围,包括接口列表、测试功能模块、测试的操作系统、浏览器等
  • 测试资源:确定测试资源,测试人员,测试的设备,测试环境等
  • 测试计划:制定测试计划,包括测试时间、测试阶段、测试方法、测试用例等
  • 测试用例设计:设计测试用例,包括正常流程、异常流程、边界条件等
  • 测试执行:执行测试,记录测试结果和bug
  • 缺陷管理:对测试汇总发现的缺陷进行管理,包括提交测试、缺陷修复、缺陷验证
  • 总结报告:接口功能测试报告、接口性能测试报告、接口安全性测试报告
  • 测试风险:本轮测试过程中可能出现的风险
  • 测试标准:严重程度、优先级
  • 测试通过标准:按缺陷的等级和解决通过lv

    用例:

    用例编号:每个测试用例都需要有一个唯一的编号,以便在执行测试和管理缺陷过程中进行跟踪和管理
    用例名称:根据被测接口的功能和操作,给用例命名
    用例描述:对测试用例进行详细描述,包括测试目的、前置条件、测试步骤、预期结果
    测试数据:每个用例提供测试数据,确保测试的准确性和覆盖范围
    测试环境:在测试用例中注明测试环境,包括测试服务器。测试数据库、测试工具等方面
    预期结果:在测试用例中明确预期结果,以便在测试执行和测试结果分析过程中进行比对
    执行结果:在执行过程中记录测试结果,包括测试结果、实际结果、测试人员、执行时间等
    测试备注:记录测试中的注意事项,问题和解决方案等内容

    报告:

    测试概述:介绍被测接口的基本信息、测试目的、测试方法、测试过程等方面
    测试环境:介绍测试环境的搭建和配置情况,包括测试服务器、测试数据库、测试工具等
    测试用例设计:介绍测试用例设计的思路、测试用例的覆盖范围、测试用例执行情况和结果
    测试结果分析:包括测试结果的统计、测试结果的分类、测试结果的优缺点
    发现问题和解决方案:详细描述测试发现的问题、缺陷和错误
    测试结论和建议:对整个测试过程进行总结、评估测试的效果和质量,并给出建议和优化
    测试报告附件:附上测试的原始数据、测试用例列表、测试截图、日志文件等

    日常:

  • 编写自动化测试用例

    • 根据需求和设计文档编写自动化测试用例,确保测试用例的准确性和完整性
  • 编写自动化测试脚本
    • 使用自动化测试工具,根据测试用例编写自动化测试脚本,时间对测试接口的自动化测试
  • 运行和调试自动化测试脚本
    • 运行和调试自动化测试脚本,检查测试结果和日志,确保测试脚本的正确性和稳定性
  • 编写测试报告和缺陷报告
    • 根据测试结果编写测试报告和缺陷报告,记录测试各种发现的问题和缺陷,并给出解决方案和建议
  • 编写工具维护和升级
    • 维护和升级自动化测试工具,确保工具的正常运行和稳定性,同时根据需求和反馈,不断完善和优化测试工具
  • 协作与沟通
    • 与开发剸断,产品团队,测试团队紧密合作,了解需求和设计变更,及时进行调整和优化,确保测试工作顺利展开
  • 持续改进和优化
    • 根据测试结果和测试经验,持续改进和哟花测试用例和测试脚本,提高测试效率和测试质量