2024接口自动化测试高频面试题!

news2025/1/11 0:07:26

一、json和字典的区别?

  • json就是一个文本、字符串;有固定的格式,格式长的像python字典和列表的组合;以key-value的键值对形式来保存数据,结构清晰,。可以说是目前互联网项目开发中最常用的一种数据交互格式

  • 字典属于python里面的基本数据类型

  • json不属于python里面的基本数据类型

二、你做接口自动化测试时,测试数据放哪里?

  • 对于一些基础数据比如说数据库配置可以放到静态配置配置文件中(日志级别、请求头、请求url、账号密码)

  • 接口测试需要用到的数据可以放到数据库表,也可以放到excel文件中(请求方法、请求数据)

三、什么是数据驱动

  • 数据驱动就是通过excel来维护测试数据,通过相应的技术处理,拿到测试数据用于测试,从而实现测试数据与代码的解耦;

  • 数据驱动测试的本质就是高级的参数化。

四、excel中如何设计你的用例?

1、所有的接口信息维护在一个excel文件中

2、每个接口,用一个sheet表维护

3、接口传递请求参数用data列,通过构造json格式的字符串即可解决多个传参的问题,同时提升了用例的可维护性

五、excel中的数据怎么拿出来?

  • 通过第三方库openpyxl来完成,项目只要引入第三方库,通过它提供的api即可完成对excel的操作,甚至于我们自己也可以做一些二次封装,封装一个读写excel中用例的方法,使得操作更方便。一行数据就是一个用例。

六、如果有些接口做了鉴权(需要鉴定权限),怎么实现这些接口的自动化测试?

  • 通过token来实现鉴权的,那么同样先调用完登录接口–》拿到它返回的这个数据–》存储起来(存储在动态环境变量Envdate中),后面再调用其他接口的时候直接带上这个数据过去就可以了。

  • 把token保存在动态环境变量Envdate中(因为token是可以变化的,一般不放到静态环境变量中)

七、什么是会话?

  • 所谓会话就是session,而session是一种服务器的缓存技术,由服务器端创建,用户登录了系统,一般就会把登录用户的信息保存到这个session对象中,然后把此会话对应的id(JSESSIONID)返回,因此大部分系统都会用到session机制来实现鉴权。Session保存数据方式也是以key-value的形式。

八、什么是token?

  • 所谓token其实就是服务器端返回的一个字符串(比较复杂,有点类似于xys73494954sdhcdr83435这么一串),基于JWT生成的token令牌,一般这个数据是唯一的,服务器每次返回的token都会不一样。

Token之所以可以用来做鉴权,原理如下:

用户a调用了登录接口–》登录了系统b–》服务器端生成了一个唯一的token信息(假设为c),然后会拿用户的编号id(假设为d)做了一个映射:c-d,然后将这样的映射关系存到数据库或redis等缓存中,然后再返回这个token给客户端–》客户端再调用其他需要鉴权的接口时,只需要将缓存起来的这个token带过去验证–》服务器根据此token检查是否有登录用户信息来判断此请求是否是一个已登录授权的用户。(这里客户端怎么取到这个token,怎么存,再次请求时怎么带过去,上面接口鉴权部分已解释)

九、某个接口请求,参数依赖上个接口的返回数据,怎么处理(接口关联)?

场景:b接口在调用的时候参数依赖于a接口的返回数据。

处理方案:

a接口调用完–》从响应中取出b依赖的这个参数–》保存起来–》b调用的时候,取出这个信息–》当做参数传过去即可。

十、接口调用依赖第三方的接口b,而b接口还未提供给你,如何处理?

通过mock框架搭建自己的mock系统/平台(其实就是自己开发接口),模拟这个第三方接口mock一个出来即可,这样就解决了这个依赖。

十一、你做接口自动化时怎么做的数据验证

  • 数据验证主要包括两个方面:

接口响应报文的验证

利用jsonpath取出响应数据(大多数情况是json)中的关键字段的值,通过AssertEqual断言期望值和实际结果是否符合预期。

数据库表数据的验证

  • 做表数据验证要先明白两点:

a. 表数据验证首先得明白这个接口的基本业务,会影响到哪些表,哪些字段的数据,然后才能准备查询sql去有针对性的查数据。

