百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

如何进行接口测试测?有哪些注意事项?保姆级解读,建议收藏

haoteby 2025-04-26 18:19 21 浏览

1.什么是接口?

接口主要用于系统与系统之间以及程序内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点也就是协议,来进行数据之间的交互。


2.接口都有哪些类型?


接口一般分为两种:1.程序内部的接口 2.对外提供的接口

对外提供的接口:如:微信支付接口, 支付宝支付接口等

程序内部的接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如电商系统,有登录模块、提交订单模块等等,要支付就必须先登录,那么这两个模块就得有交互,系统内部就会通过一个接口进行数据交互。

接口的分类:1.webservice接口 2.http协议(api接口)

webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候可以借助SoapUI工具进行调用及测试。

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

json是一种通用的数据类型,所有的语言都认识它。(json的本质是字符串,它与其他语言无关,只是可以经过稍稍加工可以转换成其他语言的数据类型,比如可以转换成Python中的字典,key-value的形式。)


3.接口的本质及其工作原理是什么?

接口你可以简单的理解他就是发起请求获取响应数据,工作原理就是URL通过get或者post请求向服务器发送一些东西,然后得到一些相应的返回值,本质就是数据的传输与接收。


4.什么是接口测试?

百度百科的概述为: 接口测试是测试系统组件间接口的一种测试。

接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。

测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

简单的说就是通过URL向服务器或者其他模块等,传输我们想传输的数据,然后看看他们返回数据的是不是预期想要的。


5.为什么要做接口测试?

5.1 越底层发现bug,它的修复成本是越低的。

5.2 前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。

5.3 检查系统的安全性、稳定性,前端传参不可信,比如电商购物系统,前端价格无法实现传入数据为-1元,但是通过接口可以传入-1元。

5.4 如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以应对复杂度较高的测试场景,负载度越高接口测试效果越好

5.5 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。

5.6 现在很多系统前后端架构是分离的,从安全层面来说:

(1)、只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。

(2)、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。


6.怎样做接口测试?

由于目前大部分项目前后端分离,调用接口主要是基于http协议的接口,所以测试接口时主要是通过工具或代码模拟http请求的发送与接收。工具有很多如:postman、jmeter、soupUI、java+httpclient/TestNG、robotframework等。

-- 也可以用代码实现接口自动化,框架和UI自动化差不多,发送请求用断言来判断


7.接口测测试点是什么?

目的:测试接口的正确性和稳定性;

原理:模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的过程;

重点:检查数据的交换,传递和控制管理过程,还包括处理的次数;

核心:持续集成是接口测试的核心;

优点:为高复杂性的平台带来高效的缺陷监测和质量监督能力,平台越复杂,系统越庞大,接口测试的效果越明显(提高测试效率,提升用户体验,降低研发成本);

用例设计重点:通常情况下主要测试最外层的两类接口:数据进入系统接口(调用外部系统的参数为本系统使用)和数据流出系统接口(验证系统处理后的数据是否正常);

PS:设计用例时还需要注意外部接口提供给使用这些接口的外部用户什么功能,外部用户真正需要什么功能.


8. 对接口测试而言,持续集成接口自动化是核心内容, 接口自动化包含以下内容:

8.1 流程方面:在回归阶段加强接口异常场景的覆盖度,并逐步向系统测试,冒烟测试阶段延伸,最终达到全流程自动化。

8.2 结果展示:更加丰富的结果展示、趋势分析,测试数据统计和分析等

8.3 问题定位:报错信息、日志更精准,方便问题复现与定位。

8.4 结果校验:加强自动化校验能力,如数据库信息校验。

8.5 代码覆盖率:不断尝试由目前的黑盒向白盒下探,提高代码覆盖率。

8.6 性能需求:完善性能测试体系,通过自动化的手段监控接口性能指标是否正常。


9. 接口测试质量评估标准:


-- 业务功能覆盖是否完整

-- 业务规则覆盖是否完整

-- 参数验证是否达到要求(边界、业务规则)

-- 接口异常场景覆盖是否完整

-- 接口覆盖率是否达到要求

-- 代码覆盖率是否达到要求

-- 性能指标是否满足要求

-- 安全指标是否满足要求

设计测试用例时我们主要考虑如下几个方面:


01

功能测试




接口的功能是否正确实现了

接口是否按照设计文档中来实现

(比如username参数写为了user,那么这就不符合,因为接口文档在整个开发中都需要使用,所以接口实际的设计要与接口设计文档中保持一致)


  • 兼容性测试:
  • 比如说今天接口进行了调整,但是前端没有进行变更,这时候需要验证新的接口是否满足旧的调用方式
  • 错误码测试:
  • 通用的错误码与业务错误码是否能够清晰的说明调用问题,错误码是否能够尽可能的全的覆盖所有的情况
  • 返回值测试:
  • 返回值除了内容需要是正确的,还需要类型也是正确的,保证调用方拿到这些参数能够正确的解析


参数边界值、等价类测试


  • json格式测试:
  • 通常我们的接口一般设计的都是传递json串,那么就需要去测试 如果传递非json的情况,这时候程序会不会正确的处理,返回相应的 error code
  • 默认值测试:
  • 很多情况一些非必填的参数会有默认值,比如说一个查询的接口,参数count为返回查询的结果数量, 默认为10,那么就应该有一条case来测试,当然前置条件是数据库里面必须要存在这样的数据超过10条。


02

逻辑业务




是否有依赖业务,比如查看订单,是需要用户首先登录的,所以肯定要保证登录了或有相应的cookie


业务逻辑测试:传递正确的参数,接口对数据库进行查询的操作,需要去验证数据库查询是否正确,接口对数据库进行 增删改的操作,也需要看数据库是否同步进行了这些操作


