接口测试详解

news2024/11/14 6:01:55

 为什么要做接口测试?

在公司里,客户端和服务端通常是由不同的团队开发的,在项目开发过程中,客户端和服务端开发的进度不一致,比如服务端先开发完了,这个时候可以先对服务端进行接口测试,确保服务端逻辑和返回数据是正确的。

然后再测试客户端,或者是某些测试部门,专门测试服务端开发团队,因此,他们的测试对象就是接口。

在测试某些业务时,不能仅仅通过前端来测试,比如用户注册,前端限制了用户名不能为空,但是有些人可能通过工具绕过前端直接调用服务端接口,如果服务端没有做相关的逻辑判断,就会造成数据错误。包括接口数据传输过程中是否对关键信息加密等。所以必须针对服务端接口单独做测试。

在开发提测后,可以先通过工具把服务端的接口测试跑一遍,确保接口测试用例都是通过的,快速判断服务端接口是否符合预期。然后再通过UI界面进行测试。否则接口有bug,前端页面必定有bug。

同时,我也为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接点击文末小卡片免费领取资料文档

软件测试视频教程观看处:

字节大佬教你逼自己如何在15天内掌握自动化测试(接口自动化/APP自动化/Web自动化/性能测试),内含项目实战

接口测试工具和流程?

常见的HTTP接口测试工具有Jmeter、Postman、SoupUI等。企业里用的比较多的是Jmeter。

Jmeter是一款开源、免费的接口测试工具,它可以对接口的功能、性能进行测试。还可以实现接口自动化。

Jmeter具体使用,之前写过,这里就不再过多叙述。

接口测试流程:

和普通的web测试一样,也是先进行需求分析、测试用例编写、执行测试、提交bug、回归测试、提交 测试报告等。

接口测试的关注点

1、输入

输入主要是指接口的入参,我们平常的测试中,会先考虑正常的入参,以及异常的入参。
异常情况包括:参数异常和数据异常,用例设计这块使用较多的是等价类划分和边界值分析

正常的入参:

正常的入参很好理解,就是根据接口设计文档的入参标准,输入正常的参数,响应按接口设计文档的约 定条件正常返回

参数异常:

参数异常包括:参数为空,多参或少参,错误的参数

数据异常:

数据异常:数据类型错误、非空参数为空,长度不符合设计,不在范围内的数据,不合法的成员,特殊 字符或敏感字符,存在关联关系的参数数据异常等

2、业务逻辑

和基于UI的功能测试一样,接口测试也需要了解接口背后的业务逻辑,针对业务流程的处理逻辑,我们 可以从入参的限制条件、事件的操作对象、业务的状态转换等不同维度来考虑

限制条件分析:

① 数值的限制:字典,等级,行业相关限制,金额限制,分数限制等
② 状态的限制:有效|无效,在线|离线,拉黑|洗白等
③ 关系的限制:存在或不存在,绑定或解绑等
④ 权限的限制:管理员,普通用户等

对象分析:

对象分析主要是对合法和不合法的对象进行操作,比如银行卡用户对卡进行充值,则可能存在:用户A使用非用户A的卡充值;用户A使用自己的卡进行充值,卡已过有效期;用户A使用自己的卡进行充值, 卡为黑名单或挂失等。

状态转换的分析:

比如支付类业务,先支付成功,撤单后会退款,再次支付如果支付未成功,则是支付失败,状态之间的 切换是否正常,未按正常业务顺利进行操作时,状态怎么显示,是否可控,是否出现异常状态,空状态 业务怎么处理等

时序分析:

一些复杂的活动中,一个活动是由一系列的动作按照指定顺序进行,这些动作形成一个动作流,是有按照这个顺序依次执行,才能等到预期的结果,那么在执行过程中发生的其他分支动作程序会作何处理?

3、输出

在考虑异常时,通常我们都会想到正常情况,无效的情况,但是不一定能覆盖所有错误码,而接口定义返回的错误码可以帮助我们补充这一部分的用例。

比如网络异常,无效的规则,无效的参数,无效的业务ID,无效的任务,服务器异常等,把errorcode的值都补充上去可以设计更多的用例

这种根据输出进行设计用例,可以发现前后端是否正常输出结果,提示是否友好,提示是否出现敏感信息等

4、数据库操作