b. 并不是所有用例的执行都会操作数据库,影响到表数据,因此只有影响到了表数据的用例,才准备查询脚本

十二、如何提升测试套件的执行效率(接口测试优化的地方)

1.减少excel读写,减少不必要的io操作

2.excel读取测试数据,全部存储到静态变量中

3.excel数据回写,尽量通过批量方式去写。

十三、在你做接口自动化过程中,遇到了什么问题吗?说下原因?

工作中遇到的问题

十四、面试官追问框架的大概结构?

  • data层:数据层(excel、py文件存放的测试用例数据)

  • testcases层:测试逻辑层

  • logs层:脚本运行日志

  • reports层:报告层

  • common层:公共方法层(项目的路径配置、处理测试用例数据、日志记录、数据库查询)

  • config层:配置层(环境相关的配置、数据库配置、日志配置)

  • run_test.py:项目的入口文件

框架中自动化用例的执行流程这边简单介绍一下:

  • 通过自动化框架启动文件运行程序,

  • 首先会去用例数据层存放的文件(excel)中读取用例数据,

  • 然后以数据驱动的模式生成测试用例,

  • 之后将用例加载到测试套件中,

  • 最后执行测试套件中的用例,

  • 生成测试报告以及用例执行的详细日志。

十五、接口的响应时间,多少时间为通过,多少时间不通过

接口测试响应时间都是超级快的,ms 级的

十六、什么样的接口,是个好的接口

功能准确无误,响应速度快,支持多用户并发操作,安全性好

十七、接口出错了怎么办?

1、先检查一下请求参数

2、网络通不通

3、服务器有没有启动

4、开发定位

十八、接口测试用例怎么写?

查看这些接口有哪些参数,每个参数有什么约束条件,正常和异常的响应信息有哪些,然后编写测试用例来覆盖这些需求

十九、支付功能,付款的接口是怎么测试的呢?

工作中的情况

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

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

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

相关文章

如何判定一个加密软件是否可靠

一、加密算法的安全性 算法类型:选择采用公认的高安全性加密算法的软件,如AES(高级加密标准)、RSA等。这些算法经过广泛验证,具有强大的加密能力。 密钥长度:较长的密钥长度能够增加破解难度,…

【微信小程序】页面配置

1. 页面配置文件的作用 小程序中,每个页面都有自己的 .json 配置文件,用来对当前页面的窗口外观、页面效果等进行配置。 2. 页面配置和全局配置的关系 3. 页面配置中常用的配置项

利用 Splunk 对人工智能数据基础设施进行 Spelunk 分析

概述 在企业数据方面,MinIO Enterprise Object Store 和 Splunk 有着共生关系。Splunk在其数字流处理器中使用MinIO。MinIO 是一个 Splunk SmartStore 端点。MinIO Enterprise Object Store 是一个高性能、兼容 Amazon S3 的分布式对象存储系统。通过遵循超大规模计…

免费【2024】springboot 个人用户博客系统设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

STM32学习笔记11-PWR电源控制

目录 PWR简介 电源框图 上电复位和掉电复位 可编程电压监测器 低功耗模式 模式选择 睡眠模式 停止模式 待机模式 低功耗模式应用 睡眠模式 停止模式 待机模式 PWR简介 PWR(Power Control)电源控制PWR负责管理STM32内部的电源供电部分&#…

Unity新输入系统结构概览

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 在学习新输入系统之前,我们需要对其构成有个印象 1.输入动作(Inputaction) 是定义输…

队列---学生信息输入输出

作业:链栈,自己实现一遍,但是节点存储不是整数,存储学生信息(年龄,分数,姓名)三级引用。 1、建立学生信息结构体,将data改为学生信息结构体类型。 2、循环入栈和入队。…

RPC 和 HTTP 理解

网上充斥着各类类似于这样的文章:rpc 比 http 快了多少倍?既然有了 http,为什么还要用 rpc 调用等等。遇到这类文章,说明对 http 和 rpc 是由理解误区的。 这里再次重复强调一遍,通信协议不是 rpc 最重要的部分&#x…

KubeSphere 部署 Kafka 集群实战指南

