【测试面试】你要的宝典,软件接口测试面试题大全(总结)--附答案

news2025/1/13 15:29:09

目录:导读

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


前言

1、接口测试主要目的是什么?

软件测试面试题:https://www.bilibili.com/video/BV1Lq4y137aR/

另外两种问法:接口测试的价值,意义?为什么要做接口测试?

主要就是验证后台服务端的业务逻有没有问题,提高测试的效率
①越底层发现bug,它的修复成本是越低的
②前端页面修改频繁情况下,接口测试不受页面元素改变而影响
③检查系统的安全性,前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是
通过接口可以传入-1元
④如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口自动化测试可以提高测试效率
⑤接口测试相对容易实现自动化持续集成,且相对U自动化也比较稳定,可以减少人工,回归测试人力成本与时间,缩短测试周期

2、接口测试和平常的Ul测试有什么区别?

其实这两者测试的侧重点是不同的,接口因为没有界面,更多考虑后台服务器对请求的,处理逻辑问题,业务交互,检测的是后台“容错机制”是否完整;

而ui更多会去关注页面展示,数据转换,界面排序这些功能,当然也会后台数据处理的问题,ui测试其实已经包含了接口测试。系统功能的用例更全面,不仅有界面的,也有业务功能用例,还有其他用户场景的用例功能入口用例,流程用例,而接口测试主要根据各种入参场景来设置用例。

3、给你一个新的接口,你怎么去设计用例?

首先要对于每个要测的接口都要先搞清楚这个接口的功能,它的作用是什么,熟悉这个业务功能需要用到什么协议,请求方式是什么,接口有哪些参数。

对于每个参数的作用都要搞清楚,像数的类型,是否有约束限制,是否为必填的,长度,其他的限制等等,如果两个参数之间有关联我们还要考虑参数的组合场景,对于参数不理解的,一般都会跟开发沟通下,然后考虑返回数据的类型,返回数据中的返回码和返回信息是什么,通过以上几个点去提炼测试点,设计用例。

参数约束——长度、必选项、格式、数据类型
业务场最——正确的业务场景;错误的业务场景;异常场景:服务器空间不足
组合场景——相互依赖:手机和验证码、用户名和验证码;
相互排斥:二选一当然还有边界值等价类等等

Jmeter测试流程,步骤如下:
创建 jmeter线程组一添加HPPT请求-输入协议-域-端口-路径-编码-请求方式-请求参数-启动

Jmeter测试流程:
先需求,再根据需求写测试点转换成测试用例,根据测试用例编写测试脚本;执行测试脚本;
提交BUG,跟踪BUG

4、你们什么时候测试接口?

一般有需求就会做,后台的接口开发好,就可以开始测。例外,如果增加了新需求,也要做接口测试,还有就是开发对后台的接口做了修改,交互逻辑发生变化,我们也要重新对接口进行测试。

5、你怎么去检查,分析接口?

我们主要是根据入参情况,去看接口的返回值,对于返回值,我主要关注的几个点:
1.状态码;
2.提示信息;
3.返回数据的具体内容。根据接口文档的说明去检查这个3个点是否满足接口需求文档;
4.有些如果要检查数据库的,就连接数据库获取数据与返回的数据做对比。
如果不满足就是有问题,如果满足则通过,如果有Bug我们会先大概分析下,是什么原因,并进行复测,如果还是有问题,提交Bug给开发,让开发修复,之后再回归测试

6、依赖于第三方的接口如何测试?

1.需要第三方接口的,接口文档
2.发送请求到第三方接口,检查第三方接口返回的数据是否正确
3.不正确的时候,要跟第三方接口联调,看是请求问题,还是第三方接口返回数据有误

这个我们公司的第三方接口,我们都是打通的,比如电商,我们通过调用微信接口等等,都是打通的,比如要测试下单第三支付,我们自己开店,收款设置我们自己的账号,然后通过商品设计1分钱,去测试的。

如果不打通的话,基本也只能抓包,主要保证我们发送出去的数据符合需求文档就行,然后真正的上线之前,我们会在预生产环境做一个联调测试,把各自系统连在一起,做一个联调测试没有问题了

我们就可以上线,基本就这么做的

联调测试怎么做的?
其实联调测试就是数据拉通测试,两个子系统,连在一起,形成一个完整的系统,然后从上游下数据,下游接到数据看传过来的数据是否符合下游的系统要求然后下游做了操作,把数据返回给上游,通知上游说数据返回了。

上游看返回的数据是否符合要求,如果没有问题,就这个数据就拉通成功这个都是按照用例来执行,上游和下游一起出一份用例,两边都评审通过,然后按照测试用例执行,每条用例测试通过那么联调测就完成了。

7、你们接口怎么鉴权的?

1.通过用户和密码,auth鉴权
2.通过 cookie和 session
3.通过 token
4.通过sign签名

现在app一般是通过 token鉴权,有些是通过把 token放在请求头里面,有些是通过 singn签名这个字段放在body里面去鉴权的,一般的web是通过 session去鉴权的

8、cookie、session、token的区别?