03

异常测试




异常分为两类,参数异常数据异常


1、参数异常:

  • 关键字参数
  • 将参数写为开发语言中的关键字
  • 参数为空
  • 比如去掉了username参数
  • 多或少参数
  • 多或者少参数的验证,现在还不确定如果一个接口多了参数如果没有报错是否是合理的,或者是否需要优化,因为就目前开发给予的答案是,一般不对接口多了参数的处理
  • 错误参数
  • 比如将username参数写为了user等看是否能返回相应的error code


2、数据异常:

  • 关键字数据
  • 将参数的值填为开发语言中的关键字
  • 数据为空
  • 将参数的额值填为空
  • 长度不一致
  • 因为数据库中每个字段都设置有字段长度,填写不符合的长度进行验证
  • 错误数据
  • 就是将参数的值任意填写,或填写不存在的数值
  • 异常类型测试
  • 比如count参数,这个参数的类型一定是可以转换为int类型的,这时候我们需要测试如果传的一些不可以 转换为int类型值来测试代码是否加入判断


04

性能测试




  • 响应时间
  • 吞吐量
  • 并发用户数
  • 占用内存,CPU等


05

安全性测试




敏感信息是否加密

必要参数是否后端也进行校验

(现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前端太容易了), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证)


接口是否防恶意请求(SQL注入)

  • cookie
  • 将header中的cookie修改或删除后看是否能返回相应的error code
  • header
  • 删除或修改header部分参数的值,看是否能返回相应的error code
  • 唯一识别码
  • 删除修改唯一识别码测试

相关推荐

Chrome OS 41 用 Freon 取代 X11_chrome os atom

在刚发布的ChromeOS41里,除了常规的Wi-Fi稳定性提升(几乎所有系统的changelog里都会包含这一项)、访客模式壁纸等之外,还存在底层改变。这一更新中Google移除...

苹果iPad Pro再曝光 有望今年六月发布

自进入2015年以后,有关大屏iPad的消息便一直不绝于耳,之前就有不少媒体猜想这款全新的平板电脑将会在三月发布,不过可惜的是我么只在那次发布会上看到了MacBookPro。近日@Ubuntu团队便...

雷卯针对香橙派Orange Pi 5 Max开发板防雷防静电方案

一、应用场景高端平板、边缘计算、人工智能、云计算、AR/VR、智能安防、智能家居、Linux桌面计算机、Linux网络服务器、Android平板、Android游戏机...

Ubuntu Server无法更新问题解决_ubuntu server not found

上周老家的一台运行UbuntuServer的盒子无法连接上了,中秋这两天回来打开,顺手更新一下发现更新报错。提示`E:Releasefileforhttps://mirrors.aliyun...

虚幻引擎5正式版发布:古墓丽影&巫师新作采用、新一代实时渲染

机器之心报道编辑:杜伟、陈萍虚幻引擎5的目标是「助力各种规模的团队在视觉领域和互动领域挑战极限,施展无限潜能」。...

AMD Milan-X双路霄龙7773X平台基准测试曝光 CPU缓存总量超1.5GB

OpenBenchmarking基准测试数据库刚刚曝光了AMDMilan-X双路霄龙7773X平台的跑分成绩,虽然很快就被撤下,但我们还是知晓了高达1.6GB的总CPU缓存。早些时...

ROS机器人建模_ros机器人硬件搭建

...

全网最新的Dify(1.7.2)私有化离线部署教程(ARM架构)

Hello,大家好!近期工作中有涉及到Dify私有化离线部署,特别是针对于一些国产设备。因此特别整理了该教程,实测有效!有需要的小伙伴可以参考下!本文主要针对Dify1.7.2最新版本+国产操作系...

在ubuntu下新建asp.net core项目_创建ubuntu

本文一步步讲述在ubuntu下用visualstudiocode创建asp.netcore项目的过程。step1:环境操作系统:virtualbox下安装的lubuntu。请不要开启“硬件...

在晶晨A311D2处理器上进行Linux硬件视频编码
在晶晨A311D2处理器上进行Linux硬件视频编码

在KhadasVIM4AmogicA311D2SBC上,我更多的时间是在使用Ubuntu22.04。它的总体性能还不错,只不过缺少3D图形加速和硬件视...

2025-08-26 17:22 haoteby

Nacos3.0重磅来袭!全面拥抱AI,单机及集群模式安装详细教程!

之前和大家分享过JDK17的多版本管理及详细安装过程,然后在项目升级完jdk17后又发现之前的注册和配置中心nacos又用不了,原因是之前的nacos1.3版本的,版本太老了,已经无法适配当前新的JD...

电影质量级渲染来了!虚幻引擎5.3正式发布:已开放下载

快科技9月8日消息,日前,Unrealengine正式发布了虚幻引擎5.3,带来了大量全方位的改进。...

2025如何选购办公电脑?极摩客mini主机英特尔系列选购指南

当下,迷你主机的性能越来越强,品类也越来越多。但是CPU是不变的,基本都是AMD和英特尔的。有一个小伙伴在评论区提问,我应该如何在众多机器中选购一台符合自己的迷你主机呢?那今天我们优先把我们的系列,分...

ubuntu 20.04+RTX4060 Ti+CUDA 11.7+cudnn

ububtu添加国内源sudocp/etc/apt/sources.list/etc/apt/sources.list.backupsudovim/etc/apt/sources.lis...

Linux Mint 18将重新基于Ubuntu 16.04 带来更好硬件支持

项目负责人ClementLefebvre在本月6日披露了关于LinuxMint18“Sarah”操作系统的大量信息,包括带来全新扁平化体验的Mint-Y主题。而现在,这款将于年底之前上线的操作...