本文档将详细阐述如何利用 Helm 这一强大的工具,快速而高效地在 K8s 集群上安装并配置一个 Kafka 集群。 实战服务器配置(架构 1:1 复刻小规模生产环境,配置略有不同) 主机名IPCPU内存系统盘数据盘用途ksp-registry192.168.9.904840200Harbor 镜像仓库…

命令行参数环境变量

目录 前言: 命令行参数: 现象: 这些参数的意义: 为什么要这么做? 这些事是谁做的呢? 环境变量 现象: 创建环境变量: 结合程序理解: 前言: 我们在前…

R语言里认识机器学习

下面内容摘录自: 1章2节:关于人工智能、机器学习、统计学连和机器学习、R 与 ChatGPT 的探究-CSDN博客文章浏览阅读1k次。在现代科技发展的浪潮中,人工智能(AI)、机器学习(ML)、统计学、R 编程…

网络通信(TCP/UDP协议 三次握手四次挥手 )

三、TCP协议与UDP协议 1、TCP/IP、TCP、 UDP是什么 TCP/IP协议是一个协议簇,里面包括很多协议的, UDP只是其中的一个, 之所以命名为TCP/IP协议, 因为TCP、 IP协议是两个很重要的协议,就用他两命名了,而TCP…

告别知云单一选择,这些文献翻译工具同样值得信赖!

在翻译领域,知云文献翻译以其专业度和便捷性赢得了众多用户的青睐,但市场上还有许多其他翻译工具同样值得关注。本文将为您推荐几款优秀的翻译工具。 Foxit在线翻译 链接: https://fanyi.pdf365.cn/ Foxit在线翻译以其高效的翻译速度和准…

创建第一个Qt项目

创建第一个QT项目 创建工程名称一般不要有特殊符号,不要有中文 项目工程保存路径可修改,路径不要带中文 Base class中的三个选项 QMainWindow:主窗口类,包括菜单栏、工具栏、状态栏。 QWidget:可以创建一个空白的窗口,是所有界…

嵌入式软件--数据结构与算法 DAY 13

在嵌入式中,对算法的要求不高,但顺序查找和冒泡排序是经典算法,必须掌握。 1.算法定义 算法是一个用于解决特定问题的有限指令序列(计算机可以执行的操作)。通俗的理解就是可以解决特定问题的方法。 2.时间复杂度 …

手动和torch.nn实现卷积神经网络、空洞卷积、残差网络

一、数据集 1. 分类问题 数据集——车辆分类数据 ⚫输入图片,输出对应的类别 ⚫共1358张车辆图片 ⚫分别属于汽车、客车和货车三类 ⚫汽车:779张 ⚫客车:218张 ⚫货车:360张 ⚫每个类别随机取20-30%当作测试集 ⚫各图片的大小不一,需要将图片拉伸到相同大小 汽车 …

three.js 安装方法、基础简介、创建基础场景

threejs简介 Three.js是一个基于JavaScript编写的开源3D图形库,‌利用WebGL技术在网页上渲染3D图形。‌ 它提供了许多高级功能,‌如几何体、‌纹理、‌光照、‌阴影等,‌使得开发者能够快速创建复杂且逼真的3D场景。‌ threejs提供了丰富的功…

云原生日志Loki

1. Loki简介 1.1 Loki介绍 Loki是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。它的设计非常经济高效且易于操作,因为它不会为日志内容编制索引,而是为每个日志流编制一组标签…

关于Vue项目npm快捷键,点击run启动报错,及npm i也报错的解决办法

1.配置idea的npm 2.点击运行按钮 3.结果 分析原因及问题: npm i npm run dev 由于是刚刚从gitlab新拉的前端代码,可能没有用命令install过类似于没有编译过,所以执行一下上面的命令 结果报错如下: F:\tbyf\qjyy\hip-manager-ui&…

SpringBoot整合MyBatis-Plus完整详细版(提供Gitee源码)

前言:本篇文章完整详细介绍了SpringBoot整合MyBatis-Plus的完整过程,这边我的SpringBoot版本是2.4版本、JDK1.8和Maven3.8.1版本,跟着文章一步步走就可以了,MyBatis-Plus整合非常方便,也是现在企业开发中经常会用的一个…