如何去面试软件测试工程师?

花了3天时间,整理了100+大厂面试经验,汇总出来这份3000字的软件测试面试攻略给你!

(大厂面试真题我放在文末,自行获取,附答案!)

首先你要明白一个问题,面试的过程并不为为了显示面试官技术有多牛,也不是为了体现他们公司有多么难进,而是考察你的能力和招聘需求是否相匹配,进而评估你能否满足工作内容,甚至满足更过的岗位期待。

弄清楚了这个核心,那么就只需要把控好两方面的内容:

1、自己的技能水平可以满足招聘需求

2、面试官可能问到的技术或相关问题

首先说技能的问题,如果技能达不到招聘的需求,那么面试你肯定过不了!

高清图片文末获取

我根据薪资的不同,划分成以下几个级别具体说一下:

  • 月薪5-9k:功能测试为主,可能要求有性能自动化经验
  • 月薪15-25k:要求能够独立搞定性能或者自动化测试,有语言基础
  • 年薪30W+:测试开发工程师

(文末有测试开发岗位简历模板,自己拿)

第一个级别:月薪5-9k,主要做的还是基础的功能测试,但是对于性能和自动化依然有要求

可能你是刚毕业的学生,也可能你是刚做这个行业不久,那么首先以下基本的理论你是必须要掌握的:

软件测试的定义、生命周期、工作流程、需求分析;
测试用例的设计、编写、评审;
bug的基本知识以及禅道的使用;
测试计划、测试报告的编写;
SVN、Git版本控制工具的使用;

搞定上上面的这些基本必备内容,就已经知道可以做具体的实战内容,这个时候最好是先找一个web测试项目去做一下,假如一个项目拿到手之后,按照下面的一套流程跑一遍:

发布项目进行立项,建立项目组进行分工;
需求评审,学会如何看需求文档,进行需求分析,罗列测试点;
整理测试点,编写测试用例,然后进行用例评审;
执行测试,比如功能、界面、前后台、兼容性、数据库,对于发现的bug提交到禅道;
分析、总结、编写测试报告;

这个流程完整的跑一遍之后,只能说对于整体的测试流程算是掌握了,但是仍然不足以找到一份合适的工作,想要学会做功能测试,以下的内容也是必须掌握的:

Linux相关技能

操作环境、命令、安装数据库、部署测试环境等

数据库相关技能

各种命令用法、字段、增删改查

接口测试相关技能

接口测试基本理论、http协议、测试方法;
接口测试需求分析、用例编写、评审;
几种工具的掌握,jmeter、postman、soupUI;

APP测试相关技能

安装/卸载、离线、UI、登录等测试内容;
兼容性测试、monkey、fiddler抓包;

OK,搞定了这些,基本上这个级别大部分的招聘需求你都能搞定了!

第二个阶段:月薪15-25k,要求性能、自动化测试,独当一面!

都说自动化玩好了很牛掰,但是性能测试才是互联网企业的核心痛点!

对于性能测试,业界很多都是在“耍流氓”,举个栗子:

我拿到了一份“流氓”的性能测试报告,上面只写了响应时间、TPS是多少,然后罗列了一下压力机基本配置情况,比如40个并发相应时间是5秒,TPS是260。

那么,我该怎么判断这次性能测试的有效性:

1.场景是否合理?

2.压力是否传递均匀或者传递到指定目标?

3.是否有干扰因素,或者说那些数据是否有效?

4.有没有一些可信的判断方法?

这些问题的出现,其实就是反映出了目前在做性能测试的一些误区:

  • 只测不调,无法给出研发和运维人员执行建议
  • 无法定位问题,缺乏清晰的逻辑和数据证明价值
  • 性能测试工具≠性能测试
  • 性能测试技术体系落后(loadrunner),急需拥抱开源软件

如果要搞定这些问题,那么性能测试你得这么去学:

性能测试的概念和流程

常见问题剖析、流行工具、方案设计

性能测试工具

jmeter工具的使用、实战;
jmeter多协议、拓展与定制;
分布式压测与任务调度;

性能监控

性能监控体系与监控数据采集

性能实施

