测试工程师面试问题(带答案)
1.常见的网络攻击手段?
1.sql注入:通过在输入字段内输入sql语句,修改查找数据库
2.xss跨脚本攻击:通过在输入框内输入js脚本,篡改网页
3.ddos攻击:通过发送大批量的请求使服务器无法响应,宕机
4.跨站请求攻击:通过携带授权,欺骗服务器进行操作
5.中间人攻击:将自己置于两个通讯方中间,拦截篡改双方的通讯
2.如何防御?
1.sql注入:参数化查询,防止作为语句执行
2.Xss跨脚本攻击:对值的内容进行过滤,如剔除尖括号,使语句不正确
3.ddos:使用https协议,使用cdn分散流量
4.跨站请求攻击:验证Referer
5.中间人攻击:使用加密通讯如vpn,使用数据证书
3.用例设计的方法有哪些?
1.等价类:将数据分为几个等价类,每个等价类都有相同的功能和性质,设计用例时抽取几个有代表性的用例
2.边界值:通过测试数据的边界问题,如输入框的字符限制
3.场景法:模拟用户的场景测试
4.正交法:主要用于多因素的场景,多个功能点组合测试,用较少的用例达到高覆盖率
5.因果图:不同原因导致的不同的测试结果
6.错误推断:通过经验去判断最容易出现错误的地方
4.fiddler如何抓取https请求?
1.在选项中点击https,勾选忽略服务器错误证书
2.弹窗安装证书
3.在浏览器中导入证书
5.fiddler如何修改请求内容?
1.在需要修改的请求设置添加断点
2.请求发起后在fiddler中点击请求的原始数据
3.修改原始数据,并点击运行
6.HTTP和HTTPS的区别?
http属于明文传输协议,在传输过程中容易受中间人攻击
https是加密传输协议,通过ssl/tls对数据进行加密
http使用80端口
https使用443端口
7.鉴权的方式有哪些
1.cookie:存储在客户端,有时间限制,通常用于记录用户偏好,会话状态等,存储的内容少
2.session:存储在服务端,存储的内容多
3.token:用于确认用户身份,在成功登录后会生成token
8.响应状态码有哪些?
1XX:临时响应状态码,通知客户端请求被接收,客户端继续发送内容
2XX:
2OO 请求成功
201 成功请求并创建了新的资源
202 已接收请求,但是未处理完成
204 服务成功处理了,但是没有返回内容
3xx:
301:请求的资源被永久的移动
302:资源被临时移动
304:如果资源未被修改将访问缓存
4xx:
400:客户端请求语法错误,服务端无法理解
401:要求身份验证
403:服务端拒绝执行
404:找不到网页
5xx:
500:服务器错误
502:9.请求的类型以及区别?
get:通过url传输,参数通过?拼接,明文显示,长度有限制
post:通过请求体传输,可以携带文件和大量内容,内容不会明文显示
10.bug定位有哪些方法?
1.通过控制台查看接口参数是否正确
2.查看接口返回数据是否正确
3.排除法,更换浏览器,网络,清除缓存
11.如何区分前端和后端的bug?
1.前端:
页面功能
排版布局
渲染异常
2.后端:
逻辑问题
接口错误
服务端问题
错误代码
查看接口:传参错误找前端
响应返回错误找后端
控制台js报错找前端
12.接口中常见的请求头有哪些?
host:主机和端口号
accept:告诉服务器支持的内容
Accept-Encoding:编码类型
content-type:告诉服务器请求体的媒体类型
cookie:用于辨识用户
token:用户令牌
referer:发出请求的页面
13.TCP/IP三次握手,四次挥手
14.性能测试的指标有哪些?
1.响应时间
2.并发数
3.吞吐量
5.错误率
6.资源利用率
15.负载测试和压力测试的区别?
负载:主要评估系统在一定负载下运行的效果
压力:主要评估系统能够承受最大的压力是多少
16.α测试和β测试的区别?
阿尔法测试:内测,在内部少量用户下模拟真实用户使用
贝塔测试:公测,面向真实人群开放,时间,环境不集中
17.数据库的使用?
增:
innsert into 表名(对应的表名) values(1,23,4)
删:
delete from 表名 where ,,,
TRUNCATE TABLE 表名
改:
update 表名 set 修改后的值 where 所在的位置
查:
select 查询的信息 from 表名 where 位置
连接查询:
18.python中的数据容器有哪些?
1.列表
2.字符串
3.字典
4.元祖
5.集合
列表,字符串是有序的可以通过下标查找元素的位置
字典,元祖,集合是无序的且无法修改
元祖,字典是不可重复的,元祖会进行去重
19.常见的python内置函数有哪些?
- 1.print()打印
- 2.input 获取键盘输入
- 3.len 获取字符串长度
- 4.type 获取变量类型
- 5.int ,str,float 转换对象类型
- 6.iSlower 小写
- 7.replace 替换字符
- 8.import 导入
- 9.count 统计
- 10.randiom 随机数
- 11.range 返回一个列表打印
- 12.open 打开文件
- 13.write 修改
- 14.read 读取
- 15.close 关闭
- 16.readlines 获取文件的所有行
- 17.readline 获取文件的一行
- 18.strip 去除两侧首位的指定字符
- 19.split 对字符进行分割
- 20.insert 在指定位置插入字符
- list 转换为列表
- index 查找第一次指定字符的位置
- pop 删除指定位置的值
- append 在末尾插入
- del 删除指定元素
- clear 清空所有
- def 定义函数
- ads 返回绝对值
- json().dumps 转换为json数据
- json.loads 转换为python对象
20.将列表倒序输出?
print()
pr
print(list[::-1])设置步长为-1代表从后面开始取
切片的使用方法[开始:结束:步长]
21.python的循环语句?
1.for in 遍历某个对象,直到结束为止
2.while 在给定条件下,满足条件就一直循环
22.python的判断语句?
1.if elif else 符合判断条件则运行相应的大麻块
23.报错如何处理?
try:
pass#可能报错的代码
except Exception as e:
print(e)#错误后执行这块代码
else:
print('没有报错也会执行这一块')
finally:
print('无论是否报错都会执行')
24.jmeter如何参数化测试?
1.添加配置原件:csv数据文件设置
2.配置csv文件地址,文件列头对应的对象名,编码格式,
3.在需要参数化的接口中引用
25.UI自动化常见的元素定位方法?
- id
- name
- classname
- css
- xpath
- tag name
- text
26.自动化测试中等待的几种方式?
- 强制等待,time.sleep()
- 隐性等待,driver.implicitly_wait(30)
- 显性等待,
■ element = WebDriverWait(driver, 10).until(
EC.visibility_of_element_located((By.ID, 'some_id'))
)
- driver:浏览器驱动对象。
- timeout:最长超时时间,单位通常为秒。
- poll_frequency:检测间隔时间,默认为0.5秒。
- ignored_exceptions:超时后的异常信息,默认情况抛出NoSuchElementException异常。
使用until或until_not方法:
- until(method, message=''):调用该方法提供的驱动程序作为一个参数,直到返回值为True。
- until_not(method, message=''):调用该方法提供的驱动程序作为一个参数,直到返回值为False。
27.编写ui自动化脚本的步骤?
- 安装浏览器驱动安装依赖包 selenium,pytest
- 设置前置条件,设置浏览器对象为全局变量
- 设置后置条件,关闭浏览器
- 编写测试用例,定位元素,获取值,做断言
- 安装allure
- 运行脚本 pytest -vs --alluredir=./report/re
- 查看测试报告,allure serve ./report/re
28.如何搭建自动化测试框架?
- testsuite 测试套件,放用例的
- utils 放工具函数
- docs 放文档
- reports 放报告
- pytest.ini 配置文件
- requirements.txt 依赖包
- README.md 说明文件
29.acuntix扫描工具的使用
https://www.cnblogs.com/xiaopo/p/17550419.html
30.测试中遇到的问题?
- 在测试环境测好的功能到了预发布老是会出现同样的问题
原因:开发是在平台内修改的代码,多人协同时提交代码把别人代码覆盖掉了
2.开发提交过来的系统,老是主要功能都无法使用
原因:开发没有自己跑冒烟用例
31.令你难忘的bug?
1.在购物车结算页面,使用折扣优惠卷后,前端显示的金额与真实结算的金额不一致
原因:我们产品都是整数型,折扣卷打折后存在小数点后几位,前端用了四舍五入,后端传的完全金额,导致付款金额与显示金额不一致
排查:通过查看接口,返回的值与前端显示不一致
2.在登录页面,输入框输入js脚本‘alert('test')’,提交表单后,脚本被执行
3.在供应链系统中,由运营提交选品任务,选品任务将自动给审核任务少的采购进行审核,采购只能看到自己的审核任务。但是当采购只剩采购主管的时候,这条任务就没有采购进行审核,没有人能看到这条采购信息
原因:开发没有考虑采购人员为空的情况,也未设置无采购人员时转交给采购主管审核