当前位置: 首页 > news >正文

接口测试怎么做?全网最详细从接口测试到接口自动化详解,看这篇就够了...

目录:导读

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


前言

抛出一个问题:接口测试需要验证数据库吗?

Python自动化测试:https://www.bilibili.com/video/BV16G411x76E/

有的接口会返回很多数据,有的接口可能就返回一个状态码及success之类的消息,这些需要验证数据库么?

现在在写一个测试框架,配置接口参数和预期返回值,生成xml文件管理用例,用一个比较方法对预期和返回作比较,不需要根据每个接口写脚本,现在的疑惑只是比较返回值,并不清楚接口是否真的成功了,比如删除之类的接口,返回说成功了,但数据是否真的删除了?

如果要验证数据库,感觉得为每个用例写脚本去验证了,这就和初衷不符(只写个比较函数,比较返回的所有值,不需要为每个接口单独验证)。

做自动化是都会问要不要验证数据库?
答案是不要的。

根据分层自动化测试的概念。

UI层自动化模拟的是用户操作,假设我是一个普通的用户,在你家的系统上购买了一件商品,我怎么知道有没有购买成功?

难道要去查你家系统的“已购买表”?
没权限,就算有权限我也不会!那我怎么验证?
很简单啊!系统不是有“已购买” 商品列表嘛!点开“已购买”菜单看就可以了!(如果没有这功能,那说明你的系统设计有问题。用户体验不好,差评!!)

接口自动化模拟的是开发的代码操作,A开发写的接口给B开发去调用,A系统的接口给B系统去调用,假设我是一个开发,我调用了微信的接口去做获取用户头像,有个用户获取不到,来!微信团队,你让我查查你们的数据库呗!微信肯定不答应。数据库不是你想查,想查就给你查!

那接口返回了“success”,但没有把数据添加/删除成功怎么办?
从几年接口自动化的经验来说,这中情况基本非常少见,因为开发在写代码的时候,返回“success”的前提条件肯定是基于操作成功的。
开发写代码的时候肯定会自已运行一下啊!
怎么会运行都不运行,哪儿来的自信!

你们的开发就是粗心怎么办?
可以这么做的,开发提交了新的接口,我会边读接口代码边设计接口用例(如果接口逻辑看不懂接口数据可能就构造不出来,接口用例自然也不会写)

代码有问题就直接告诉开发改了,在这个过程中,是会查数据库的。一旦接口用例写好之后,后面再回归去跑的时候就不管了,当然,每条接口用例里面肯定不会加查询数据库的动作。

在特殊情况下,调用了一个删除数据的接口,有没有真的删除一条数据,我可以调用查询数据的接口啊!
查不出来刚才删除的数据,不就证明刚才的删除接口操作是ok的了。

如何做好接口测试?

谈起软件测试,就不得不说一下接口测试,凡是有功能的软件都离不开接口,没有接口的软件只是一个模具或页面,不具备任何功能。

为什么要做接口测试?

互联网的快速发展,公司内部系统或与外部系统的关联越来越多,一个业务流程关联多个后端系统,它们的关联都是基于接口来实现,接口测试可以将复杂的系统关联进行简化,只要做好每个接口的测试就能够较好的保证系统质量。

单个系统的变更,是否会影响到关联业务系统,比较难用常规的测试方面来覆盖相关的应用系统(例如使用此接口的外部 系统有N个,不可能每个做功能兼容性测试),但可以通过对接口功能的覆盖来验证是否影响它人对接口的调用。

大家都知道,接口其实就是前端页面或APP等调用与后端做交互用的,所以好多人都会问,我功能测试都测好了,为什么还要测接口呢?

OK,在回答这个问题之前,举个例子:

比如测试用户注册功能,规定用户名为6~18个字符,包含字母(区分大小写)、数字、下划线。首先功能测试时肯定会对用户名规则进行测试时,比如输入20个字符、输入特殊字符等,但这些可能只是在前端做了校验,

后端可能没做校验,如果有人通过抓包绕过前端校验直接发送到后端怎么办呢?试想一下,如果用户名和密码未在后端做校验,而有人又绕过前端校验的话,那用户名和密码不就可以随便输了吗?如果是登录可能会通过SQL注入等手段来随意登录,甚至可以获取管理员权限,那这样不是很恐怖?