分布式服务压测,场景设计、场景执行
测试结果关联分析,TPS、响应时间、线程关联分析,压力和资源使用率关联分析

性能分析与报告

jvm调试与系统调试
性能瓶颈分析

搞定这些,你完全可以很自信的和面试官说自己精通性能测试!

性能测试你能到这个程度,15k那是妥妥的了,如果下面自动化测试的学习内容你能够掌握,那就可以直接冲击月薪25k!

搞定Python或者Java语言,建议先从Python入手

基本的语言知识,语法、函数、模块、输入与输出、面向对象编程
脚本编写、标准库、多线程、第三方库,外部数据处理
unittest、pytest测试框架、参数化、数据驱动

web端的自动化测试

selenium安装、录制、处理
web控件、JavaScript脚本、PO模式

移动端APP自动化测试

appium使用、录制、元素定位方法
APP控件定位、交互,参数化用例
appium问题定位分析、源码分析、二次封装

服务端接口自动化测试

接口自动化测试框架request
接口请求构造、断言
json/xml请求、响应断言
headcookie处理、认证体系

上面这些说的是性能和自动化测试的学习路线和内容,搞定这些,基本上在这个行业,月薪2万以上是非常轻松的事情了!当然如果你想成为技术专家,或者想带领技术团队进行实施落地,那么请你接着往下看,关于年薪30W+的测试开发需要学习哪些内容:

完善测试技术体系

Linux、docker、shell、SQL、Python/java

打牢自动化测试技术基础

web自动化测试

selenium测试框架
PageObject设计模式、原则、演练

APP自动化测试

Android自动化测试框架
appium高级应用于原理剖析
APP自动化测试实战
测试框架封装改造
ios自动化测试

移动专项测试

健壮性测试、弱网测试、崩溃检测、耗电量分析等
移动端性能测试
移动端安全测试

接口自动化测试

接口协议与抓包、代理技术与mock
接口自动化测试框架、HTTPrunner测试框架
dubbo接口自动化测试
接口管理工具swagger、接口安全测试

docker容器技术

docker容器、docker镜像

持续集成/持续交付/devops

jenkins持续集成
Jenkins持续交付

弄明白了各个薪资范围对应的照片需求是什么,那么下一步就看面试官会怎么问你问题了,我这里整理了80道最核心的经典面试题,文末自行获取。

技术类问题

1、以前做过怎样的项目?说一下你们的测试流程?在项目组中做过怎样的工作?

2、所做项目的情况,主要做什么类型的测试?

3、你认为是bug,而开发不认同时怎么办?

4、 给你一个网站,你如何测试?

5、熟悉数据库吗 ?平时数据库用的多吗 ? (大概测试过程的1/4时间在查数据库)

6、linux查看文件用什么命令,查看进程用什么命令 ?

7 、 查看日志常用什么命令,主要查看什么内容 ?

8、 软件测试用例设计/测试用例的内容/管理工具?

9、如何判断一个问题是bug?

10、平时写测试用例会用到的设计方法?

11、有哪些不同的测试计划活动?

12、哪些信息应该包括在开发的缺陷或错误报告中?

13、你觉得自动化测试的价值在哪里?你们公司为什么要做自动化测试?

14、举例一下说明一下你遇到过那些异常

15、什么是PO模式,为什么要使用它

16、你会封装自动化测试框架吗?

职业发展类问题

1、你对测试最大的兴趣在哪里?为什么?

2、 你的测试职业发展是什么?

3、你认为测试人员需要具备哪些素质?

4、你为什么能够做测试这一行?

5、一个测试工程师应该具备哪些素质和技能?

6、你认为做好测试用例设计工作的关键是什么?

7、您认为做好测试计划工作的关键是什么?

埋坑问题

1、怎样看待加班问题?

2、基于目前中国的国情,大多数公司的项目进度紧张、人员较少、需求文档根本没有或者很不规范,你认为在这种情况下怎样保证软件的质量?

3、为何尽可能不要让时间有富裕的员工去作一些测试?

4、如何减小测试人员跳槽带来的损失?

5、你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决?

(超长图预警!)

高清原图文末获取

免费领取:80道测试经典面试题高清原图

