自我介绍
项目介绍
常见测试基础题
- 测试流程是什么?
(1)需求评审阶段:参与需求评审,了解需求 (2)测试计划制定:制定测试计划,安排测试时间 (3)用例编写阶段:编写测试用例、冒烟用例 (4)用例评审阶段:进行测试用例及冒烟用例评审并优化用例 (5)用例执行:项目提测,执行测试用例并提交bug到bug管理平台并进行bug跟踪 (6)上线:项目上线并线上验证 (7)线上问题复盘(有的公司没有,可忽略)
- 进入一个项目怎么快速熟悉业务,有什么方法?
仁者见仁智者见智的问题; 可以使用xmind梳理模块、功能点、细节点等等;
- 测试认为是bug,开发认为不是怎么办?
(1)首页把bug记录下来 (2)根据需求文档、设计文档进行分析 (3)找产品确定 (4)确定是问题,则修改;否则关闭bug即可
- 有哪些测试用例方法?常用的是哪些?
等价类、边界值、错误推测法、因果图法、判定表发、正交实验法、功能图法、场景法等等 常用的:等价类、边界值、错误推测、场景法 根据项目的本身功能可以结合因果图、正交等
- http和https的区别
(1)http不安全,https安全;因为http是明文传输,https是具有安全性的ssl/tls加密传输协议 (2)常见的是http,因为https需要CA证书,一般CA证书都是收费的,免费的少 (3)http的端口是80,https的端口是443
- 常见状态码及含义
200 成功 300 重定向 400
- http的请求头和响应头都包含什么?有什么意义?
- cookie和session的区别
(1)cookie数据存放在客户的浏览器上,session是放在服务器上的 (2)cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗考虑到安全应当使用session (3)设置cookie时间可以使cookie过期。但是使用session-destory()我们将会销毁会话 (4)cookie最大是4k,一般浏览器最多20个cookie;session则没有限制
- post和get的区别
(1)post比get安全;因为post的请求参数在请求体中,get的请求参数在url中 (2)get有长度限制,post没有 (3)get在浏览器退回是无害的,post需要再次提交请求 (4)get请求只能进行URL编码,post支持多种编码形式 (5)get只产生一个数据包,post产生两个数据包
- App端和web端测试异同点
(1)app端是c/s架构,web端是b/s架构; (2)web端只需要更新服务器,客户端就自动更新了;app端需要同时更新服务器和客户端; (3)性能:web端只要会关注响应时间;app端还需要关心流量、电量、cpu、GPU、内存等 (4)兼容性:web基于浏览器,倾向于浏览器;app则要看分辨率、屏幕尺寸、手机系统等等 (5)app专项测试:安装、卸载测试;安装时弱网、断网等;兼容性测试;不同网络测试;在线升级测试; 中断测试;耗电量测试;流量测试等
- Android和ios测试的区别
(1)Android操作系统较多,有20多种;ios相对单一 (2)Android的下载,安装渠道多;ios主要是app store、iTunes、testflag (3)Android的back键是否被重写,功能是否正常;应用数据从内存移动到sd卡后,应用是否能正常使用; ios只有home键 (4)Android接收的push提醒是否能正常跳转;ios的push提醒只要是红点显示
- 黑盒测试和白盒测试的区别
- 冷启动和热启动
冷启动:软件第一次启动时间或杀掉后台进程,再次进入的启动时间 热启动:软件后台运行时,打开软件所需要的时间
常见测试管理题
- 怎么规划测试周期?
- 如何合理安排测试?
- 测试风险评估
- CI、CD和Deveops的区别
逻辑题
- 一个长度粗细不一的绳子,全部烧完需要60分钟;怎么取到30分钟、15分钟时间?
- 两个沙漏,一个漏完需要9分钟,另一个漏完需要7分钟;怎么获得一个4分钟时间?
- 有63瓶毒药,分给不同的小鼠吃,最多需要几只小鼠?
测试工具问题
(一)数据库常用命令
- 查询
select * from 表名 where 条件 # 查询 select * from 表名 where id like ‘%1%’ # 模糊查询 select count(distanct id) from 表名 where 条件 # 去重后--总共 select * from 表名 where 条件 order by id desc # 根据id倒排序 select * from 表名 where id between 1 and 10 # 查询id是1和10之前的 select * from 表名 limit 0,20 # 查询前20行、分页 select count(*),id from 表名 # 查询总共有多少 select * from 表名 where 条件 group by 字段名 having 条件 # 分组
- 更新
update from 表名 set 字段名 = 新值 where 条件
- 新增/插入
insert into 表名(字段名) values (值) insert into 表名(字段名) select 值 union select 值 # 插入多行
- 删除
delete from 表名 where 条件
(二)抓包工具的使用
- 怎么mock数据?
(1)加断点 (2)重写
- 弱网测试怎么做?
proxy-->throttle settings进行设置2G、3G、多少kb
- 是否抓取过视频?怎么做的
- 重定向用过吗?
(三)Postman的使用
- 一个接口要求带cookie,需要怎么做?
在请求的header中加入cookie
- 如果传参是json格式,调用报错,是为什么?
(1)json格式不对 (2)传参有误 (3)header中未加application/json
- 是否使用过全局变量?
(1)在test中通过jQuery形式提取json返回 (2)声明一个全局变量参数 (3)在authorization中配置全局参数
- 有没有用过jQuery形式提取变量
(四)Linux命令
cd # 切换文件目录
ls # 查询当前路径下的文件
ls -a # 查询当前路径下的文件(包含隐藏文件)
pwd # 查询当前路径
lsof -i:PID # 查询端口被哪个进程占用
ps -ef # 查询全部进程
kill -9 PID # 杀掉进程
find | grep ‘查找内容’ 文件名 # 查询文件内容
sed ‘s/yyy/xxx/g’ 文件名 # 把文件中的所有yyy替换为xxx
cat/tail/less/more 文件名 查询日志
# 怎么动态获取日志内容
(五)jmeter相关
- beanshell怎么用?
- 参数化方式有哪些?
- 把登录的cookie取出来作为全局变量需要哪些配置元件?
- 需要使用十万个用户的登录cookie做入参,调用一个接口,要怎么做?
- 聚合报告怎么分析?
- KPS的含义?你测试的时候要求大概是多少?
(六)adb相关
adb installl # 安装
adb uninstall # 卸载
adb shell screencap # 截图
adb shell logcat | findstr "cmp= " # 查询包名和活动页名
adb devices # 查询连接设备
adb connect # 连接设备
adb shell monkey -p package -v -s --ignore-crash # 健壮性测试
adb start-server # 启动adb服务
adb kill-server # 停止adb服务
adb shell am start -w 活动页名 # 冷启动和热启动时间查看
(七)Jenkins相关
- Jenkins除了立即启动还有什么其他的启动方式?
(1)定时触发
(2)SCM轮询
Python相关
python的数据类型有哪些?
python中continue、pass、break起什么作用?
-
super是干什么的?
# 用于继承父类,提高代码复用性,便于维护 class demo: def add(a,b): return a+b class demo1(demo): def add(m,n): super().add(m,n)
推导式怎么转化为生成器?
-
yield和return的区别
yield:不阻断返回 return:阻断返回
tuple和list的区别
举几个常用的魔术方法
什么是lambda函数?作用是什么?有什么优缺点?
Selenium集群
-
Selenium的三种等待方式
显式等待、隐式等待、强制等待