所以,接口测试的必要性就体现出来了。

接口测试范围?

业务功能(包括正常、异常场景是否实现)
业务规则(覆盖度是否全面)
参数验证(边界、业务规则是否达到要求)
异常场景(重复提交、并发提交、事务中断、多机环境、大数据量测试)
性能测试响应时间、吞吐量、并发数、资源要求)
安全测试(权限验证、SQL注入等)

接口测试的重点?

检查接口返回的数据是否与预期结果一致;
检查接口的容错性,假如传递数据的类型错误时是否可以处理;
接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理;
接口的性能,http请求接口大多与后端执行的SQL语句性能、算法等比较相关。接口的安全性,外部调用的接口尤为重要。

接口测试怎么测?

拿到api接口文档(规范:swagger,showdoc,不规范:word文档,没有:抓包或录制,一般需要抓包或者录制的接口很有可能只测正例),熟练接口业务,接口地址,接口鉴权,接口入参,接口出参,错误码。

头痛的面试题:在你们的这个项目你测了哪些接口?

凡是有数据交互的地方就有接口。
例如:查询支付宝余额接口。查询芝麻分接口等等。

接口用例设计?

通过性验证:首先肯定要保证这个接口功能是好使的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正确的结果。

参数组合:现在有一个操作商品的接口,有个字段type,传1的时候代表修改商品,商品id、商品名称、价格有一个是必传的,type传2的时候是删除商品,商品id是必传的,这样的,就要测参数组合了,type传1的时候,只传商品名称能不能修改成功,id、名称、价格都传的时候能不能修改成功。

接口安全:绕过验证,绕过身份授权,参数是否加密,密码安全规则,密码的复杂程度校验;

异常验证:比如说必填的参数不填,输入整数类型的,传入字符串类型,长度是10的,传11,总之就是你说怎么来,我就不怎么来。

常用工具?
接口测试的工具很多,比如 postman、jmeter、apifox、loadrunner、SoapUI等。

最常用的还是 postman与jmeter。但现在很多企业都是做的接口自动化测试。
接口自动化测试:Python+requests+pytest+yaml+alluer+Jenkins。

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

相关文章:

接口测试怎么做?全网最详细从接口测试到接口自动化详解,看这篇就够了...

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

DataStore入门及在项目中的使用

首先给个官网的的地址:应用架构:数据层 - DataStore - Android 开发者 | Android Developers 小伙伴们可以直接看官网的资料,本篇文章是对官网的部分细节进行补充 一、为什么要使用DataStore 代替SharedPreferences SharedPreferences&a…...

用Python爬取中国各省GDP数据

介绍 在数据分析和经济研究中,了解中国各省份的GDP数据是非常重要的。然而,手动收集这些数据可能是一项繁琐且费时的任务。幸运的是,Python提供了一些强大的工具和库,使我们能够自动化地从互联网上爬取数据。本文将介绍如何使用P…...

深度学习-第T5周——运动鞋品牌识别

深度学习-第T5周——运动鞋品牌识别 深度学习-第T5周——运动鞋品牌识别一、前言二、我的环境三、前期工作1、导入数据集2、查看图片数目3、查看数据 四、数据预处理1、 加载数据1、设置图片格式2、划分训练集3、划分验证集4、查看标签 2、数据可视化3、检查数据4、配置数据集 …...

自媒体的孔雀效应:插根鸡毛还是专业才华?

自媒体时代,让许多原本默默无闻的人找到了表达自己的平台。有人声称,现在这个时代,“随便什么人身上插根鸡毛就可以当孔雀了”。可是,事实真的如此吗? 首先,我们不能否认的是,自媒体确实为大众提…...

Linux系统优化

一、系统启动流程 1.centos6 centos6开机启动流程,传送门 2.centos7启动流程 二、系统启动运行级别 2.1 什么是运行级别 运行级别:指操作系统当前正在运行的功能级别; [rootweb01 ~]# ll /usr/lib/systemd/system lrwxrwxrwx. 1 root root…...

