叹为观止!这篇文章把服务端接口测试彻底讲明白了

2024-01-31 04:50

本文主要是介绍叹为观止!这篇文章把服务端接口测试彻底讲明白了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

服务端的接口测试我们一般从功能开始进行测试,比如请求参数和响应参数的校验,业务逻辑或业务规则的校验,数据库操作的校验。功能正常后会根据需要进行安全相关的检查、性能测试以及系列扩展测试,比如与历史版本的兼容性测试、接口的超时验证以及设计合理性验证等,用例设计也是从这几个方面进行分析设计,下面的思维导图是一个概要的测试关注方向:

在这里插入图片描述

详细介绍如下:

针对输入

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

A、正常的入参

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

B、参数异常

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

C、数据异常

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

针对处理逻辑

接口测试前一般研发会提供接口设计文档或业务相关的设计图、流程图,针对业务流程的处理逻辑,我们可以从入参的限制条件、事件的操作对象、业务的状态转换

A、 限制条件分析

数值的限制:字典,等级,行业相关限制,金额限制,分数限制等

状态的限制:有效|无效,在线|离线,拉黑|洗白等

关系的限制:存在或不存在,绑定或解绑等

权限的限制:管理员,普通用户等

B、 对象分析

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

C、 状态转换的分析

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

D、 时序分析

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

比如斑马停车风控业务,如果在入站后车辆直接掉头不驶入高速业务如何处理?

针对输出

在考虑异常时,通常我们都会想到正常情况,无效的情况,但是不一定能覆盖所有错误码,而接口定义返回的错误码可以帮助我们补充这一部分的用例,比如网络异常,无效的规则,无效的参数,无效的业务ID,无效的任务,服务器异常等,把errorcode的值都补充上去可以设计更多的用例

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

数据库操作

A、对数据库操作是否频繁,是否会在写库过程中占用大量的CPU,写库完成后进程是否释放

B、业务数据入库是否正常,是否有重复数据入库,是否出现乱码;日志数据入库是否正常

C、数据更新是否正常,尤其是时间类字段,时间是否为24小时制的格式

D、数据删除、备份是否正常

安全性

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

性能相关

A、接口在什么情况下会出现并发,并发场景是什么,什么情况下的并发会导致问题

B、最大并发,响应时间,吞吐量,资源消耗情况

接口超时

接口正常情况下是有返回的,那么如果接口不返回呢?所以接口超时后的处理也是测试需要考虑的部分,如果超时处理不当,可能会引起进程阻塞,或者超时后又接收到接口返回导致逻辑错乱

与历史版本的兼容性分析

已废弃的协议或接口,代码并未注释,在某种特定的情况下可能会触发历史版本已废弃的协议或接口,导致用户使用或功能调用后出现意想不到的问题,损失

同一套系统,不同服务之间的接口相互调用时,新接口是否受历史接口的影响,尤其是新旧接口都对某一个功能进行处理,是否存在业务不兼容的问题

这一点需要测试人员是长期的测试一个系统的,那么可能会想到这种场景,会清楚的知道什么时候哪个版本进行了重构,废弃了那些接口,新增了那些接口,哪些场景会触发历史接口的某个规则

接口设计合理

接口字段是否冗余,接口是否返回了调用方期望得到的信息,接口定义是否满足所有调用者的需求,接口调用是否方便,接口是否可扩展,接口参数使用是否方便,接口的业务规则是否都正确,接口都整个服务的使用会产生那些影响

这篇关于叹为观止!这篇文章把服务端接口测试彻底讲明白了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/662604

相关文章

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

MySQL中C接口的实现

《MySQL中C接口的实现》本节内容介绍使用C/C++访问数据库,包括对数据库的增删查改操作,主要是学习一些接口的调用,具有一定的参考价值,感兴趣的可以了解一下... 目录准备mysql库使用mysql库编译文件官方API文档对象的创建和关闭链接数据库下达sql指令select语句前言:本节内容介绍使用C/

macOS彻底卸载Python的超完整指南(推荐!)

《macOS彻底卸载Python的超完整指南(推荐!)》随着python解释器的不断更新升级和项目开发需要,有时候会需要升级或者降级系统中的python的版本,系统中留存的Pytho版本如果没有卸载干... 目录MACOS 彻底卸载 python 的完整指南重要警告卸载前检查卸载方法(按安装方式)1. 卸载

一文详解MySQL索引(六张图彻底搞懂)

《一文详解MySQL索引(六张图彻底搞懂)》MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度,:本文主要介绍MySQL索引的相关资料,文中通过代码介绍的... 目录一、什么是索引?为什么需要索引?二、索引该用哪种数据结构?1. 哈希表2. 跳表3. 二叉排序树4.

基于Go语言开发一个 IP 归属地查询接口工具

《基于Go语言开发一个IP归属地查询接口工具》在日常开发中,IP地址归属地查询是一个常见需求,本文将带大家使用Go语言快速开发一个IP归属地查询接口服务,有需要的小伙伴可以了解下... 目录功能目标技术栈项目结构核心代码(main.go)使用方法扩展功能总结在日常开发中,IP 地址归属地查询是一个常见需求:

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

基于Redisson实现分布式系统下的接口限流

《基于Redisson实现分布式系统下的接口限流》在高并发场景下,接口限流是保障系统稳定性的重要手段,本文将介绍利用Redisson结合Redis实现分布式环境下的接口限流,具有一定的参考价值,感兴趣... 目录分布式限流的核心挑战基于 Redisson 的分布式限流设计思路实现步骤引入依赖定义限流注解实现

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

SpringBoot实现RSA+AES自动接口解密的实战指南

《SpringBoot实现RSA+AES自动接口解密的实战指南》在当今数据泄露频发的网络环境中,接口安全已成为开发者不可忽视的核心议题,RSA+AES混合加密方案因其安全性高、性能优越而被广泛采用,本... 目录一、项目依赖与环境准备1.1 Maven依赖配置1.2 密钥生成与配置二、加密工具类实现2.1

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.