前言:
自动化测试是软件测试中的一个重要领域,它可以帮助企业提高软件开发质量、缩短测试周期和降低测试成本。随着信息技术的不断发展,自动化测试也在不断地创新和发展。本篇文章收集了2023年最新版的接口自动化测试、Web自动化测试和App自动化测试的面试题,旨在为从事或准备从事自动化测试工作的人员提供参考和帮助。这些面试题涵盖了自动化测试中的各个方面,包括基础知识、工具使用、技能要求等,读者可根据自身情况进行针对性学习和准备,以应对未来的自动化测试岗位面试。
【接口自动化测试面试题】
1.接口自动化框架搭建
Python+pytest+requests+openpyxl+pymysql+logure+allure+jenkins
分为common层 testcases层 testdatas层 conf层 outPuts层
common层:工具类,读取Excel,存放文件的路径,连接数据库并进行查询,接口请求,存放数据,数据替换,结果断言,装饰器
testcases层:测试案例,conftest.py中夹具共享
testdatas层:管理测试用例数据
conf层:配置文件,存放全局数据和一些容易变动的数据
outPuts层 :日志输出
main.py:案例执行入口(收集用例,执行用例,生成报告)
2.常用的库
requests、pytest、openpyxl、pymysql、logger、jsonpath、re、allure
3.接口关联的处理
接口中的返回值利用jsonpath提取动态存储到类属性中,当其他接口需要用到时,再提取出放到请求参数中
1
4.数据驱动
相同的测试脚本使用不同的测试数据来执行,测试数据和测试行为完全分离,利用第三方库pytest的装饰器实现数据驱动@pytest.mark.parametrize(“case”, cases)
5.数据的存放
对于账号密码,系统url,数据库信息,这种管全局的参数,单独抽出来,写的配置文件里(如ini)
对于一些一次性消耗的数据,比如注册或新增文章标题,每次注册或新增都是不一样的数,可以用随机函数生成,比如python的一个第三方模块faker,创建一些测试用的随机数据
对于一个接口经常更改的数据,可以参数化,数据放yaml
对于不经常改的的数据。 可以用数据驱动方式,用excel管理测试的接口数据
对于需要依赖于上个接口的数据存放在动态属性中
6.json和字典dict的区别
字典是python语言的一种数据类型, json是一种轻量级的数据交换格式,在网络中传输的通用数据。json本质上还是字符串,只是按key:value这种键值对的格式来的字符串
7.并发测试
一般是利用第三方插件pytest-xdist,前提是用例之间没有依赖关系且执行是没有顺序的,所以不适合接口自动化
8.失败重试
有利于提高自动化用例的稳定性,可以通过pytest的pytest-rerunfailures插件来实现用例重跑,具体有两种形式,一种是全局通过命令行: Pytest --reruns 2 --reruns-delay 5,一种是局部在案例方法上打标记@pytest.mark.flaky(reruns=2, reruns_delay=1)
9.遇到的问题
(1) 用例的入参过多时不小心有了空格,会报参数错误, 解决:case_str=case_str.replace(“\n”, “”).replace(“\r”, “”)#Enter = 回车+换行(\r\n)
(2)读取excel案例时,excel中整个空行有的也被读取了,导致读取执行时多执行了一条案例且这条案例报错.
解决:根据行获取列,循环列获取单元格中的值,如果有一个单元格有值,就代表这一行可取,如果都是空则不可取
(3)删除刚刚新增的数据时发现新增的接口返回值没有特定的标记,导致删除接口时入参不能确定就是刚新增的数据
解决:
获取数据库表中最新的一条数据,进行删除(弊端,有可能把别人的数据删掉);
找开发把新增接口返回值标记加下
*10.提高案例执行的稳定性
执行时间,半夜定时执行
增加重试机制,排除环境干扰因素
11.做接口测试过程中发现过哪些bug?
短信群发功能,新建群发-短信类型选择直播短信时,直播时间前端合代码覆盖了,所以点击确定,没有请求接口,无反应
12.pytest的优势
直接使用assert进行断言
失败用例提供非常详细的错误信息
自动发现和收集测试模块和用例
灵活的fixture管理
mark用例标记
丰富的插件系统
支持失败重试
兼容了unittest
13.get和post的区别
作用:get 获取资源 post 创建资源
请求主体: get 无请求主体 post 有请求主体
幂等性:get 幂等 post 非幂等
缓存: get可以缓存 post 一般不缓存
历史记录和书签: get 可存放 post 不可
安全性 get 低 post 高
14.三次握手
第一次握手时,客户端向服务端发送网络包,服务端收到后确认收到信息,主要目的确认客户端发送功能、服务端接收功能是正常的
第二次握手时,服务端向客户端发送网络确认收到报文,客户端接收,主要目的是确认服务端发送功能、接收功能正常、客户端接收功能、发送功能正常,但此时,服务端是不知道客户端的接收功能是否是正常的,因为没有返回信息来告诉它
第三次握手时,客户端发包,服务端接收,主要目的是确认客户端的接收、发送功能正常,服务器自己的发送、接收功能正常
15.http状态码
2XX,表示请求被正确处理
200:请求被正确处理
204:请求被受理但无资源返回
206:客户端只请求资源的一部分
3XX,表示需要进一步操作(重定向)
301:永久性重定向
302:临时重定向
303:与302类似,只希望客户端在请求一个URI时,能通过GET方法重定向到另一个URI上
304:发送附带条件的请求时,条件不满足时返回,与重定向无关
307:临时重定向,与302类似,只是强制要求使用POST方法
4XX,一般都是客户端相关问题
400:请求报文语法有误,服务器无法识别
401:请求需要认证
403:请求的对应资源禁止访问
404:服务器找不到对应资源
5XX,一般是服务器端相关问题
500:服务器内部错误
503:服务器正忙
16.接口自动产生的垃圾数据
1.数据库断言会把一条案例断言结果Ture或False放在一个字典里,为了不影响下条案例的断言结果,每条用例执行完后,需要清空对比结果,这时需要利用pytest的confest.py中装饰器@pytest.fixture的后置函数yield把字典置空
2.数据库脏数据一般都是新增接口导致的,所以新增成功后可以执行删除接口把新增的数据删除,(注意:如果新增接口返回值没有具体的内容,这时要利用数据库获取最新的一条数据,有个弊端就是有可能把别人的数据删掉,所以尽量跟开发沟通新增接口返回值里有个标记)
3.专门有一个自动化数据库,定期清除数据
如果对你有帮助的话,点个赞收个藏,给作者一个鼓励,也方便你下次能够快速查找,感谢。
如果你想获取该文章配套的视频视频教程以及练手的接口。请狠狠点击文章末尾推广小卡片
并把所需的资料的文章链接发给我即可领取
如果你想获取简历模板+面试技术宝典+求职视频+上千份测试真题,
请狠狠点击文章末尾推广小卡片
并把所需的资料的文章链接发给我即可领取
17.unittest和pytest的区别
1.用例设计规则
unittest:
(1)试类必须继承unittest.TestCase
(2)测试函数必须以”test_”开头
pytest:
(1)测试文件的文件名必须以”test_”开头,或者以”_test”结尾
(2)测试类命名必须以”Test”开头
(3)测试函数名必须以