2024年测试岗最新自动化测试面试题整理,干货满满

一、接口测试

1、接口测试用例的编写要点有哪些?(问法二:接口测试用例设计需要考虑哪些方面?问法三:接口测试中有哪些要注意的测试点?)

1) 考虑输入参数和输出参数的合法性,参数必填,默认值,参数长度和格式校验,边界等,图片长传考 虑图片大小和格式。查询考虑数据排序,分页考虑分页显示等。

2) 业务逻辑和功能实现

3) 数据库校验

4) 性能测试(接口tps、响应时间等)

5) 兼容性,新老版本数据的兼容

6) 安全性,敏感信息加密,恶意攻击的防范,权限控制等

7) 幂等性(接口幂等性就是用户对于同一操作发起的一次请求或者多次请求的结果是一致的,不会因为 多次点击而产生了副作用。举个最简单的例子,那就是支付,用户购买商品后支付,支付扣款成功,但 是返回结果的时候网络异常,此时钱已经扣了,用户再次点击按钮,此时会进行第二次扣款,返回结果 成功,用户查询余额返发现多扣钱了,流水记录也变成了两条,这就没有保证接口的幂等性)

2、你是怎么测试接口的?(问法二:说一下你们接口测试流程?)

1**、获取接口文档,熟悉单接口以及链路接口业务,包括接口地址,请求方式,鉴权方式,入参,出 参,错误码等。**

2**、编写接口测试用例并评审。**

接口功能用例设计:

1) 正例:单接口返回成功场景!链路接口(业务流接口)逻辑实现!

2) 反例:

鉴权反例:鉴权码为空,错误的鉴权码,鉴权码已过期......

参数反例:参数为空,参数类型异常,参数长度异常, 错误码反例:(根据业务而定)

其他反例场景:

如接口黑名单,接口调用次数限制等,分页场景:(0,第一页1,中间页5,最后一页10,100,其他 业务异常)

3) 兼容性用例:比如一个接口需要兼容多个版本的前端调用。

3**、使用接口测试工具Postman/Jmeter执行接口测试**

通常执行过程中需要考虑以下几个方面:

1) 是否满足前提条件:有些接口需要满足前提,才可成功获取数据。常见的,需要登录Token

2) 参数之间是否存在关联:有些参数彼此之间存在相互制约的关系

3) 参数是否加密,比如说我登陆的接口,用户名和密码是不是加密,如果不加密的话,别人拦截到 你的请求,就能获取到你的信息 了,加密规则是否容易破解。

4) 参数是否是动态参数。

5) 接口是否需要签名验证等。

4**、实现持续集成并输出接口测试报告发送电子邮件,企微(钉钉群)等,有bug报bug。**

5**、每天晚上12点都会运行一次,从而监控是否有因开发代码变更或者新功能添加而导致的遗漏接口

bug。**

3、get和post的区别

区别在于:

1) GET一般用于查询数据;而POST一般用于添加、删除或修改数据。

2) 传参方式不同:get通过地址栏传输,post通过表单报文传输,所以post请求比get请求的安全性相对 较好。get请求可以直接通过浏览器访问,支持刷新和后退。post请求不能直接使用浏览器访问,刷新后 数据要重新发送。

3) 传参长度不同:get参数有长度限制(受限于url长度),而post无限制

4) GET产生一个TCP数据包(对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200返回数据),POST产生两个TCP数据包(对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok返回数据)、

03:48

4、http和https的区别

1) http是超文本传输协议,信息是明文传输,Https协议是由HTTP协议+SSL协议构建的加密传输协 议,比http协议安全;

2) http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443;

3) HTTP 无需证书,而 HTTPS 需要认证证书

5、cookie,session,token有什么相同点和不同点。

相同点:三者都是用于鉴权并且都是由服务器产生的。不同点:

1. cookie保存在客户端的浏览器上,cookie不安全,其他人可以通过分析存放在本地的cookie并进行cookie欺骗。

2. session比cookie安全,它会在一定时间内保存在服务器的内存,但当访问增多时,比较占用服务器的 性能。单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储与服务端,浏览器对其没有限制。

