软件测试面试:接口自动化测试面试题(含答案+文档)

🍅 视频学习:文末有免费的配套视频可观看

🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快

1、json和字典的区别?

Json是轻量级的数据交互格式,以key-value的键值对形式来保存数据,结构清晰,可以说是目前互联网项目开发中最常用的一种数据交互格式。字典,同样是以key-value的键值对来保存数据,是python中的一种数据类型。             

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

对于一些基础配置比如数据库配置可以放到properties文件(yaml文件,没用过就别拓展了) 2) 接口测试需要用到的数据可以放数据库表,也可以放到excel中。             

3、什么是数据驱动?

数据驱动就是通过excel,或者xml,数据库等数据结构来维护测试数据,通过相应的技术去处理,拿到测试数据用于测试,从而实现测试数据与代码的解耦,数据驱动测试的本质是高级的参数化。             

4、Excel中如何设计你的用例?

1) 所有的接口信息维护在一个表单

2) 关于接口的用例数据维护在一个表单

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

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

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

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

首先需要明确接口是通过什么机制来实现的鉴权

1)如果是通过会话id(JSESSIONID)来实现鉴权的,那么先调用完登录接口--》拿到它返回的这个数据--》存储起来--》后面再调用其他接口的时候直接带上这个数据过去就可以了。

2)如果是通过token来实现鉴权的,那么同样只需要在调用完登录接口--》拿到它返回的这个数据--》存储起来,后面操作同上。先回答上面的一个基本实现步骤,然后再补充以下一些实现细节:

a.怎么取到这个JSESSIONID或者token这个信息怎么取首先得明白它是怎么返回来的,可能为以下两种方式:

1)登录接口的响应头

2)登录接口的响应报文 需要找开发确认,不同方式不同取法。

b.怎么存储这个JSESSIONID或者token

1)文件中(excel、properties文件都可以)

2)数据库

3)代码里面自己定义的公共静态变量,作为一个共享的数据

C.请求其他需要鉴权的接口时,怎么带过去这个数据 先找开发人员确认,再调用需要鉴权的这些接口怎么携带这个鉴权的信息(票)。一般不外乎这么几种:

1)拼接在url上传过去用于服务器验证

2)设置到请求体中

3)通过请求头带过去 弄明白怎么传过去以后,就设法从保存了这个鉴权信息的地方取出来--》传过去              

7、什么是会话?

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

8、什么是token?

所谓token其实就是服务器端返回的一个字符串(有点类似于:xys73494954sdhcdr83435这么一串),这个数据是基于什么算法生成的需要找开发确认,一般这个数据是唯一的,服务器每次返回的token都会不一样。Token之所以可以用来做鉴权,原理如下:客户端--》客户端再调用其他需要鉴权的接口时,只需要将缓存起来的这个token带过去验证--》服务器根据此token检查是否有登录用户信息来判断此请求是否是一个已登录授权的用户。(这里客户端怎么取到这个token,怎么存,再次请求时怎么带过去,上面接口鉴权部分已解释)。             

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

场景:b接口在调用的时候参数依赖于a接口的返回数据。处理方案:a接口调用完--》从响应中取出b依赖的这个参数--》保存起来--》b调用的时候,取出这个信息--》当做参数传过去即可。保存方案:参考问题5中的数据保存方式              

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

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

11、接口测试的垃圾数据如何清理?

可以自己准备单独的环境(独立的数据库),这样接口调用产生的数据可以在整个套件执行完后,通过执行sql脚本来完成数据删除。             

12、你做接口自动化,项目用的是什么数据库,用什么来操作的这个数据库

Mysql,可以通过jdbc来实现数据库的增删查改等操作。             

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

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

1)接口响应报文的验证 利用jsonpath取出响应数据(大多数情况是json)中的关键字段的值,通过Assert断言这些关键字段的值是否符合预期。预期值和jsonpath取值表达式可以配置在excel中。

2)数据库表数据的验证

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

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

b.并不是所有用例的执行都会操作数据库,影响到表数据,因此只有影响到了表数据的用例,才准备查询脚本。具体做法:Excel用例准备aa,bb,cc三列,aa传脚本,bb,cc两列分别用来回写用例执行前的sql查询结果和用例执行后的sql查询结果,两个数据对比即可知道数据变化是否满足预期。             

14、如何提升测试套件的执行效率?

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

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

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

15、你用过单元测试框架吗,是什么框架,有哪些常用操作

用过,unittest,pytest(不熟可以不说),这些测试框架都支持我们去定义测试套件,达到管理我们测试用例代码的作用,同时这些测试框架提供的一些丰富注解不仅能很方便的控制测试用例的执行顺序来控制整个测试流程,还能为各种测试场景的实现提供支撑。