Java笔记_22(反射和动态代理)

Java笔记_22 一、反射1.1、反射的概述1.2、获取class对象的三种方式1.3、反射获取构造方法1.4、反射获取成员变量1.5、反射获取成员方法1.6、综合练习1.6.1、保存信息1.6.2、跟配置文件结合动态创建 一、反射 1.1、反射的概述 什么是反射? 反射允许对成员变量,成…...

前端web入门-HTML-day01

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 HTML初体验 HTML 定义 标签语法 总结: HTML 基本骨架 基础知识: 总结&#…...

创建一个Go项目

创建一个Go项目 1.创建项目 package mainfunc main() {println("你好啊,简单点了!") }如果是本地的话可以采用go run 项目名的方式。 可以采用go run --work 项目名的方式,此时可以展示日志信息。 如果是只编译的话 go build 项…...

从 Spring 的创建到 Bean 对象的存储、读取

目录 创建 Spring 项目: 1.创建一个 Maven 项目: 2.添加 Spring 框架支持: 3.配置资源文件: 4.添加启动类: Bean 对象的使用: 1.存储 Bean 对象: 1.1 创建 Bean: 1.2 存储 B…...

【一文吃透归并排序】基本归并·原地归并·自然归并 C++

目录 1 引入情境基本归并排序实现 C 2 原地归并排序2-1 死板的解法2-2 原地工作区2-3 链表归并排序 3 自底向上归并排序4 两路自然归并排序4-1 形式化描述4-2 代码实现 1 引入情境 归并思想:假设有两队小孩,都是从矮到高排序,现在通过一扇门后…...

读《Spring Boot 3核心技术与最佳实践》有感

我是谁? 👨‍🎓作者:bug菌 ✏️博客:CSDN、掘金、infoQ、51CTO等 🎉简介:CSDN/阿里云/华为云/51CTO博客专家,C站历届博客之星Top50,掘金/InfoQ/51CTO等社区优质创作者&am…...

板子短路了?

有段时间没更新了,主要是最近有点忙,当然也因为有点“懒”。 做这行业的都知道,下半年都是比较忙的,相信大家也是! 相信做硬件的小伙伴们,遇到过短路的板子已经不计其数了。 短路带来的危害:…...

一行代码绘制高分SCI限制立方图

一、概述 Restricted cubic splines (RCS)是一种基于样条函数的非参数化模型,它可以可靠地拟合非线性关系,可以自适应地调整分割结点。在统计学和机器学习领域,RCS通常用来对连续型自变量进行建模,并在解释自变量与响应变量的关系…...

spring 容器结构/机制debug分析--Spring 学习的核心内容和几个重要概念--IOC 的开发模式--综合解图

目录 Spring Spring 学习的核心内容 解读上图: Spring 几个重要概念 ● 传统的开发模式 解读上图 ● IOC 的开发模式 解读上图 代码示例—入门 xml代码 注意事项和细节 1、说明 2、解释一下类加载路径 3、debug 看看 spring 容器结构/机制 综合解图 Spring Spr…...

excel实战小测第四

【项目背景】 本项目为某招聘网站部分招聘信息,要求对“数据分析师”岗位进行招聘需求分析,通过对城市、行业、学历要求、薪资待遇等不同方向进行相关性分析,加深对数据分析行业的了解。 结合企业真实招聘信息,可以帮助有意转向数…...

什么是SpringBoot自动配置

概述: 现在的Java面试基本都会问到你知道什么是Springboot的自动配置。为什么面试官要问这样的问题,主要是在于看你有没有对Springboot的原理有没有深入的了解,有没有看过Springboot的源码,这是区别普通程序员与高级程序员最好的…...

基于IC5000烧录器使用winIDEA烧写+调试程序(S32K324的软件烧写与调试)

目录 一、iSYSTEM简介二、如何使用iSYSTEM winIDEA烧写调试程序2.1 打开winIDEA:2.2 新建一个Workspace;2.3 硬件配置:2.4 选择CPU芯片型号:2.5 加载烧写文件:2.6 开始烧录程序:2.7 程序调试Debug:2.7.1 运行程序&…...