它们都是用来做鉴权的,区别的话,大概是这样的
1.现在 cookie、session一般是配合使用的用户第一次登陆时,服务器会创建一个 session生成一个 sessionID,sessionID保存在 cookie中,然后返回到客户端,保存在浏览器中。

客户端每次发请求都会把这个值带到服务器,做一个鉴权和会话的跟踪,或者时效的验证

2.token和 cookie、session差不多,通过算法,每次验陆,会产生一串很长的随机字符串,一般是在放在返回的body里面,或者返回的头里面,他们都是服务器产生,带过来是要做验证和时效的验证的。

一般在app中使用token比较多一点,Web端使用cookie、session的鉴权方式会多一点。

9、上传文件的接口用 JMeter怎么做?

另外一种问法:有没有做过文件上传的接口,具体怎么做?

要测试上传文件的接口,在JMeter的http请求这个组件中传递请求参数的栏目中专门提供了一个用来文件上传的,在这里面需要填写几个内容,一个就是文件的路径,还有一个就会参数名称,还有就是MlME类型也就是指定要上传的文件的类型,这样就可以了。

10、对于需要加密的请求参数, JMeter如何处理?

这里首先让开发给我们写一个加密,解密的jar, JMeter直接调用这个jar进行加密,解密处理

1.首先需要将开发给到的加解密的jar包文件放到 jmeter的lib/ext目录下
2.在测试计划中中有一个 add Directory or jar to classpath,在这里指定jar的路径,添加需要的jar包
3.在jmeter的前置处理器中添加 Beanshell PreProcessor然后在其中添加java代码
具体就是:
首先导入需要用到的加密包中的加密算法类;
如果要对json格式的请求参数加密,组装json格式的数据;
调用加密类中的函数对json格式的参数数据进行加密,如果只对具体某个参数加密,那就针对哪个参数加密即可;
然后将加密之后的数据保存到 jmeter的一个变量中就可以了
4.最后直接在消息体中引用这个变量就可以了

具体代码如下:
Jmeter调用

import com changfu EncryptAnd Decryptinterface;  #导入加密类
String json_str =
"{\"Username\":\"amycheno2\",\"password\":\"F59BD65F7EDAFB087A81D4DC
AO6c4910\",\"deviceNo\",\"35584806988942\")";				#请求的参数

调用加密类中的函数对请求参数实现加密处理。

String enpost= EncryptAndDecryptinterface.getEncryptPost(json_str);   #将请求参数加密
vars put("enpost",enpost);			#将加密处理后的数据存到 jmeter变量中
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

只有在不断地拼搏中,才能收获成功的果实。无论前路如何崎岖,只要坚定信念,勇往直前,我们就一定能够创造出属于自己的辉煌!

永远不要低估自己的潜力和能力,只有勇于挑战自我,才能开启更加精彩的人生篇章。让我们不畏困难,砥砺前行。

只要心中有梦想,就不要停止奋斗的步伐。即使路途崎岖,也要坚定前行的信念,才能在生命的旅途中创造属于自己的辉煌!

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

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

相关文章

将war包发布到容器中的tomcat

文章目录 将war包直接发布到容器中使用数据卷将war包持久化到docker的宿主机(CentOS7) 将war包直接发布到容器中 1、将windows中的文件通过xftp程序传到centOS7中 2、创建容器,通过docker中的命令将web.jar复制到tomcat容器中 # 查看docker中的镜像 ~]$ docker imag…

0.8秒捕捉,速度超乎想象,小米和WPS用户太激动,office用户已用

只需0.8秒就能捕捉 距离4月18日小米13ultra发布会时间还剩一天。这几天雷军的微博已经把小米13ultra的亮点已经做了很多铺垫宣传。 除了系统和硬件之外,就是这次小米13ultra最大的“杀手锏”的就是“徕卡相机”。连宣传文案都改成了:一个伟大的瞬间&…

【UE】玩家位置存档

在上一篇博客中(【UE】将存档的值显示在控件蓝图上)我们介绍了如何将存档的值显示在控件蓝图上,本篇博客要介绍的是如何将玩家位置进行存档。 效果 可以看到重新进入游戏时,角色在存档点出现,而不是玩家出生点 步骤 …

XMU 算法分析与设计第三次上机题解

文章目录 一、BFS试炼之微博转发二、DFS试炼之不同路径数三、并查集试炼之合并集合并查集的介绍 四、堆排序堆排序的介绍 五、厦大GPA(分组背包)分组背包介绍 六、消防安全指挥问题(最短路Floyd)七、铺设光纤问题(最小生成树Prim)…

干货满满~如何解决跨域!!

1. 为什么会存在跨域 首先要知道,在浏览器/app中使用异步请求(ajax)发送到服务器时,会出现跨域问题。若是服务与服务之间通信是没有跨域这一说的 2. 浏览器为什么要设置跨域的存在? 为了防止恶意网页可以获取其他网站的本地数据&#xff0…

4.23、TCP状态转换(为什么四次挥手)

4.23、TCP状态转换 1.TCP状态转换图2.为什么需要四次挥手,状态转换 1.TCP状态转换图 2.为什么需要四次挥手,状态转换 2MSL(Maximum Segment Lifetime) 主动断开连接的一方, 最后进入一个 TIME_WAIT状态, 这个状态会持续: 2msl ms…