常用操作:setup,teardown,适合单个测试用例的初始化、环境清理。

seutpClass,teardownClass:适合测试类的全局初始化、环境清理。

testloader的discover:用来发现测试用例

testSuite的addTests:用来装载测试用例 ddt 教据驱动

htmlTestRunner:用来生成html测试报告              

16、说说你对接口的理解

接口是服务,是功能点实现,是数据传递的通道,也是服务器端的一个实现了某种协议(比如http协议..)和映射机制(当访问一个url时就会通过服务器端的映射处理机制解析后,落到对应的处理函数)的函数,接口参数就是函数的参数,接口的响应数据就是函数的返回值。             

17、做过接口测试吗,有哪些熟悉的工具。

做过(即时你之前没有用过可视化工具做过接口测试,但你现在学了接口自动化测试就算有经验了)。熟悉的工具:可视化工具比如:jmeter,postman,soapui等(用过哪些说哪些)代码:requests发包技术来实现接口测试。             

18、接口常见的请求方法有哪些?

GET、POST、PUT、DELETE等(不熟的可以说)              

19、请简单说一说get、post这两种请求方法的区别?

Get:

a.一般对于从服务器取数据的请求可以设置为get方式

b.Get方式在传递参数的时候,一般都会把参数直接拼接在url上(例如:http://xxx?id=1&type=2)

c.Get请求方法可以传递的参数数据量是有限的(因为一般参数是拼接在url上,而浏览器对于url的长度是有限制的)

d.Get请求因为是直接将数据拼接在url上,所以安全性不如post强(相对),但是get的执行效率要快于post  

Post:

a.一般往服务器提交数据的请求会设置为post方式

b.Post方式传递参数一般都会把参数放在请求体,而不会拼接在url

C.Post请求方法可以提交的数据量不受限制

d.Post请求传参相对于get要安全(相对不是绝对),但是post的执行效率不如get。             

20、在浏览器中输入URL,回车之后发生了什么?

(1)URL 解析 (2)DNS 查询 (3)TCP连接 (4)处理请求 (5)接受响应 (6)渲染页面

在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接【点击文末小卡片免费领取资料文档】

2024年吃透经典软件测试面试题200问,3天学完,让你的面试少走99%弯路!【存下吧,附100W字面试宝典】

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

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

相关文章

ChatGPT 基本用法!ChatGPT4的prompt的使用例子!

授人以鱼,不如授人以渔。这句话在AI领域尤为贴切,尤其是在构建与AI模型交互的prompt(提示)时。OpenAI在Discord官方服务器上设有一个名为prompt-library的频道,这里聚集了各种创意和专业的prompt,涵盖了从写…

Linux C 中执行shell命令

文章目录 摘要前言exec函数的使用system函数使用popen函数的使用 摘要 本文尝试使用exec,system,popen函数,来执行一个shell命令。(1) 如果只需要执行命令后的返回值,不关心标准输出,错误输出,可以使用system函数。(2) 如果希望拿…

基于java+springboot+vue实现的火车票订票系统(文末源码+Lw)294

摘要 火车票订票系统可以对火车票订票系统信息进行集中管理,可以真正避免传统管理的缺陷。火车票订票系统是一款运用软件开发技术设计实现的应用系统,在信息处理上可以达到快速的目的,不管是针对数据添加,数据维护和统计&#xf…

HAproxy反向代理与负载均衡

目录 一、HAproxy介绍 1. 概述 2. 关于4/7层负载均衡 2.1 无负载均衡 2.1.1 图示 2.1.2 说明 2.2 四层负载均衡 2.2.1 图示 2.2.2 说明 2.3 七层负载 2.3.1 图示 2.3.2 说明 3. 特性 4. HAProxy负载均衡常见策略 5. 处理模式 二、HAproxy安装 1. yum安装 2. 第…

Vue - v-if和v-else-if和v-else的使用

一、简单的演示 <body><div id"app"><p v-if"score>90">优秀</p><p v-else-if"score>60">及格</p></div><script src"../js/vue.js"></script><script>const app…

3月11日代码随想录电话号码的字母组合

17.电话号码的字母组合 给定一个仅包含数字 2-9 的字符串&#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下&#xff08;与电话按键相同&#xff09;。注意 1 不对应任何字母。 示例 1&#xff1a; 输入&#xff1a;digits &q…

mysql的索引、事务、分库分表问题

1.了解MySQL的索引吗&#xff1f;它为什么使用Btree作为底层&#xff0c;而不是其他呢&#xff1f; 这里我们要谈的是其他数据结构的缺点&#xff0c;然后说说Btree的优点&#xff0c;也就看你对MySQL的Btree与其他数据结构熟不熟悉。 Hash &#xff08;1&#xff09;Hash 索引…

Error running ‘Attach debug to process‘

这里写自定义目录标题 Ubuntu导入源码调试遇到错误 Ubuntu导入源码调试遇到错误 打开调试UI&#xff0c;选择system_process进程&#xff0c;直接右下角弹出错误对话框。错误如下&#xff1a; Error running ‘Attach debug to process’ Unable to find project context to …

[HackMyVM]靶场 Espo

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 (Un…

openAI key 与ChatGPTPlus的关系,如何升级ChatGPTPLus

一、前言 先详细介绍一下Plus会员和Open API之间的区别&#xff1a; 实际上&#xff0c;这两者是相互独立的。举例来说&#xff0c;虽然您开通了Plus会员&#xff0c;并不意味着您就可以使用4.0版本的API。尽管这两个账户可以是同一个&#xff0c;但它们是完全独立的平台。 …

小程序设备控制API能力汇总——DP相关API

ty.device.publishDps 下发 DP 功能点 需引入DeviceKit&#xff0c;且在>1.2.6版本才可使用 请求参数 Object object 属性类型默认值必填说明deviceIdstring是设备 iddpsRecord<dpId, any>是dpsmodenumber是下发通道类型 0: 局域网 1: 网络 2: 自动pipelinesArray&…

rocketmq学习笔记(一)安装部署

初次使用rocketmq&#xff0c;记录一下全流程步骤。 1、下载安装包 首先在官网&#xff0c;下载安装包&#xff0c;可也根据官方文档进行部署&#xff0c;但有一些细节没说明&#xff0c;可能会有坑&#xff0c;本文会尽量详细的描述每个步骤&#xff0c;把我踩过的坑填补上。…

后端八股笔记------Redis

Redis八股 上两种都有可能导致脏数据 所以使用两次删除缓存的技术&#xff0c;延时是因为数据库有主从问题需要更新&#xff0c;无法达到完全的强一致性&#xff0c;只能达到控制一致性。 一般放入缓存中的数据都是读多写少的数据 业务逻辑代码&#x1f447; 写锁&#x1f4…

[BT]小迪安全2023学习笔记(第20天:Web攻防-PHP特性)

第20天 和 &#xff08;等值比较&#xff09; 当使用 操作符时&#xff0c;PHP将进行宽松比较&#xff0c;也就是说&#xff0c;只比较两个值的等价性&#xff0c;而不考虑它们的类型。 如果两个值类型不同&#xff0c;PHP会尝试将它们转换成相同的类型&#xff0c;然后再进…

基础 | JVM - [指令 性能监控]

INDEX jps&#xff08;jvm 进程工具&#xff09;jinfo&#xff08;java 配置信息工具&#xff09;jstack &#xff08;查看虚拟机栈信息&#xff09;jmap&#xff08;jvm 内存影像工具&#xff09;jstat&#xff08;jvm 统计信息监控工具&#xff09;jvisualvm&#xff08;查看…

【NR 定位】3GPP NR Positioning 5G定位标准解读(十)-增强的小区ID定位

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

对比才有伤害!ChatGPT 4.0 VS Claude 3,这就是ChatGPT偷懒变慢的根本原因!附解决方案

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;所以创建了“AI信息Gap”这个公众号&#xff0c;专注于分享AI全维度知识…

算法D38 | 动态规划1 | 509. 斐波那契数 70. 爬楼梯 746. 使用最小花费爬楼梯

理论基础 无论大家之前对动态规划学到什么程度&#xff0c;一定要先看 我讲的 动态规划理论基础。 如果没做过动态规划的题目&#xff0c;看我讲的理论基础&#xff0c;会有感觉 是不是简单题想复杂了&#xff1f; 其实并没有&#xff0c;我讲的理论基础内容&#xff0c;在动…

每日一练:LeeCode-56、合并区间【数组+滑动窗口】

4.合并区间 LeeCode-56、合并区间 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 1 < intervals.le…

GitLab 的具体步骤

安装操作系统&#xff1a;选择适合的操作系统&#xff0c;如 Linux、Windows 等。配置服务器&#xff1a;安装必要的软件和服务&#xff0c;如 Web 服务器、数据库等。安装 GitLab&#xff1a;使用官方安装包或自行编译安装&#xff0c;根据提示进行安装。配置数据库&#xff1…