全网超全,接口测试用例设计——常见问题和风险,测试不背锅...

news2024/9/22 11:32:46

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

接口测试用例设计

接口测试过程中,通常需要先编写测试用例,保证测试的覆盖性、准确性。
一份用例的好坏,决定着你测试接口的准确性和覆盖程度。

接口测试的用例的设计,主要从接口输入和输出两方面进行考虑:

1、针对输入设计,输入即入参
常见的参数类型有:
数值型(int,long,float,double);
字符串类型;
数组和链表;
结构体(结构体(struct)是一些元素的结合,元素实际也是数值型,字符串型,数组或者链表数值型、字符串型、数组或者链表三种参数类型用例设计);

补充:针对输入设计,还需要覆盖必填参数、选填参数。

数值型:
如果参数规定了值的范围,则需要考虑等价类取值范围内,取值范围外,取值的边界,如有需要,可能会遍历取值范围内的各个值。

例如:检查权限的接口:TaskID的取值范围是1-35,那么设计时需考虑:
1-35范围内和范围外的值;
1-35的边界:0,1,35,36;
类型的特殊值:-1,0;
数据类型的边界值:int的最小值最大值;
1-35代码的权限ID不同,可能需要遍历1-35的每个值。

常见问题和风险:
1)特殊值处理不当导致程序异常退出;
2)类型边界溢出;
3)取值范围外值未返回正确的错误信息。

字符串型:
字符串型的参数,主要考虑字符串的长度和内容;
例如:接口转换设置闹钟的接口string ddhh ,用例需考虑:
长度:长度为4位,比4位少,比4位多
边界值:string的最大长度
特殊值:空字符
字符串内容可考虑类型:数字、非数字;
特殊字符;
如果用户输入切其他用户可见的内容,则需要考虑敏感字是否被正常过滤。

常见问题和风险:
1)传入非特定的类型程序异常退出。
2)超长字符未进行处理、导致存储、显示等异常。
3)其他用户可见设置的敏感字。

数组或链表类型:
参数类型为数组或链表时,用例可以考虑:

例如:批量提交任务的接口submitTask(int[] taskID),参数用例设计考虑:
正常取值:1-5个权限,范围外:6个权限;
边界值:1-35的 边界值,请求允许最大最小值;
特殊值:0个;
合法id和不合法的;
重复的id等。

常见问题和风险:
1)0个item是程序异常退出。
2)重复的item处理时未去重导致数据异常。

2、针对逻辑设计
接口需要进行一些逻辑处理的,按照逻辑设计用例可以从以下几个角度分析:
约束条件分析;关系限制分析;权限限制分析;操作对象分析;状态转换分析;时序分析分析

约束条件分析:
数值限制:分数限制、金币限制、等级限制等。
例如:Q币兑换要求积分>50才可以参加。
状态限制:登录状态等。
例如:同步用户信息需要先登录账户。

关系限制:
绑定的关系,好友关系等。
例如:帮家人防骗功能只能查询绑定家人的来电信息。
权限限制:
管理员等。

约束条件的测试在功能测试中经常遇到,在接口测试中更为重要。它的意义在于:用户进行操作时,在该操作的前端可以已经进行约束条件的限制,故用户已经直接触发请求该接口。

但是实际上,如果有其他手段,例如UI有bug或者通过技术手段直接调用手段,那么接口是否针对这些条件进行了限制尤为重要。

例如:要兑换5Q币需要200积分,但是我的积分不足,所以兑换按钮是灰色无法点击的状态。

正常用户是无法操作的,但是兑换其实是调后台的一个接口,如果绕过页面按钮的限制,直接调用后台接口兑换呢?是否可以兑换?预期当然是不能兑换的,因此积分这个数值限制就需要针对接口进行测试,并且非常重要。

其他约束条件类似:
时间约束:22:00之前;
数值约束:积分200,限量5个;
状态约束:登录手机管家等等约束条件类似。

常见问题和风险:
约束条件不足,导致用户可以通过特殊手段获取利益。

操作对象分析:
操作通常针对对象的,例如用户绑定电话号码,电话号码就是操作对象,而这个电话号码的话费、流量也是对象。

对象分析主要是针对合法和不合法对象进行操作。例如:
用户A查询电话P1话费;
用户A查询电话P1流量;
用户A查询电话P2话费;
用户A查询电话的P2流量;

后台的逻辑处理,如果一个电话已经被绑定过,从后台的角度是可以查询到该电话的话费和流量的,但是在用户侧,应该是A绑定了的电话,才能让A查询到该电话的话费,故类似对象的测试也是必不可少的。

常见的问题和风险:
用户可访问非权限内的其他用户信息、敏感信息,从而利用这些信息谋取利益。

状态转换分析:
被测试逻辑可以抽象成状态机,各个状态之间根据功能逻辑从一个状态切换到另一个状态。如果我们打乱了这个次序,从一个状态切换到另一个不在它下一状态集中的状态,那么逻辑将会打乱,就会出现逻辑问题。