业务数据入库是否正常,是否有重复数据入库,是否出现乱码;
数据更新是否正常,尤其是时间类字段,时间是否为24小时制的格式;
表中各个字段是否符合预期;

5、安全性

敏感信息是否加密(如用户名、银行账号,密码,转账金额)

6、性能

接口最大支持多少并发数;
接口每秒能处理多少次业务(TPS);
接口的平均响应时间(RT);
接口对服务器资源的消耗(CPU、内存、网络、磁盘);

7、兼容性

接口测试不需要考虑客户端的兼容性,主要是数据的兼容性。比如对于老接口的历史数据是否兼容,用 新接口去处理老的数据,是否能正常处理。

8、其他

幂等性:就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为多次点击而产生了副作用。

举个最简单的例子:

那就是支付,用户购买商品后支付,支付扣款成功,但是返回结果的时候网络异 常,此时钱已经扣了,用户再次点击按钮,此时系统应该拒绝支付,并且提示“不能重复支付”。

相当于 第二次支付不会产生任何作用。在做接口测试时,对于某些有幂等性要求的接口,需要针对幂等进行测 试。

通常可以采用Jmeter连续调用2次接口进行支付、提交等操作,来测试幂等性。

总结

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。

☑ 240集-零基础到精通全套视频课程
☑ [课件+源码]-完整配套的教程
☑ 18套-测试实战项目源码
☑ 37套-测试工具软件包
☑ 268道-真实面试题
☑ 200个模板-面试简历模板、测试方案模板、软件测试报告模板、测试分析模版、测试计划模板、性能测试报告、性能测试报告、性能测试脚本用例模板(信息完整)

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

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

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

相关文章

Kerberos认证协议介绍

概述 官网:https://www.kerberos.org/ 官方文档:http://web.mit.edu/kerberos/krb5-current/doc/ 为TCP/IP网络系统设计的可信的第三方身份认证协议。网络上的Keberos服务基于DES对称加密算法,但也可以用其他算法替代。因此,Keb…

CUDA学习笔记5——CUDA程序错误检测

CUDA程序错误检测 所有CUDA的API函数都有一个类型为cudaError_t的返回值&#xff0c;代表了一种错误信息&#xff1b;只有返回cudaSuccess时&#xff0c;才是成功调用。 cudaGetLastError()用来检测核函数的执行是否出错cudaGetErrorString()输出错误信息 #include <stdi…

minio public桶禁止默认访问权限

问题产生原因: 桶具有公共读写权限,直接访问桶会遍历出桶下所有目录与文件,可能会造成数据泄露。 解决方案: 修改匿名访问策略,需使用mc客户端,对minio进行修改 (高版本可通过自定义策略进行修改) 下载: wget https://dl.min.io/client/mc/release/linux-amd64/mc远程连接…

投标管理与工程实施管理的关键步骤及策略

对于建筑行业来说&#xff0c;投标管理和工程实施管理是重中之重。在管理过程中&#xff0c;需要大量的精力时间&#xff0c;项目管理工具可以帮助我们更为高效的进行投标管理和工程实施管理。 Zoho Projects 项目管理工具可以帮助用户高效组织招投标工作和实现从项目评估、招…

BAT028:批量为指定路径下的文件添加8位创建日期后缀名

引言&#xff1a;编写批处理程序&#xff0c;实现批量为指定路径下的文件添加8位创建日期后缀名。 一、新建Windows批处理文件 参考博客&#xff1a; CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132137544 二、写入批处理代码 1.右键新建的批处理文件&#xff0c;点击…

一张图理解MITRE ATTCK框架

看到一张好图&#xff0c;能对MITRE ATT&CK框架做很好的概述&#xff1a; 可以与笔者之前写过的MITRE文章&#xff08;https://blog.csdn.net/ybdesire/category_12472912.html&#xff09;一起阅读&#xff0c;就能更好的理解MITRE。 参考&#xff1a; 吴沛颖.网络威胁情…

【笔记】Endnote20插入文献

方法一 1.首先选中要参考的文章 2.在word里选好格式 3.在word里点击插入已选文献 前提&#xff1a;已经将光标放在要插入的位置了 4.插入文献即可&#xff0c;效果如下 方法二&#xff08;方便些&#xff0c;但是word容易闪退&#xff09; 1.点击要插入的文献&#xff0c;…

c: Queue Calling