新手开始学【网络安全】要怎么入门?

前言:网络安全如何从零开始学习,少走弯路? 目录: 一,怎么入门? 1、Web 安全相关概念(2 周)2、熟悉渗透相关工具(3 周)3、渗透实战操作(5 周&…...

Linux指令 快捷键

热键 上一次我们说到了linux的基本指令,这次我们先说一下热键 TAB TAB键在linux中有什么作用呢?? 在Linux中,假设我们想要输入的指令忘记了,我们可以TAB两下,帮我们补全命令或者假如命令太多&#xff0…...

Testing and fault tolerence考试要点

文章目录 ATPGFault modelScanFunctional testMemory BISTLogic BISTboundary scanATEIddq testingFault tolerant designRisk analysis ATPG ATPG工作流程fault collapsing的原则 Fault model 有哪些fault model以及他们的工作原理 Scan Scan寄存器结构Scan Chain的连接方…...

记一次springboot项目漏洞挖掘

前言 前段时间的比赛将该cms作为了题目考察,这个cms的洞也被大佬们吃的差不多了,自己也就借此机会来浅浅测试下这个cms残余漏洞,并记录下这一整个流程,谨以此记给小白师傅们分享下思路,有错误的地方还望大佬们请以指正…...

R语言 | 数据框

目录 一、认识数据框 7.1 建立第一个数据框 7.2 验证与设定数据框的列名和行名 二、认识数据框的结构 三、获取数据框内容 3.1 一般获取 3.2 特殊字符$ 3.3 再看取得的数据 四、使用rbind()函数增加数据框的行数据 五、使用cbind()函数增加数据框的列数据 5.1 使用$符号…...

基于SpringBoot的招生管理系统的设计与实现

背景 本次设计任务是要设计一个招生管理系统,通过这个系统能够满足管理员和学生的招生公告管理功能。系统的主要功能包括首页、个人中心、学生管理、专业信息管理、专业报名管理、录取通知管理、系统管理等功能。 管理员可以根据系统给定的账号进行登录&#xff0…...

Oracle Profile详解

Profile的作用主要表现在三个方面 1、密码策略 2、对用户所能使用的资源进行管理 3、profile存放在数据字典里面,默认有一个名字为default的profile set linesize 160 set pagesize 30 select resource_name,resource_type,limit from dba_profiles where profile‘…...

r语言tidyverse教程:5 字符串处理stringr

文章目录 R语言系列: 编程基础💎循环语句💎向量、矩阵和数组💎列表、数据帧排序函数💎apply系列函数tidyverse:readr💎tibble💎tidyr💎dplyr💎stringr stri…...

知识变现海哥:知识变现的本质就是卖

知识变现的本质就是卖,而有人买的本质,就是你解决了某方面的需求。 好的成交,从来都是相互的, 只靠一边主动推销来维系是远远不够的。 绝对不是靠忽悠,而是靠实力。 先讲一个故事。 19世纪时,一个年轻的…...

jdbc和druid和mybatis之间的关系

第一种方式 jdbc整合了:加载数据库驱动,创建连接,写原生语句,执行,关闭这些东西. 第二种方式 mybatis对jdbc进行封装,他允许你通过配置的形式,配置数据库参数,并且允许你通过xml来写动态sql语句.if:test让你可以把sql变得灵活起来.并且还能将你的查询结果直接映射到你想要的…...

云原生Istio案例实战

目录 1 Istio监控功能1.1 prometheus和grafana1.2 访问prometheus1.3 访问grafana 2 项目案例:bookinfo2.1 理解什么是bookinfo2.2 sidecar自动注入到微服务2.3 启动bookinfo2.4 通过ingress方式访问2.5 通过istio的ingressgateway访问2.5.1 确定 Ingress 的 IP 和端…...

解读赛力斯年报:华为智选车的B面

作者 | Amy 编辑 | 德新 赛力斯,华为智选车的B面。 2021年,赛力斯SF5进入华为渠道销售,华为自此开启了智选车模式。到年末,双方更是推出AITO品牌。AITO凭借M5/M7等车型在2022年拿下了超过7.5万台的销量,成为增长最快的…...