由于内容较多,建议点赞和收藏,以后随时调阅!

最后:

如果你觉得我的回答对你有启发,我想邀请你帮三个忙:

1、点赞,帮助更多人,让TA们也能看到这篇文章

2、关注我 @霍格沃兹测试学院-测吧,让我们成为长期关系

3、查看文末,领取我为你专门准备的测试开发干货!

谢谢你的支持~

--福利福利--

免费领取:简历模板+面试技巧+自动化+测开+性能+用例模板+核心教程资料

测试在职如何拿到20k+高薪offer?

--推荐阅读--

好的软件测试人员简历是什么样子的?​www.zhihu.com图标如何编写测试用例?​www.zhihu.com图标软件测试简历项目经验怎么写,没有项目经验?​www.zhihu.com图标

 

 

 

发布于 2020-11-17

​赞同 31​​2 条评论

​分享

​收藏​喜欢

收起​

继续浏览内容

知乎

发现更大的世界

打开

Chrome

继续

程序员臻叔

程序员臻叔

公众号“程序员臻叔”,专注测试干货分享!欢迎入群交流

33 人赞同了该回答

看到其他回答都在传授面试技巧,讲得都挺不错的。那我就补充补充一些 面试题 干货吧

根据我工作这几年来的面试经验,加上之前收集的资料,我整理出来350+道软件测试工程师常考的面试题。字节跳动、阿里、腾讯、百度、快手、美团等大厂常考的面试题,在文章里面都有提到。

虽然这篇文章很长,但是绝对值得你点击一下收藏

想要找工作的同学,假如你每次面试之前,把此文拿出来过一过,好好复习一下,相信你一定能找到一个满意的工作。

 

Tip:我整理的面试题都按照这个脑图写,不定期更新,往下翻有目录,后期会不断把参考答案补充上去,点击标题阅读即可,此回答长期有效,找测试相关工作的同学一定要好好收藏

http://weixin.qq.com/r/GUiagqPE6P6Xrefh9x0L (二维码自动识别)

一、开场白

Q:简单自我介绍一下吧
Q:项目和实习经历?(注意使用STAR法则表述)

二、软件测试基础

工作内容

Q:按测试内容划分,测试有哪些种类?
Q:软件开发(测试)的流程是怎么样的?
Q:你印象最深刻的 bug 是?
Q:谈谈你对 CI/CD 的理解
Q:谈谈你对 DevOps 的理解
Q:什么是 BDD ? 什么是 TDD ?
Q:APP的一个页面,你怎么区分是原生Native页面,还是H5?

 

测试方法

Q:黑盒测试的方法有哪些?
Q:白盒测试的方法有哪些?
Q:什么是单元测试?
Q:什么是集成测试?
Q:测试用例怎么编写与设计?
Q:什么是灰盒测试?

 

测试文档

Q:测试用例都包含哪些要素?
Q:测试报告需要展示哪些要素?
Q:测试排期应该怎么估算?
Q:谈谈你构造数据的经历?

 

自动化测试

Q:举例说明,都有哪些功能可以用自动化来进行?
Q:如何判断一个功能能否进行自动化测试?
Q:定位xpath路径都有哪些方法?
Q:如何定位一个动态的元素?
Q:如何定位类似于悬浮在web页面上的元素(类似于web上飞来飞去的广告)
Q:列举你知道的自动化测试工具

 

测试工具

Q:聊聊 fiddler 的抓包原理
Q:fiddler 怎么抓取 https 请求?
Q:wireshark 抓包的头部有什么?

 

性能测试

Q:性能测试如何做的?
Q:性能测试需要关注哪些方面?

 

游戏测试

Q:印象最深的游戏是哪个?哪些方面最吸引你?
Q:印象最深的游戏里有过哪些bug,分析下原因
Q:如何对一个大地图游戏进行测试?该有哪些测试点?
Q:测试程序设计的不合理 与 测试程序完善但是测试人员出现失误,哪一项更严重?
Q:游戏测试的定位和职责你觉得是什么?
Q:游戏采用客户端和服务器架构的必要性是什么?
Q:LOL脚本的原理是什么?
Q:为什么RPG游戏脚本没有LOL这种竞技类脚本开发的多?
Q:有一个触发概率极低但是非常致命的BUG,明天项目一定要上线,你怎么处理,不用非得解决,就是问我怎么处理这种事。
Q:为什么想做游戏测试?
Q:让你做一个游戏,你更想做哪个类型的(MMORPG?MOBA?FPS?RTS?)
Q:说说游戏史,除了游戏还有什么爱好?
Q:列举你知道的游戏测试的测试工具