实例化构造方法static统统都学会

文章目录 前言一、实例化是什么?二、构造方法1.概念2.特性3.. 如果用户没有显式定义,编译器会生成一份默认的构造方法,生成的默认构造方法一定是无参的 四.static1.static修饰成员变量2.static修饰成员方法3.static成员变量初始化 总结 前言 …

AR实战-基于Krpano的多场景融合及热点自定义

背景 在之前的博客中,曾经介绍了关于Krpano的相关知识,原文:全景自动切片技术-krpano初识。简单讲解了基于krpano1.19-pr13下单张全景照片的处理与展示。随着实景中国在各地的落地生根,三维园区、三维景区、三维乡村等等需求的集中…

ERP系统给企业管理带来哪些改变?

企业资源计划(ERP)系统是一种综合性的管理工具,它可以集成和管理企业内部所有的业务流程和信息。自上世纪90年代以来,ERP系统已成为许多企业的重要工具,为企业管理带来了巨大的变革。 第一,ERP系统可以将企…

ArrayList与顺序表

目录 ​编辑 一、线性表 二、顺序表 1、接口的实现 (1)打印顺序表 (2)新增元素 (3)判定是否包含某个元素 (4)查找某个元素对应的位置下标 (5)获取 …

基于QTableView中的MVD代理添加总结

目录 1、Qt中MVD说明 1.1 View 1.2 Delegate 1.3 Model/View的基本原理 2、代码是现实示例 2.1 设置样式文件 2.2 set base attribute 2.3 设置model 2.4 设置表头 2.5 设置数据 2.6 添加代理控件 2.6.1 添加 QSpinBox 代理 2.6.2 添加 QComboBox 代理 2.6.…

【JS】vis.js使用之vis-timeline使用攻略,vis-timeline在vue3中实现时间轴、甘特图

vis.js使用之vis-timeline使用攻略,vis-timeline实现时间轴、甘特图 1、vis-timeline简介2、安装插件及依赖3、简单示例4、疑难问题集合1. 中文zh-cn本地化2. 关于自定义class样式无法被渲染3. 关于双向数据绑定 vis.js是一个基于浏览器的可视化库,它提供…

深度探索vector

vector是什么 ? vector就是一个可以自动扩充的array。 源码解析 vector主要是通过三个指针来维护的,分别是起点,当前终点,以及当前最大空间 sizeof(vector对象) 3 * 指针大小 vector每当遇到空间不同的情况,都会…

Windows逆向安全(一)之基础知识(十三)

Switch语句 先前讲了分支结构的if else形式,除此之外还有一种分支结构:switch 此次就来以反汇编的角度研究switch语句,并与if else进行比较 Switch语句的使用 有关Switch语句在vc6.0中生成的反汇编可分为4种情况,这4种情况的区…

不用科学上网,免费的GPT-4 IDE工具Cursor保姆级使用教程

1、Cursor 编辑器 可以直接官方网站下载:https://www.cursor.so/ (这里以Mac为例) 这是一款与OpenAI合作并且基于GPT4的新一代辅助编程神器,它支持多种文件类型,支持格式化文本、多种主题、多语言语法高亮、快捷键设…

react-7 组件库 Ant Design Mobile(移动端)

1.安装组件库 npm install --save antd-mobile 常用组件 tabbar 底部导航 Swiper 轮播图(走马灯) NavBar(顶部返回累) 配合 Dialog,Toast InfiniteScroll 无限滚动(实现下拉刷新) Skeleto…

ROS学习第九节——服务通信

1.基本介绍 服务通信较之于话题通信更简单些,理论模型如下图所示,该模型中涉及到三个角色: ROS master(管理者)Server(服务端)Client(客户端) ROS Master 负责保管 Server 和 Client 注册的信息,并匹配话题相同的 Server 与 Client &#…

远程控制电脑的软件哪个比较好用

有多种软件选项可用于远程控制计算机,最适合您的软件选项取决于您的具体需要和要求。 以下是一些最流行的远程控制软件选项及其功能和优势: TeamViewer TeamViewer 是使用最广泛的远程控制软件选项之一。 它具有用户友好的界面,并提供文件传…

Vue核心 Vue简介 初识

Vue核心 Vue简介 初识 1.1.Vue核心 Vue简介 初识 1.1.1.Vue核心 Vue简介 初识 英文官网 中文官网 1.1.2.介绍与描述 Vue 是一套用来动态构建用户界面的渐进式JavaScript框架 构建用户界面:把数据通过某种办法变成用户界面渐进式:Vue可以自底向上逐层…

YOLO V8实战入门篇 | Anaconda3 | ultralytics

目录 一、虚拟环境1.1 Anaconda3 安装1.2 创建适用YOLO V8的虚拟环境 二、YOLO v82.1 YOLO v8简介2.2 下载YOLO v8源码2.3 安装依赖 三、运行目标检测模型 一、虚拟环境 1.1 Anaconda3 安装 https://blog.csdn.net/weixin_42855758/article/details/122795125 参考这个链接&a…