从某状态改变到新的状态,依赖于转换接口。而对于某转换接口,其输入状态是确定的,比如Fun23,这个函数只能把状态2转换为状态3,而不能将状态1转换为状态3。

那么测试点就可以是:
状态为2,调用接口,状态切换为23;
状态为1,3等,调用接口,状态不可切换;

那么可以这样设计:
正常的状态切换:未领取状态,领取任务后变为已领取状态;已领取满足任务条件提交后,变成已完成状态;完成后可以再次领取任务。

非正常的状态切换:未领取任务满足任务条件直接提交任务;已领取时再次领取任务等。

常见的问题和风险:
可通过特殊手段达到原本不能的状态,从而谋取利益。

时序分析:
在一些复杂的活动中,一个活动是由一系列动作按照指定顺序进行的,这些动作形成一个动作流,只有按照这个顺序依次执行,才能得到预期结果。

在正常的流程里,这些动作是根据程序调用依次进行的,并不会打乱,在接口测试时,需要考虑如果不按照时序进行,是否会出现问题。

例如:客户端数据同步是由客户端触发进行的,期间的同步用户无法干预。功能测试的时候可见的就是是否能正常进行同步。

而进一步分析,同步流畅实现涉及了一组动作:
从时序图可以看出,后台又3个接口;登录获取用户ID,上报本地数据库,上报本地冲突。三个接口需要依次调用执行,才能完成同步。

那么在接口测试就可以考虑打乱上诉接口的执行顺序去进行执行,会有怎样的接口,是否会出现异常。例如:获取用户ID后不上报本地数据而直接上报本地冲突。

常见问题和风险:
1)非顺序执行后,数据出现异常,可能还会出现程序其他异常。
2)通过打乱顺序获取利益。

3、针对输出结果设计

接口处理正确的结果可能只有一个,但是错误异常返回接口有很多情况很多值,如果知道返回结果有很多种,就可以针对不同结果设计用例。

例如:提交积分任务的时候我们通常能想到的是返回正确和错误,错误可能想到:无效任务、无效登录态,但是不一定能否完全覆盖所有错误码,而接口返回定义的返回码可以设计更多用例。

覆盖返回码也是用例设计的一种思路。

常见问题和风险:
1)错误前端处理不足,导致前端异常。
2)错误提示处理不当,导致用户看到晦涩的错误码。
3)错误提示不当,导致用户不知道哪里出了问题,如何解决。

接口超时情况:
接口正常情况下试有返回的,那么如果接口不返回呢,也就是接口超时后的处理也是测试需要考虑的部分,如果超时处理不当,可以会引出一下问题:
未进行超时处理,导致整个流程阻塞;
超时后又收到接口返回,导致逻辑出现错乱。

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

每个人都会遇到挫折和困难,但只有那些勇往直前的人才能实现梦想。不要害怕失败,相信你的能力并保持学习和成长的态度。永远不要停止追求自己的目标,坚定地朝着成功前进!

不要固守舒适区,敢于冒险创新;不要在失败中气馁放弃,勇于挑战再出发;不要被眼前的困难打败,坚持向前追求梦想;只有不断超越自己,才能创造属于自己的人生奇迹!

生命不息,奋斗不止;只要你肯努力,不管前路多么崎岖坎坷,都能闯过去;没有什么比真正的努力更值得骄傲。记住,成功不是偶然的,而是必然的结果!

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

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

相关文章

【开源工具】使用Whisper提取视频、语音的字幕

这里写目录标题 一、语音转字幕操作步骤1、下载安装包Assets\WhisperDesktop.zip[^2]2、加载模型2.1 下载模型2.1.1 进入Hugging Face[^3]的仓库2.1.2 选择需要下载的模型2.1.3 配置模型路径 3、语音转字幕4、实时语言转录功能 二、相关简介[^1]特点开发人员指南构建说明其他注…

【MySql】表的内连接和外连接

文章目录 内连接外连接左外连接右外连接 OJ题目 本篇博客主要介绍的内容是表的连接,在MySql中表的连接分为内连接和外连接,下面,我们直接进入主题把 内连接 内连接实际上就是利用where子句对两种表形成的笛卡儿积进行筛选,我们前…

Ubuntu Win10 github.com访问很慢的解决办法

win10 请看这里: 解决国内 github.com 打不开的最最最准确方法_github打不开_杨大脸I的博客-CSDN博客 Ubuntu 请看这里: 看了上面的就应该知道, 需要两步骤:1、修改host文件;2、刷新DNS 1、修改host文件 Ubuntu修改hosts文件_ub…

PySpark集群环境安装(HA-Standalone模式)

PySpark是Python中的一个库, 由Spark官方提供. 专供用户使用Python语言操作Spark 1. 首先安装python环境 基于anaconda的虚拟环境方案,来安装python。因为anaconda可以虚拟出多个Python环境, 且各个环境相对独立,能够解决python版本的兼容性问题 1.1 …

Rust的特征对象

文章目录 Rust的特征对象前言在屏幕上绘制各种UI组件 Rust的特征对象 前言 特征对象不像泛型和impl trait这种零成本抽象,特征对象是在runtime时确定具体类型,有一定的性能开销。当我们需要函数参数是一类实现了特定trait的类型时,这时候就…

