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/#reply609282181https://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…...
Java——不同的子序列
题目链接 leetcode在线oj题——不同的子序列 题目描述 给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。 字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新…...
Git 基本操作之Git GUI界面和git命令行如何选择
1. 为啥推荐使用git命令行 我发现公司有很多的同事都喜欢使用git的GUI界面工具,喜欢鼠标点点点就完成了代码的提交,这种方式的确是比较简单便捷,但是却存在风险。先上一个事故给大家醒醒脑。 VScode Git 界面操作引发的惨案 上面的惨案是VS…...
Python编程 动态爱心
作者简介:一名在校计算机学生、每天分享Python的学习经验、和学习笔记。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页 目录 前言 一.所用库 1.random简介 2.math 简介 3.tkinter库的简介 二.实际图 三.…...
JavaScript :基础语法
位置: HTML 中的 Javascript 脚本代码必须位于 <script> 与 </script> 标签之间。 JavaScript 输出方式 window.alert() 弹出警告框。document.write() 将内容写到 HTML 文档中。innerHTML 写入到 HTML 元素。console.log() 写入到浏览器的控制台。 …...
buu [AFCTF2018]Single 1
题目描述: Jmqrida rva Lfmz (JRL) eu m uqajemf seny xl enlxdomrexn uajiderc jxoqarerexnu. Rvada mda rvdaa jxooxn rcqau xl JRLu: Paxqmdyc, Mrrmjs-Yalanja mny oekay. Paxqmdyc-urcfa JRLu vmu m jxiqfa xl giaurexnu (rmusu) en dmnza xl jmrazxdeau. Lxd …...
Linux C++ 200行完成线程池类
文章目录1、atomic使用2、volatile关键字3、条件变量4、成员函数指针使用5、线程池6、主线程先退出对子线程影响7、return、exit、pthread_exit区别8、进程和线程的区别1、atomic使用 原子操作,不可分割的操作,要么完整,要么不完整。 #includ…...
C语言指针剖析(初阶) 最详细!
什么是指针?指针和指针类型野指针指针运算指针和数组二级指针指针数组什么是指针?指针是内存中一个最小单元的编号,也就是地址。1.把内存划分为一个个的内存单元,一个内存单元的大小是一个字节。2.每个字节都给定唯一的编号&#…...
AcWing语法基础课笔记 第三章 C++中的循环结构
第三章 C中的循环结构 学习编程语言语法是次要的,思维是主要的。如何把头脑中的想法变成简洁的代码,至关重要。 ——闫学灿 学习循环语句只需要抓住一点——代码执行顺序! while循环 可以简单理解为循环版的if语句。If语句是判断一次…...
A simple freeD tracking protocol implementation written in golang
可以使用的go版本freed调试代码 可以通过udp发送和接收数据 What is freeD? freeD is a very simple protocol used to exchange camera tracking data. It was originally developed by Vinten and is now supported by a wide range of hard- and software including Unreal…...
简约精美电商小程序【源码好优多】
简介 一款开源的电商系统,包含微信小程序和H5端,为大中小企业提供移动电子商务优秀的解决方案。 后台采用Thinkphp5.1框架开发,执行效率、扩展性、稳定性值得信赖。并且Jshop小程序商城上手难度低,可大量节省定制化开发周期。 功…...
微信网站建设app公司/试分析网站推广和优化的原因
实现效果 原网址: http://saxdudu.com/gb/info?id6 优化后: http://saxdudu.com/gb/info/6 1. 通过Bootstrap配置路由协议 public function _initRoute(Yaf_Dispatcher $dispatcher) {//在这里注册自己的路由协议,默认使用简单路由, 随便起个名字Yaf…...
如何用织梦cms做网站/新闻头条今日要闻
转自:https://wenku.baidu.com/view/1ef7c985b9d528ea81c779b8.html 在人像和微距摄影中经常会遇到背景虚化的手法。所谓背景虚化,就是说在保证被摄主体清晰的同时,将远处的背景模糊掉,从而突出被摄主体。很多人会问,…...
中国建设银行官网站网点/域名查询服务器
目的:找出一个整形数组中的元素的最大值 以下,我们用类和对象的方法来做。#include<iostream> using namespace std; class Array_max{ private://声明在类的外部不可訪问的隐私成员 int array[10]; int max; public://声明在类的外部能够…...
程序员做兼职的网站/app拉新推广平台渠道
本文地址:https://www.cnblogs.com/maplefighting/p/8007456.html 没啥成绩,大二三拿过省赛银,然后大三大四总共打了两场ccpc和两场icpc,都是一轮游。(虽然已经超过往届师兄的记录,但是还是贼菜,主要没系统…...
wordpress 搜索结果分类/谷歌sem推广
大数据是什么?在维克托迈尔-舍恩伯格及肯尼斯库克耶编写的《大数据时代》中提出:大数据指不用随机分析法(抽样调查)这样捷径,而采用所有数据进行分析处理。那么究竟多大的数据算是大数据,这个其实并没有明确…...
孝感个人网站建设/优化网络的软件下载
Flask-SQLAlchemy库让flask更方便的使用SQLALchemy,是一个强大的关系形数据库框架,既可以使用orm方式操作数据库,也可以使用原始的SQL命令. Flask-Migrate 是一个数据迁移框架,需要通过Flask-script库来操作. 一.配置Flask-SQLAlchemy 程序使用的数据库地址需要配置在SQLALCHEM…...