三、软件测试实战

排查问题的思路

Q:网页崩溃的原因是什么?
Q:有个用户反馈上传头像失败,分析原因?
Q:app闪退的原因?
Q:偶然闪退的排查?
Q:网页卡顿的原因是什么?
Q:10%的用户反馈用不了功能,你讲如何排查?
Q:登录的按钮不能点击,如何排查问题?
Q:压测的时候,QPS一直上不去,你会怎么排查?
Q:APP提示无法连接网络,你会如何排查?
Q:怎么判断一个BUG到底是前端的BUG还是后端的BUG?

 

实战案例

Q:微博发动态,设计一下测试点
Q:对一台自动售货机进行测试用例设计
Q:设计微信发红包测试用例
Q:设计抖音直播功能测试用例
Q:设计微信扫码支付的测试用例
Q:设计百度首页的测试用例
Q:微信的点赞功能怎么测试?
Q:微信红包是先计算每个人能获得的钱还是当这个人点了再计算。
Q:微信朋友圈评论功能怎么测试?
Q:微信上线一个新的好友推荐功能功能如何测试?
Q:测试微信换头像功能,设计测试用例
Q:抖音视频的安全性测试,测试点有哪些?
Q:如果手机浏览器输入 http://baidu.com打不开页面,你会怎么排查?
Q:设计输入框测试用例?
Q:编写一个登录界面的测试用例?
Q:对一个接口编写测试用例
Q:搜索功能怎么测试?

 

四、语言基础

Java

Q:什么是多态?
Q:什么是GC?
Q:set 与 hashset 的区别
Q:map 与 hashmap 的区别
Q:hashmap 的查找,删除,添加的时间复杂度
Q:查找所有java进程
Q:杀死java进程
Q:介绍一下 java 的拷贝、四种引用
Q:java容器有哪些?简要介绍一下 java 的数组和链表
Q:谈谈你对 java 集合了解多少?
Q:Java 三大特性是什么?
Q:List 和 Map 有什么区别?
Q:谈谈 List、Set、Map的区别?
Q:重写与重载的区别是什么?
Q:HashMap 和 HashTable 的区别是什么?
Q:ArrayList 和 LinkedList 的区别是什么?
Q:Map 的 put 方法
Q:java的封装,java 的访问权限关键字的作用域?
Q:为什么 java 要面向接口编程?
Q:什么是反射?
Q:interface 和 abstract 的区别是什么?
Q:熟悉 maven 么?谈谈你对 maven 的了解

 

Python

Q:全局变量和局部变量变量名能否一样?
Q:Python 里 is 和 == 的区别?
Q:Python 变量的创建与消亡过程
Q:Python的垃圾回收的机制
Q:dict的底层结构,tuple和list的底层结构的区别
Q:深拷贝浅拷贝的区别是什么?
Q:什么是协程?
Q:什么是装饰器?举一个你用过装饰器的例子
Q:@classmethod 和 @staticmethod 的区别,以及分别运用在哪些使用场景?
Q:什么是鸭子类型?
Q:python 的可变类型有哪些?
Q:python 常见的数据类型有哪些?
Q:列举 python2 和 python3 的区别
Q:什么是lambda函数?怎么用?
Q:别的编程语言都有三目运算符,三目运算符在python中怎么表达?
Q:try...except...else 和 try...except...finally 的区别是什么?
Q:什么是可迭代对象?可迭代对象的原理是什么?
Q:with...as 的原理是什么?
Q:解释一下python的GIL锁
Q:python 是单继承还是多继承?
Q:python 继承的顺序是什么?
Q:什么是元类?
Q:为什么都说 python 慢?

 

Shell