4个Camtasia2023隐藏新功能,99%的人都不知道!

在今年5月,全能录屏软件 Camtasia 迎来了2023新版,带来非常多新功能,让制作录屏视频的效果再上一层楼!所有购买过旧版 Camtasia 的老用户,都可以享受优惠升级。 Camtaisa 获取: http://souurl.cn/YWkrO7 更…

【Java高级语法】(六)内部类Inner Class:这可能是史上最全的关于内部类的学习资料~

Java高级语法详解之包装类 :one: 概念:two: 优缺点:three: 使用2.1 成员内部类2.2 局部内部类2.3 匿名内部类2.4 静态内部类2.5 小结:外部类访问四种内部类的特点2.6 小结:其他类访问四种内部类的特点 :four: 内部类与外部类的关系:five: 应用场景:six: …

云贝餐饮连锁独立版 v2.6.1+公众号+小程序端+抖音端端+全插件免授权版安装配置教程

云贝餐饮系统应该持续做好多年了,以前的版本都需要授权一直没使用,优选源码网整体测试下感觉从体验上还有逻辑设计上都非常不错,首页、会员中心支持DIY装修,配送支持多种平台对接,基本上餐饮行业需要的功能都能满足了。…

收件地址解析成 省+市+区+详细地址的形式

项目中的源代码在我的GitHub:https://github.com/weitw/address-analyzer 先看效果: 如上图,address数输入的地址,Address对象是解析后的地址。可以支持逆推上一级,且支持地址白话解析。 一、项目介绍 1、解析规则 …

13年测试老鸟,带你详探服务端的接口测试,测试内卷之路...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 服务器的接口测试…

Tinywebserver项目运行(docker部署mysql)

. 运行项目运行时遇到的一些其他问题重启mysql容器时发现端口被占用 前言 Tinywebserver是github上一个十分优秀的开源项目,帮助初学者学习如何搭建一个服务器. 本文讲述如何在使用docker部署mysql容器的情况下跟该项目进行连接并将项目运行起来,而不是…

萌萌哒的八戒1

拿到了一个图片,根据图片下方的字符,结合远古时期这个提示,想到了古典密码里的猪圈密码 挨个输入得到when the pig want to eat,套上flag

PyTorch 深度学习 || 2. 全连接网络 | Ch2.3 PyTorch 全连接自编码网络的无监督学习

PyTorch 全连接自编码网络的无监督学习 文章目录 PyTorch 全连接自编码网络的无监督学习1. 数据去噪1.1 计算库和数据准备工作1.2 构建自编码网络1.3 调用主函数1.4 可视化 2. 数据的重建与降维2.1 计算模块和数据的准备2.2 自编码网络数据准备2.3 自编码网络的构建2.4 自编码网…

深入理解程序的结构

文章目录 前言一、程序的组成二、未初始化和初始化变量保存地址三、栈什么时候被创建四、内存映射段总结 前言 本篇文章我们来深入的理解一下理解程序的结构。 一、程序的组成 通常情况下,一个可执行程序由以下几个不同的段组成: 1.代码段 (Text Seg…

怎么针对微服务架构做单元测试?

Martin Fowler 是国际著名的软件专家,敏捷开发方法的创始人之一,现为 ThoughtWorks 公司的首席科学家。在面向对象分析设计、UML、模式、软件开发方法学、XP、重构等方面,都扮演着举足 什么是微服务? 微服务的由来 微服务的前身…

笑谈之传统行业的软件测试

最近进入一传统企业做O2O社区,在里面,项目管理一团混乱,上层对软件测试的理解更是匮乏。今天没有技术,仅是对这些现象的吐槽。当然我相信传统行业不都是这样,所以大家仅当笑谈。 产品经理写的需求文档永远是拿来作为做…

cas单点登录 前端步骤流程

CAS(Central Authentication Service)是一个开源的单点登录协议和实现,它提供了一种统一的方法来管理和验证用户身份,使用户只需通过一次登录即可访问多个应用程序。CAS 单点登录的工作原理是基于服务提供者 (Service Provider) 和…

MNIST机器学习入门

引入所需库 import osimport cv2 import matplotlib.pyplot as plt import numpy as np import pandas as pd import tensorflow as tf from PIL import ImageMNIST数据集 下载MNIST数据集 mnisttf.keras.datasets.mnist (x_train, y_train), (x_test, y_test) mnist.load_…

【干货】Android系统定制基础篇:第七部分-Android OTA升级(系统、应用)

OTA升级应用 项目地址:https://github.com/aystshen/Android-RomUpgrade. 这是一个负责 Android OTA 升级的后台应用,开机后自动运行后台 Service,支持系统升级和应用升级,支持本地升级(tf卡、u盘)和在线升…

数据库系统概述——第一章 绪论(知识点复习+练习题)

✨博主:命运之光 🦄专栏:离散数学考前复习(知识点题) 🍓专栏:概率论期末速成(一套卷) 🐳专栏:数字电路考前复习 🦚专栏:数…