2023最新的接口自动化测试面试题
1、请结合你熟悉的项目,介绍一下你是怎么做测试的?
-首先要自己熟悉项目,熟悉项目的需求、项目组织架构、项目研发接口等
-功能 + 接口 + 自动化 + 性能 是怎么处理的?
-第一步: 进行需求分析,需求评审,研发和测试对需求达成统一的理解
-第二步:架构师会输出接口规范;
前后端开发根据接口进行开发
功能测试人员,开始根据需求设计测试用例
接口测试人员根据接口规范设计测试接口测试用例
-第三步:后端开发 先测接口
-第四步:接口测试人员对接口进行测试
-第五步:接口测试通过之后,输出接口的测试报告
-第六步:功能测试人员,根据接口的测试报告和前端开发的提测,来开始进入功能测试,接口测试人员整理接口自动化脚本,并开始在验收环境进行接口测试
-第七部: 功能测试人员测试环境测试通过后,进入验收环境进行功能的验收测试
-UI 自动化小组成员,开始编写回归测试的自动化UI测试的代码
-第八步:发布到线上环境,进行最后一轮的功能回归测试
-第九步:跟踪产生BUG
2、你们公司是如何做接口测试的?
分析: 一般会发这类问题,最好结合项目回答,并且要回答出使用工具、技术、设计的人力安排、工作成果等
答: 我在上一家公司里面,对HRM人力资源系统进行过接口测试,负责的呢轮毂、员工的增删盖茶,部门的增删盖茶,用户资源查询接口测试,一共12个接口
在公司里我开展测试时,先要进行需求分析,然后开发开发代码时,熟悉项目需求。等待开发提测试接口后,拿到接口文档,然后根据接口文档设计测试用例,使用postman 工具进行接口测试,经过3天的测试,一般能够完成一轮的接口测试。测试完成后,如果所有测试用例都执行完毕,并且所有的bug都回归测试通过,没有严重等级bug之后,就可以移交功能测试。
在功能测试人员进行功能测试时,我们可以编写自动化接口测试代码,然后进行接口层的回归测试。
同时,我们接口测试人员会提前在UAT验收环境进行部署和回归测试。等UAT回归通过之后,前端测试就可以介入UAT测试。
等前端测设通过并发布上线之后,我们可以在UAT 环境使用持续集成技术,持续的监控已发布的版本质量,达到保证项目质量的目的
最后,我们使用接口测试自己数,对人力管理系统进行利系统接口层测试,测试效率比功能测试回归的效率高了16倍,功能测试需要花费一天的时间才能执行完成回归测试工作,我们接口人员利用自动化接口测试技术,只花了半个小时。而且还能持续的监控旧版本的代码质量,提高我们的测试效率
如果面试官不打断,就接着说:
这里面,我们使用Postman的断言,关联、引入外部数据文件,对接口进行测试。并且使用newman工具来生成HTML报告,利用mysql来连接数据库,校验数据库的数据。
其中,一些大数据的测试场景,我们使用csv文件来完成测试。
让人印象深刻的bug:
在工作中,我遇到一些让我印象深刻的bug,其中我在测试登陆接口时,偶然发现,我们不输入用户名和输入一个特定的密码结果登陆成功了,然后让我意识到这是一个后门,然后提单了,并且询问开发为什么会有这种问题,最后开发说,这是数据库中插入了一条脏数据,这个数据没有用户名,然后有密码导致,他们会修复。
面试的建议:
1、最好能够主导面试的分为,控制面试官问的问题。(如果他有准备往往很难控制)
2、面试官必然会问的3类问题:你简历中写的技术;公司中使用的技术,扩展知识(超出面试者个人的知识,都是我们面试时不知道的内容)
3、面试的问题本质上就是我们怎么做的
例如: 你知道HTTP协议码?
这个问题不是在问你知不知道HTTP协议,而是在问你 什么是HTTP协议,有什么特点,有哪些部分组成?
你写过测试用例吗?
我曾经对登陆接口设计过接口测试用例,按照测试方法论等价类、边界值设计了登陆的测试用例,一共设计了46个,主要的关键元素时用例的测试名称,操作步骤,严重等级,预期结果这些部分。
3、什么时候开展接口测试?
我们公司一般都是前后端开发链条后进行接口测试。
但是我们可以提前介入,例如在后端开发输出接口文档之后就开始进行模拟的接口测试,编写测试脚本
我们可以在UAT阶段进行接口的回归测试
持续集成时,使用自动化接口自动的持续监控版本质量
4、接口测试和UI测试的工作是否重复?
答: 接口测试和功能测试是有重复场景的,如果是接口和UI测试时完全分离的,没有重复。
接口测试和功能测试在业务逻辑上是重复的。但是接口测试更注重后端的交互,而功能测试可以注重前端UI交互,这样的话各有侧重点,能更好的管理测试。
但是当前行业中,很多公司基本上都是通过功能测试来进行接口测试的,有时候会省略接口测试,但是这种风险比较高,功能测试无法覆盖厚点接口测试中性能和安全测试点,导致测试不充分,有很高的上线风险。
5、接口测试框架怎么搭建的?
答:我们公式使用的框架 python+unitest + request + parameterized + HTMLTestRuuner +pymysql 来进行测试接口
其中 unitest 主要用来管理测试用例
requests模块用来发送接口请求和封装接口
parameterized 用于参数化
HTMLTestRunner 用于生成测试报告
pymysql操作数据库
在我们接口框架中,我们首先是新建一个项目,然后再把项目所需要的目录结构搭建好,接着安装框架需要使用requests,parameterized htmltestrunner pymysql这些工具包
编写脚本会调用封装的接口,来进行接口测试。最后再run_suite.py生成测试报告。report目录用来存放测试报告,utils存放自定义的模块
自我介绍要简洁,条理要清晰
6、接口之间有依赖时怎么处理?
答; 可以用关联,我之前在公司对人力资源管理系统进行接口测试时,其中登陆、员工管理模块都有依赖关系,我遇到后,使用postman 工具,先获取上一个接口的响应,然后保存到全局变量,接着在下一个接口中调用保存的变量,从而实现关联来解决接口之间的依赖关系。
代码实现也是将response响应消息中的值保存为变量,在下一次的接口中调用
7、如何判断接口测试的结果 是成功还是失败?
1、断言接口的返回数据和预期是否一致
2、如果需要更新数据库的数据,需要到数据库中查询数据是否和修改的一致
3、数据库中修改完成还需要查询一下,看看是否能够正常的查询
8、常用的接口请求方式和区别
答:常见的接口请求方式:GET POST PUT delete
GET:用于查询
POST:用于新增
PUT 用于修改
DELETE: 用于删除
其中 GET 和POST有显著的区别:
1、GET 没有请求体,它的请求参数直接放在了url中,post 是有请求体的
2、GET请求相对来讲不安全,因为参数直接暴露了,post将数据放在了请求体中,相对来讲安全
3、GET请求的数据包比POST的小
4、get请求支持的编码格式没有post多
9、发送HTTP请求时,传递参数的途径有哪些?
10、自动化测试多久构建一次? 一天构建两次
11、使用工具和代码 实现接口自动化测试的区别
答:
工具:使用简单,但是不灵活,可以应用一些非定制化需求的测试
代码: 非常灵活,可以定制化
12、HTTP和HTTPS的区别
HTTP默认工作端口号是80,以明文的方式发送内容,不适合敏感信息的传输
HTTPs默认工作端口号是443,加了一个SSL 来加密数据包,
HTTP和HTTPS的区别:
1、HTTP明文传输,数据未加密,安全性差,HTTPS(SSL+HTTP) 数据传输过程是加密的,安全性好
2、使用HTTPS协议 要使用到 CA证书
3、HTTP 页面响应比HTTPS快,主要是因为HTTP使用TCP三次握手建立连接,客户端和服务端需要交换三个包;而
HTTPS除了TCP的三个包 还需要加上SSL的9个包,一共是12个包
4、http和https 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443
5、HTTPS 起始就是构建在ssl、TLS 之上的http协议,所以https比HTTP更耗费服务器资源。
13、cookie和session的区别
cookie -- 客户端会话技术 cookie 保存在客户端,携带cookie 请求服务器
session -- 服务端会话技术 sessionID 保存在服务端,携带sessionID 请求服务器
token -- 令牌 token保存在客户端 携带token请求服务器
如何定位前后端bug?????????????????????????
问题:修改了参数后 点击提交 没有反应,这个时候怎么定位时前端还是后端的问题?
要用fidder抓包来看
1、看一下前端是否发送的正确的请求消息,如果没有发送或者发送了错误的请求消息 则是前端问题
2、如果发送了正确的请求消息: 但是服务器没有相应数据返回,则是服务端问题
3、如果发送了正确请求消息,服务端响应了 但是相应错了,这个还是服务端的问题
4、如果发送了正确的请求,服务端也相应了,相应也是正确的,这个就是前段问题https://www.bilibili.com/video/BV1X84y1H7Gw/#reply609282181
https://www.bilibili.com/video/BV1X84y1H7Gw/#reply609282181
相关文章:
2023最新的接口自动化测试面试题
1、请结合你熟悉的项目,介绍一下你是怎么做测试的? -首先要自己熟悉项目,熟悉项目的需求、项目组织架构、项目研发接口等 -功能 接口 自动化 性能 是怎么处理的? -第一步: 进行需求分析,需求评审&#…...
AcWing语法基础课笔记 第一章 C++入门及简单的顺序结构
第一章 C入门及简单的顺序结构 编程是一种控制计算机的方式,和我们平时双击打开文件、关机、重启没有任何区别。 ———闫学灿 C中常用的变量类型 和所占字节大小 输出变量地址符: 软件环境 作业的评测与提交 在线练习地址:www.acwing.com …...
【并发编程】【2】进程与线程
并发编程 2.进程与线程 2.1 进程与线程 进程 程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在 指令运行过程中还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管…...
MySQL获取当前时间的各种方式
1 获取当前完整时间1.1 now()函数select now();输出:2023-02-15 10:46:171.2 sysdate()函数select sysdate();输出:2023-02-15 10:47:131.3 current_timestamp或current_timestamp()current_timestamp和current_timestamp()函数的效果是一样的,只不过一个是关键字&a…...
redis持久化之AOF(Append Only File)及其总结
1.是什么? 以日志的形式来记录每个写操作,将redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的…...
LeetCode 刷题之队列
5. 队列 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 队列是一种先进先出的(First In First Out)的线性表,简称 FIFO。允许插入的一端为队尾,允许删除的一端为队…...
互联网摸鱼日报(2023-02-15)
互联网摸鱼日报(2023-02-15) InfoQ 热门话题 ChatGPT火爆全球后,OpenAI CEO称“它很酷,但却是个糟糕的产品” 微软发言人证实旗下LinkedIn平台开始裁员 Akamai 推出 Akamai Connected Cloud 和全新云计算服务 AI赋能元宇宙游戏…...
聊聊外包和远程项目的敏捷管理(合辑共7篇)
这是鼎叔的第五十一篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。欢迎关注本专栏和微信公众号《敏捷测试转型》,大量原创思考文章陆续推出。第四个合辑完工了,咱们介绍了外包管理或远程项目如何敏捷交付,满足管理层预期。…...
2023-2-15 刷题情况
检查「好数组」 题目描述 给你一个正整数数组 nums,你需要从中任选一些子集,然后将子集中每一个数乘以一个 任意整数,并求出他们的和。 假如该和结果为 1,那么原数组就是一个「好数组」,则返回 True;否则…...
汉诺塔递归算法精讲
文章目录前言一、汉诺塔是个啥?二、手动解法三、解法抽象四、递归解法五、总结前言 递归算法是计算机算法中的基础算法,也是非常重要的算法,从某种程度上讲,它有一点儿AI的影子。人脑是可以完成递归思路的,但是对不起…...
vue的$nextTick的原理
参考:https://cloud.tencent.com/developer/article/1633546 总结一下:就是$nextTick将回调函数放到微任务或者宏任务当中以延迟它地执行顺序;(总结的也比较懒👶) 重要的是理解源码中它的三个参数的意思&a…...
前端学习第一阶段——第五章CSS(下)
5-9 浮动 08-浮动导读 09-传统网页布局三种方式 10-为什么需要浮动 11-什么是浮动 12-浮动特性-脱标 13-浮动特性-浮动元素一行显示 14-浮动特性-浮动元素具有行内块特性 15-浮动元素经常搭配标准流的父元素 16-浮动布局练习1 <!DOCTYPE html> <html lang"en&quo…...
基于django搭建简单的个人博客
文章目录第一步、在Ubuntu中安装虚拟环境并进入第二步、安装blog所需要的包,在requirements.txt中安装mysqlclient可能会报错,输入下列命令后在安装即可成功第三步、创建好数据库,把测试数据导入第四步、修改DjangoBlog包中 settings中数据库…...
JVM解释器与JIT编译器如何并存?
[1] JVM解释器 JVM设计的初衷仅仅只是为了满足Java程序实现跨平台特性,因此避免采用静态编译的方式直接生成本地机器指令,从而诞生了实现解释器在运行时采用逐行解释字节码的执行程序。 解释器真正意义上所承担的角色就是一个运行时“翻译者”࿰…...
生产者消费者模型
目录 一、生产者消费者模型的概念 二、生产者消费者模型的特点 三、生产者消费者模型优点 四、基于BlockingQueue的生产者消费者模型 4.1 基本认识 4.2 模拟实现 一、生产者消费者模型的概念 生产者消费者模式就是通过一个容器来解决生产者和消费者的强耦合问题 生产者和…...
mysql索引--实例
学生表:Student (Sno, Sname, Ssex , Sage, Sdept) 学号,姓名,性别,年龄,所在系 Sno为主键 课程表:Course (Cno, Cname,) 课程号,课程名 Cno为主键 学生选课表:SC (Sno, Cno, Score)…...
浅聊一下,可中断锁(ReentrantLock)
前言 今天早上上厕所,上的我痔疮犯了,屁股一坐下去就感觉一根针在刺我,得的是外痔,之前还坚持用痔疮膏来着,但是感觉涂药的那个姿势以及位置我实在无法忍受,就把它给断了,到头来还是屁股糟了罪&…...
关于Arcgis林业数据处理的62个常用技巧
一、计算面积 ( 可以帮我们计算小班面积 ) 添加 AREA 字段,然后右键点击字段列,然后点击 CALCULATE VALUES; ---> 选择 ADVANCED --》把下面的代码输入,然后在最下面 处写 OUTPUT 点击 OK 就 OK 了。 Dim Outp…...
一些NLP术语
一些NLP术语pre-training(预训练)fine-tuning(微调)下游任务Few-shot Learning(少样本学习)Prompt?(自然语言提示信息)二级标题三级标题pre-training(预训练&…...
Session详解,学习 Session对象一篇文章就够了
目录 1 Session概述 2 Session原理 3 Session使用 3.1 获取Session 3.2 Session保存数据 3.3 Session获取数据 3.4 Session移除数据 4 Session与Request应用区别 4.1 Session和request存储数据 4.2 获取session和request中的值 4.3 session和request区别效果 5 Sess…...
从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
Linux云原生安全:零信任架构与机密计算
Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...
vulnyx Blogger writeup
信息收集 arp-scan nmap 获取userFlag 上web看看 一个默认的页面,gobuster扫一下目录 可以看到扫出的目录中得到了一个有价值的目录/wordpress,说明目标所使用的cms是wordpress,访问http://192.168.43.213/wordpress/然后查看源码能看到 这…...
Linux系统部署KES
1、安装准备 1.版本说明V008R006C009B0014 V008:是version产品的大版本。 R006:是release产品特性版本。 C009:是通用版 B0014:是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存:1GB 以上 硬盘…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...
java高级——高阶函数、如何定义一个函数式接口类似stream流的filter
java高级——高阶函数、stream流 前情提要文章介绍一、函数伊始1.1 合格的函数1.2 有形的函数2. 函数对象2.1 函数对象——行为参数化2.2 函数对象——延迟执行 二、 函数编程语法1. 函数对象表现形式1.1 Lambda表达式1.2 方法引用(Math::max) 2 函数接口…...