Q:什么场景下,适合编写 Shell 脚本来处理?

 

C++

Q:指针和引用的区别是什么?

 

五、数据结构与算法

链表

Q:一个有序链表,怎么求第K大个节点?
Q:怎么找出这两个链表是否有相交的点
Q:数组与链表的区别
Q:链表逆序

 

数组

Q:怎么对俩有序数组合并?
Q:求数组中和为 n 的两个数,时间复杂度是多少?
Q:int 型数组,怎么排序?
Q:int 型数组,怎么去重?

 

复杂度

Q:时间复杂度是什么?
Q:怎么计算时间复杂度?

 

排序

Q:八大排序都有哪些?
Q:快排的原理
Q:归并排序的原理
Q:冒泡排序的原理
Q:插入排序的原理
Q:选择排序的原理

 

Q:数的定义,代码实现
Q:什么是树的高度?怎么求?
Q:计算二叉树节点的个数
Q:什么是根结点?什么是叶子节点?
Q:打印二叉树

 

递归

Q:什么是递归?
Q:递归的时间复杂度是什么?

 

字符串

Q:字符串长度可以改变么?

 

堆与栈

Q:堆和栈都有什么区别
Q:代码实现栈

 

动态规划

Q:什么是动态规划?

 

高级算法

Q:什么是深度遍历?什么是广度遍历?

 

查找

Q:能够实现二分查找的必要条件是什么?

 

哈希

 

六、框架

开发框架

Django

Q:简单介绍一下Django的目录结构
Q:了解什么是MVC么?为什么说 Django 是MTV模型?
Q:一个网络请求在Django中的实现过程
Q:uwsgi是什么?用uwsgi和用Django的原生启动方式,有什么区别?
Q:了解 ORM 么?简单介绍一下Django的ORM映射
Q:Django的 CBV 和 FBV 的区别?实际项目中你会使用哪种方式?为什么?
Q:怎么把 Django 的 module 同步到数据库中?同步过程中会遇到什么坑么?

Spring

Q:Spring 框架介绍
Q:什么是 IOC?
Q:什么是 DI?
Q:什么是 AOP?

测试框架

selenium

Q:selenium框架的运行原理
Q:selenium定位元素的方法都有哪些

Appium

Q:Appium用过吗?原理是什么?

Unittest

Pytest

TestNG

Junit

七、计算机基础

计算机网络

TCP/UDP

Q:简单介绍 TCP 三次握手(为什么不是两次、四次)
Q:四次分手是什么?
Q:TCP 拥塞是什么?
Q:TCP怎么保证安全的,UDP能否也像TCP那样安全,怎么做?
Q:你知道 tcp 的控制可靠性的策略和重传机制么?
Q:TCP协议属于哪一层?

HTTP/HTTPS

Q:cookie 和 session 机制、区别
Q:输入url到网页显示出来中间的过程
Q:列举你知道的网页状态码
Q:3 开头的网络状态码的含义是什么?302和304的区别是什么?
Q:4 开头的网络状态码含义是什么?
Q:5 开头的网络状态码含义是什么?
Q:什么是 HTTPS?原理是什么?
Q:GET 和 POST 的区别是什么?
Q:网络请求 method 有哪几种?
Q:简单介绍一下什么是 RESTful API
Q:PUT 和 POST 的区别
Q:列举常见的请求 Header 头
Q:一个HTTP请求报文是什么样的?(GET举例)
Q:GET 的长度限制了解么?

其他

Q:最大连接数和QPS区别
Q:网络一共分为几层?
Q:客户端向服务器请求图片和动态资源的区别
Q:图片渲染的过程 前端
Q:网络七层有哪些?tcp,udp,arp都在哪一层?
Q:QPS 和 TPS 的区别是什么?
Q:解释一下DNS
Q:什么是反向代理?
Q:什么是 socket?
Q:【手撕】用 socket 实现一个聊天室功能?

操作系统

进程/线程

Q:进程与线程的区别?
Q:何时cpu处理进程最慢?
Q:为什么会出现死锁?
Q:进程间通信的方式?
Q:线程间通信的方式?
Q:如何做到线程同步?

Linux

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值