3. token就是令牌,是一个字符串,主要是用于做客户端身份认证,通常登录成功后,服务端会返回token,客户端需要把token值保存下来,后续请求其他接口时,需要在请求中携带这个token值,只有 服务端对token校验通过后,才允许访问。

6、你平常做接口测试的过程中发现过哪些bug?多吗?(问法二:接口测试有没有测试出什么问题?)

接口测试中发现的bug,大多都是接口没按约定返回结果,参数为空,参数长度或类型校验、参数边界 值、代码逻辑、数据错误、或没有返回合理的错误提示等方面的问题。

(1) **一般在前后端联调阶段执行接口测试发现的 bug 会很多**(之前开发写代码的时候,所有的ajax 数据都不是后端返回的真实数据,而是我们自己通过接口mock模拟的假数据,当前端的代码编写完毕, 后端的接口也已经写好之后,我们就需要把mock数据去掉,尝试使用后端提供的数据,进行前后端联 调,这个过程我们就把它称之为前后端的接口联调。)

前后端联调接口Bug案例:

比如1:查询列表页接口,前端想分页,Mock就写了三条测试数据,调用后端接口时分页有问题? 比如2:前端访问的mock数据时没有考虑鉴权。访问真实的后端接口时没有权限。

(2) **然后在接口冒烟测试、回归测试阶段执行接口测试的时候,bug就不多。**

常规接口Bug案例:

比如1:新增促销活动接口,满减金额为空也能保存成功,原因是后端代码没有对满减金额参数做空值判 断。

比如2:活动列表接口,查询出来的活动数据少了第一条,原因是SQL中limit条件传入起始序号是1而不 是0

比如3:更新活动接口,接口提示更新成功,但是数据库中的update_time字段没有更新成最新时间,原 因是开发忘记更新这个字段

比如4:比如说下订单接口,商品的价格参数是300元,那我在提交订单时候,我把这个商品的价格改成

3元,后端并没有做验证,更狠点,我把钱改成-3,我的余额还增加了?

接口鉴权Bug案例:

比如1:比如说修改商品信息接口,只有卖家权限才能修改,我传一个普通用户也可以修改成功,我传一 个其他卖家用户也能修改成功。

比如2:之前有个退保接口,下游系统加了身份证证件有效期校验,导致被测系统接口调用跑不通,通过 自动化发现的问题,并及时去评估到对被测系统的影响。

7、你在接口测试中是怎么校验接口返回结果是否正确?

1) 验证接口响应状态码是否是200。

2) 当接口响应正文比较短,比较固定时验证响应的完整内容是否等于预期。

3) 当响应内容较长较多时,验证响应报文是否包含关键信息。

4) 当响应正文为XML格式或JSON格式时,可以通过XPATH或JSONPATH,正则表达式,获取其中的某个节点,验证响应报文关键字段是否存在。

5) 查询数据库或调用其余接口查询。当要验证的信息在当前测试接口的响应内容中不存在时,可以调用 其他接口来验证。例如,一个增加用户信息的接口,要验证信息确实增加成功了,可以再调用查询用户 信息接口来确认用户信息添加成功。当然,在获取数据库查询权限的情况下,也可以直接查询数据库来 验证。

8、为什么要做接口测试

A、 在目前前后端分离开发的模式下,项目在开发过程中,客户端和服务端开发的进度不一致,比如服务端先开发完了,这个时候可以先对服务端进行接口测试,确保服务端逻辑和返回数据是正确的,然后 再测试客户端。

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

C、接口测试属于集成测试、测试介入越早、就越能在项目早期发现问题,其修复问题的

成本越低,在开发提测后,可以先通过工具把服务端的接口测试跑一遍,确保接口测试用例都是通过 的,快速判断服务端接口是否符合预期。然后再通过UI界面进行测试。否则接口有bug,前端页面必定 有bug。并且接口测试非常快速、接口测试用例执行的时间是毫秒级的。

9、说一下你知道的HTTP状态码,以及它们代表什么意思