/*** ****************************************************************************** file TakeNumber.h* brief 排队等号* author (geovindu,Geovin Du,涂聚文)* date 2023-10-19* copyright geovindu 站在巨人的肩膀上 Standing on the Shou…

最新高德商家信息导出(公开信息)

本章教程,主要介绍一下,如何从高德地图中根据关键词,获取商家信息,并导出Excel。 官网地址:高德地图 - 精准专业的手机地图 教程仅供参考,请勿滥用,由此带来的法律责任,需由自己承担。 目录 一、需求分析 二、程序代码 三、结果展示

【操作系统】线程的实现方式:用户线程和内核线程

1 用户级线程 完全在用户空间中实现和管理的线程。 它们的创建、同步和调度由应用程序通过用户级别的线程库实现&#xff0c;所有的线程管理工作都由应用程序负责&#xff0c;无需操作系统内核干预。在用户看来有多个线程&#xff0c;但操作系统并不能意识到线程的存在。 缺点…

vmware 16pro安装 mac10.14.6,期间遇到的问题

1、分配硬盘内存尽量分大点&#xff0c;建议是40g&#xff0c;我分了80g&#xff0c;后面下载解压xcode发现还不够&#xff0c;又增加最后分了120g 2、安装过程&#xff0c;卡在选语言的地方&#xff0c;鼠标和键盘无法操作。需要在虚拟机设置中&#xff0c;勾选以下选项“显示…

vue 树状结构数据渲染 (java 处理 list ->树状)

树状结构 Element ui https://element.eleme.cn/#/zh-CN/component/tree <el-tree :data"data" :props"defaultProps" node-click"handleNodeClick"></el-tree><script>export default {data() {return {data: [{label: 一级…

1815_ChibiOS中的虚拟定时器

全部学习汇总&#xff1a; GreyZhang/g_ChibiOS: I found a new RTOS called ChibiOS and it seems interesting! (github.com) 1. 这个功能其实类似于FreeRTOS的设计&#xff0c;在FreeRTOS中也有这样的设计。 2. 一次性的定时器&#xff0c;这个不仅在FreeRTOS中见过&#x…

shell命令以及运行原理和lLinux权限

shell命令以及运行原理 什么是shell shell是操作系统的外壳程序统称&#xff0c;我们是通过shell去和操作系统沟通的。 从技术角度&#xff0c;shell最简单的定义就是命令行解释器&#xff0c;主要包含两个功能&#xff1a; 将使用者的命令翻译给核心处理 将核心的处理结果…

《数据结构、算法与应用C++语言描述》使用C++语言实现链表队列

《数据结构、算法与应用C语言描述》使用C语言实现链表队列 定义 队列的定义 队列&#xff08;queue&#xff09;是一个线性表&#xff0c;其插入和删除操作分别在表的不同端进行。插入元素的那一端称为队尾&#xff08;back或rear&#xff09;&#xff0c;删除元素的那一端称…

告别传统纸质期刊,电子期刊更环保更快捷

​【新发现】随着科技的发展&#xff0c;电子期刊逐渐取代了传统的纸质期刊&#xff0c;成为人们获取信息的新选择。电子期刊不仅环保&#xff0c;而且快捷方便&#xff0c;但是你知道怎么制作电子期刊吗&#xff1f; 不会制作的可以试试我推荐的这个网站----FLBOOK电子杂志制作…

Simulink 最基础教程(一)

1.1基本概念 一个典型的Simulink模型大致如上图这样&#xff1a; 1&#xff09;模块 block&#xff1a;图中画圈的那些&#xff0c;每个模块可以完成一些特定的任务&#xff0c;类似MATLAB中函数的概念。软件提供了很多模块&#xff0c;当然也可以自定义新的模块 2&#xff0…

进阶JAVA篇- Collection 类的常用的API与 Collection 集合的遍历方式

目录 1.0 Collection 类的说明 1.1 Collection 类中的实例方法 2.0 Collection 集合的遍历方式&#xff08;重点&#xff09; 2.1 使用迭代器&#xff08; Iterator &#xff09;进行遍历 2.2 使用增强型 for 循环进行遍历 2.3 使用 Java 8的 Stream API 进行遍历&#xff08;使…

线程安全之锁的原理

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️林 子       &#x1f6f0;️博客专栏&#xff1a;✈️ Linux       &#x1f6f0;️社区 :✈️ 进步学堂       &#x1f6f0…