不管是应届生还是社招生,相信你都经历过面试的摧残。面对咄咄逼人的面试官,面对随处可见的问题陷阱。每次面试都是摩拳擦掌,跃跃欲试,但是却往往是过了HR的第一关,却死在笔试题下。
如果你打算近几个月换工作,准备往自动化测试方向走,那么关注本文就对了!为了面试更好的表现,除了背背背,别无他法了。下面给大家搞十几道自动化测试面试题炫炫吧
Q1.get和post的区别?
1)传送方式:get通过地址栏传输,post通过报文传输
2)传送长度:get参数有长度限制(受限于url长度),而post无限制
3)get产生一个tcp数据包(对于get方式,浏览区会把header和data一并发送出去,服务器响应,返回数据)
pos产生两个tcp数据包(对于post,浏览器先发送header。服务器响应100 continue,浏览器再发送data,服务器响应返回数据)
4)get请求参数会被完整保留在浏览历史记录里,而post中的参数不会被保留
Q2.JSON的两种结构
1) 对象:用大括号表示,对象由属性组成,属性由键值对组成,键和值对之间用冒号隔开,属性之间用逗号隔开,另外键必须用双引号。如:{"姓名":"Lara","年龄":18}
2) 数组:用中括号表示。如:["小鸡","小鸭","小狗"]
Q3.常见的http状态码分别代表什么?
2XX--成功
3XX--重定向(客户端浏览器必须采取更多操作来实现请求)
4XX--客户端错误
5XX--服务器错误
具体:
302:临时重定向到某一个页面,比如要登录之后才能进入的页面,他首先会临时重定向到登录界面
401:用户发出的请求有错误,服务器没有进行新建或修改数据的操作【Unauthorized】
403:表示用户得到授权,但访问被禁止【Forbidden】
404:用户发出的请求得到是不存在的记录,服务器没有进行操作【NOT FOUND】
503:服务端目前无法使用,过载或者维护中
500:服务端发生错误,用户无法判断发出的请求是否成功
Q4.requests 库响应消息体四种格式
r.text:文本响应内容
r.content:字节响应内容
r.json():Json解码响应内容
r.raw:原始响应内容
Q5.当一个接口出现异常,你是如何分析异常的?
用fiddler工具抓包或者浏览器上按F12调试。
app上就用fiddler设置代理,去看请求报文和返回报文。查看后端日志,xshell连上服务器,查看日志。
Q6.接口测试用例的编写要点有哪些?
1)必填字段:请求参数必填项、可选项
2)合法性:输入输出合法、非法参数
3)边界:请求参数边界值等
4)容错能力:大容量数据、频繁请求、重复请求(如:订单)、异常网络等的处理
5)响应数据校验:断言、数据提取传递到下一级接口…
6)逻辑校验:如两个请求的接口有严格的先后顺序,需要测试调转顺序的情况
7)性能:对接口模拟并发测试,逐步加压,分析瓶颈点
8)安全性:构造恶意的字符请求,如:SQL注入、XSS、敏感信息、业务逻辑(如:跳过某些关键步骤;未经验证操纵敏感数据)
Q7.说说接口测试的流程和接口自动化流程,介绍一下request有哪些内容?
1)流程:获取接口文档,依据文档设计接口参数,获取响应,解析响应,校验结果,判断测试是否通过。
2)request 内容:1,封装了get、post等;2、以关键字参数的方式,封装了各类请求参数,params、data、headers、token、cookie等;
3)封装了响应内容,status_code、json()、cookies、url等
Q8.json和字典dict的区别
答:json本质上还是字符串,只是按key:value这种键值对的格式来的字符串
而字典是{key:value}的一种数据类型
Q9.在手工接口测试或者自动化接口测试过程中,上下游接口有数据依赖如何处理?
用一个全局变量来处理依赖的数据
Q10.自动化使用的测试框架是什么?
测试框架:python+unittest+requests+ddt+openpyxl+pymysql+logging
测试框架:python:入门简单,语法简洁
unittest :定义一个测试用例类,具体的方法来维护测试用例的生命周期,测试场景行为,测试用例 前置场景,行为,期望结果,实际结果,断言方法,Setup teardown方法
requests:接口调用 ,支持http请求的库,API 简洁,提供不同的http请求方法,支持session,cookies,
ddt :数据驱动,ddt 类装饰器,data 测试方法装饰器 unpack解包可迭代的数据类型
普通用户,数据库,配置文件---(基础数据)
openpyxl: 数据管理 excel管理 数据,使用openpyxl模块来进行excel数据的读和写(excle,csv, json, yaml, txt都可以管理测试数据)
pymysql:数据库交互,数据校验
eval,json:数据格式的转换 Eval将python支持的格式转换成对应的格式
logging:日志处理, 统一日志输出格式,渠道,级别,执行结果的记录,便于定位问题
jenkins:持续集成
Q11.依赖于登录的接口如何处理?
登录接口依赖token的,可以先登录后,token存到一个yaml或者json或者ini的配置文件里面,后面所有的请求去拿这个数据就可以全局使用了
如果是cookies的参数,可以用session自动关联
Q12.接口产生的垃圾数据如何清理?
造数据的数据清理,需用python连接数据库,做增删改查操作
测试用例前置,setUp做数据准备,后置操作,tearDown做数据清理
Q13.python如何连接数据库操作?
首先导入模块(提前pip安装) import pymysql
打开数据库连接 db = pymysql.connect("localhost", "username", "psw", "db_name")
创建一个游标对象 cursor = db.cursor()
sql查询语句 sql = "select * from emp"
执行sql语句 cursor.execute(sql)
获取所有记录列表 cursor.fetchall()
然后for循环遍历
关闭数据库连接 db.close()
Q14.举例说明pytest.mark标记的使用?
1,无条件跳过测试pytest.mark.skip
2,有条件跳过测试pytest.mark.skipif
3,标记测试功能按预期失败pytest.mark.xfail
4,将测试功能标记为使用给定的夹具名称pytest.mark.usefixtures
5,向特定测试项添加警告过滤器,以便更好地控制应在测试,类甚至模块级别捕获哪些警告@pytest.mark.filterwarnings
6,自定义标记:标记指定标签
不管是笔试面试,为了判断你的基础是否夯实,都会有简答题,虽然看似简单,但是一不小心就会中招!
准备了3个很基础的简单题,知道答案的小伙伴可在后台留言呦
测试的数据你放在哪?
自动化测试报告生成方式?如果是allure详述?
当做了一些不可逆的操作,如何处理,比如删除一个订单这种接口如何测试
笔试面试题内容实在是太多了,一篇文章完全写不下,就随意挑选了几个!
需要全套笔试面试题可找小编索取喔!