1xx信息提示(表示临时的响应)
200正常(表明服务器成功地接受了客户端请求)
307重定向(服务器要求客户端重新请求一个新的URL)
401未授权,需要身份认证
403服务端禁止访问
404请求的资源未找到(比如url写错了,页面被删除等)
405请求方法不允许(比如服务端的POST类型,客户端使用GET方式请求)
5xx服务端内部错误(服务器由于遇到错误而不能完成该请求)

10、一个接口请求不通该如何排查?

可能的原因是:

1. 检查请求四要素:请求方式,请求路径,请求头,请求参数是否写错。

2. 客户端和服务端网络不通

3. 服务端项目没有部署起来,接口无法访问。

4. 请求被服务器的防火墙拦截了

5. 服务端程序内部发生了错误

6. 没有访问权限(比如缺乏token、cookie之类)

7. 客户端设置了网络代理(比如打开了Fiddler/Charles等抓包工具) 8.如果是浏览器访问,是不是绑定了错误的hosts

11、接口测试中的加密或签名的接口如何处理?

加密接口:

1) 首先要先了解接口使用的加密方式(如:base64、md5、sha系列加密、rsa加密等)

2) 检查接口测试工具是否支持这种加密方式,如果支持的话,直接使用对应功能就行了(比如Jmeter

支持md5);如果加密方式是公司内部特有的算法,可以在接口测试工具中调用公司的加密算法代码

(如jar包)来实现加密。

签名接口:

了解签名规则之后,在接口请求之前先对参数按照签名规则加密之后再发送请求。签名sign一般通过请 求头传值。

12、你们项目中有哪些接口,举几个例子

结合项目去说:一般不低于3-5个接口案例(不能包括登录和注册接口),记住一条原则就是:凡是有数 据交互的地方就一定有接口。比如:增,删,改,查的功能接口。自动化测试技术交流群: 321255410

13、没有接口文档,如果做接口测试?

方式一:可以使用Fiddler、Charles等抓包工具抓取接口数据之后整理成接口文档,接口中不清楚的字 段,找时间集中找开发解答。然后再进行接口测试;

方式二:可以通过Jmeter的代理录制功能,先把接口请求录制下来,然后再逐一进行接口测试。

14、依赖于第三方数据的接口如何进行测试?

可以通过Postman搭建mock服务,但是Postman的mock服务有访问次数限制,每天只能访问1000 次,也可以通过Flask,Servlet等技术搭建接口Mock服务器。

15、依赖于登录状态的接口如何测试?

答:依赖登录状态的接口的本质上是在每次发送请求时需要带上session或者cookie才能发送成功,

postman会自动关联cookie,jmeter通过添加http cookie管理器来处理cookie关联。

16、常见的请求头以及它们的作用是什么?

Accept: (客户端可以接收的数据格式)

X-Requested-With:(ajax请求,异步请求) User-Agent: (客户端的用户)

Content-Type: application/x-www-form-urlencoded; charset=UTF-8(内容的格式)

Cookie: csrf_token=2c76c391ab3922fe; (cookie信息)

17、工作中常用的jmeter自带函数有哪些

1) random():随机数函数

2) randomString():随机字符串函数3) time():获取当前时间戳函数

4) md5():加密函数

5) setpropty():跨线程组设置属性值函数

18、使用jmeter如何做接口之间的数据关联

接口数据关联指的是上一个接口的某个返回值,作为下一个接口的请求参数。

如果上一个接口返回的是json格式的,可以用json提取器把数据保存到一个变量里,如果是其他格式 的,可以使用正则提取器保存数据。

那么在下一个接口中,直接使用${变量名}就能使用这个数据。

19、Jmeter中常用的断言方式

1、Json断言,可以通过Json路径表达式判断接口返回的Json字符串中某些字段是否符合预期

2、响应断言,可以判断响应头/响应体中是否包含预期的字符串。区别在于:Json断言只能判断Json格式;响应断言只要是文本格式都可以判断,应用范围更广

3、beanshell断言,可以判断当一个接口经过CSV数据驱动之后,对返回的正常结果和异常结果同时进 行判断。

  总结

如果你对此文有任何疑问,如果你也需要接口项目实战,如果你对软件测试、接口测试、自动化测试、面试经验交流感兴趣欢迎加入我们,加入方式在文章的最后面

  自动化测试相关教程推荐:

2023最新自动化测试自学教程新手小白26天入门最详细教程,目前已有300多人通过学习这套教程入职大厂!!_哔哩哔哩_bilibili

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibili

测试开发相关教程推荐

2023全网最牛,字节测试开发大佬现场教学,从零开始教你成为年薪百万的测试开发工程师_哔哩哔哩_bilibili

postman/jmeter/fiddler测试工具类教程推荐

讲的最详细JMeter接口测试/接口自动化测试项目实战合集教程,学jmeter接口测试一套教程就够了!!_哔哩哔哩_bilibili

2023自学fiddler抓包,请一定要看完【如何1天学会fiddler抓包】的全网最详细视频教程!!_哔哩哔哩_bilibili

2023全网封神,B站讲的最详细的Postman接口测试实战教学,小白都能学会_哔哩哔哩_bilibili

  总结:

 光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

如果对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如有不懂还要咨询下方小卡片,博主也希望和志同道合的测试人员一起学习进步

在适当的年龄,选择适当的岗位,尽量去发挥好自己的优势。

我的自动化测试开发之路,一路走来都离不每个阶段的计划,因为自己喜欢规划和总结,

测试开发视频教程、学习笔记领取传送门!!

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

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

相关文章

SQL窗口函数大小详解

窗口大小 OVER 子句中的 frame_clause 选项用于指定一个滑动的窗口。窗口总是位于分区范围之内,是分区的一个子集。指定了窗口之后,分析函数不再基于分区进行计算,而是基于窗口内的数据进行计算。 指定窗口大小的语法如下: ROWS…

java进阶四-深入理解泛型和注解

泛型和注解是框架技术必备的技能 5 泛型5.1泛型理解5.1.1 泛型概念5.1.2 泛型的特点5.1.3 如何理解Java中的泛型是伪泛型?5.1.4 泛型的价值 5.2 泛型语法5.2.1 泛型类5.2.2 泛型接口3.2.3 泛型方法3.2.4泛型的上下边界3.2.5创建泛型数组 5.3泛型应用场景5.3.1数据库…

通用异构参数服务器技术

一、架构设计 通用异构参数服务器技术的架构设计主要考虑的是系统的可扩展性和灵活性。这种设计需要能够适应不同的计算环境和任务需求,包括CPU、GPU、FPGA等不同的计算资源。为了实现这一目标,参数服务器采用了层次化的架构设计,包括数据层…

Python实现 病理图像mrxs格式转SVS

直接给代码吧。 如果不需要svs格式,需要的是tif的话,可以直接用slideviewer或者caseviewer转成tif。 事先说明一下,这个代码是采用一次性读取整个WSI后,再转存为svs的方式。 所需要的内存需要满足一次性读取整个WSI的要求。 这个代…

(七)独立按键

文章目录 独立按键原理图三行代码法简单概述代码书写键码推算如何使用短按键长按键 状态机法简单概述代码书写键码推算如何使用短按键长按键 现象 独立按键原理图 三行代码法 简单概述 代码书写 u8 Trg 0x00;//短按键 u8 Cont 0x00;//长按键 void BtnThree(void) {u8 reada…

JWT(JSON Web Tokens)入门与Java实践

一、JWT简介 在现代Web应用中,身份验证和授权是确保系统安全性的关键环节。JSON Web Tokens(JWT)是一种开放标准(RFC 7519),它定义了一种紧凑且自包含的方式,用于在网络之间安全地传输信息。JW…

【AI】大模型的黑盒困惑

目录 一、人工智能大模型 二、大模型的黑盒特性 三、黑盒导致的问题 一、人工智能大模型 人工智能大模型是指使用深度学习技术构建的,具有庞大规模参数的神经网络模型。这些模型具有数以亿计的参数,能够对大量的数据进行训练,从而在各种任…

CMake入门教程【核心篇】安装(install)

😈「CSDN主页」:传送门 😈「Bilibil首页」:传送门 😈「本文的内容」:CMake入门教程 😈「动动你的小手」:点赞👍收藏⭐️评论📝 文章目录 1. 概述2. 使用方法2…

如何从零开始搭建公司自动化测试框架?

一、为什么要搭建自动化测试框架 测试如果按照是否手工划分,可以分为“手工测试”和“自动化测试”。 “手工测试”也就是用人力来进行功能测试。相比自动化测试而言执行效率慢,可以进行探索性测试和发散性测试。 “自动化测试”主要是通过所开发的软…

SSE和websocket

SSE (Server-Sent Events,服务器推送事件) 是一种用于实现服务器向客户端推送实时数据的 Web 技术。 SSE 允许服务器在建立的 HTTP 连接上发送事件流,而不需要客户端发起请求。相比于传统的请求-响应模式,它提供了一种服务器主动推送数据给客…

Python控制程控电源(USB)

文章目录 前言一、环境搭建1.软件安装2.硬件安装二、设置程控电源连接方式三、Python代码四、验证结果五、pyd文件前言 随着智能电动汽车行业的持续发展,汽车电子或嵌入式设备在软硬件的测试中,都会使用程控电源供电,特别是自动化测试、压力测试场景必定使用到程控电源控制…

nifi详细介绍--一款开箱即用、功能强大可靠,可用于处理和分发数据的大数据组件

目录 目录 一、引言 二、NiFi 的历史背景介绍 三、NiFi 是什么? 核心特性 应用领域 四、NIFI 入门 五 、NiFi 工作流程 六、实际应用场景 七、优势总结 一、引言 NiFi(Apache NiFi),全名为“Niagara Files”&#xff0…

Docker把容器打包成镜像并迁移到另外一台服务器上运行

在Docker中,您可以通过两个步骤将容器打包成镜像,并将该镜像保存到本地文件系统中。以下是具体步骤: 将容器提交为镜像: 使用 docker commit 命令可以将现有的容器状态保存为新的镜像。这个过程类似于创建一个镜像的快照。 假设您…

Oracle修改用户密码

文章目录 Oracle修改用户密码Oracle用户锁定常见的两种状态Oracle用户锁定和解锁 Oracle修改用户密码 使用sys或system使用sysdba权限登录,然后执行以下命令修改密码: alter user 用户名 identified by 密码;密码过期导致的锁定,也通过修改…

StratifiedGroupKFold解释和代码实现

StratifiedGroupKFold解释和代码实现 文章目录 一、StratifiedGroupKFold解释和代码实现是什么?二、 实验数据设置2.1 实验数据生成代码2.2 代码结果 三、实验代码3.1 实验代码3.2 实验结果3.3 结果解释 四、样本类别类别不平衡 一、StratifiedGroupKFold解释和代码…

Redis:原理速成+项目实战——初识Redis、Redis的安装及启动、Redis客户端

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:首期文章 📚订阅专栏:Redis速成 希望文章对你们有所帮助 在此之前,我做过的项目里面也用到了…

利用深度学习图像识别技术实现教室人数识别

引言 在现代教育环境中,高效管理和监控教室成为了一个重要议题。随着人工智能技术的迅猛发展,特别是深度学习和图像识别领域的突破,我们现在可以通过智能系统来自动识别教室内的人数,从而实现更加智能化的教室管理。 深度学习与图…

LeetCode 84. 柱状图中最大的矩形

84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights [2,1,5,6,2,3] 输出:10 解释…

Spring-IOC综述

文章迁移自语雀。 怎么查看spring的文档 ioc综述 说到spring的ioc,其实就是控制反转,为啥需要控制反转呢,其实是为了功能的增强,如果不用spring, 我们直接使用工厂方法,静态工厂方法, 都是是可以获取到对象的,但是如果需求变了,我们在类的生成时,添加了很多信息,使用工厂就不…

【INTEL(ALTERA)】Arria V FPGA GPIO 引脚上的内部箝位二极管是否始终处于活动状态?

说明 当设备未通电或未配置设备时,英特尔 Arria V FPGA GPIO 引脚上的内部箝位二极管是否处于活动状态? 解决方法 根据 Arria V 器件手册:第 1 卷:设备接口和集成,片上钳位二极管功能通过 英特尔 Quartus Prime 软件…