每个准备软件测试面试的人,不论刚从大学毕业,怀揣着进入企业实习的梦想,还是非计算机专业的转行者,或是自学成才者、培训出来的求职者,都会遇到很多困惑和难题,不知道如何迈出第一步,本文将一次性说明该如何准备。
一、自身技能积累篇
成为软件测试人员的方法多种多样,个人期望也不尽相同,能够通过自主学习或参加培训进入该领域,若以具备全栈软件测试能力为目标来筹备,便能够满足不同行业的需求。
1、学习方式
培训方式入行,其实是最实惠、花费时间最少、有效的一种方式。
倘若无法脱离工作环境接受培训,亦可边工作边进修,要有效利用晚间及周末时段进行学习,要充分运用网络资源,当积累的技能达到一定程度,便可考虑转换工作。
2、常见的测试工具
测试工具始终是软件测试人员的有效帮手,既不能完全依靠工具,也不能完全不使用工具,在学习软件时,要重点关注测试工具的应用,下图列出了初级和中级软件测试工程师需要掌握的测试工具,若想精通,应立刻开始学习。
在软件测试领域,各种工具众多,不可能全部掌握,至少要清楚有哪些工具可供选择,在何种情况下选用何种工具,每个工具能处理哪些问题,之后再重点学习几款工具即可,现在就为大家梳理一下。
禅道:操作简便,应用广泛,企业普遍采用,在互联网领域尤为常见,Jira:使用便捷,功能实用,QC和ALM则相对复杂,通常需要付费,多见于电信和金融行业,bugzilla:具备基础功能,svn:主要用来处理代码和文档,git:在分支处理方面,表现优于svn
Jmeter 是一款免费软件,postman 也是一个不错的选择,SoapUI 虽然可用,但 jmeter 和 postman 更为常用。
Loadrunner功能非常全面,想要深入学习需要花费不少精力,属于重量级测试软件,长期以来都是行业内的领先者,Jmeter是一款运行在java环境下的性能测试开源软件,其实力也很强,操作起来比较方便,Locust是一种使用python语言开发的性能测试工具
junit/testng:java下的单元测试框架
单元测试在Python中的框架有unittest和pytest可供选择
cppunit:跨平台的c++单元测试框架
PhpUnit:Php语言下的单元测试框架
测试平台是一款功能强大的内部测试工具,能够执行单一组件验证、模块组合验证以及代码静态分析,在国防领域应用广泛
Klockword:静态测试工具,军工行业常用
Jenkins:比较常见的一种CI工具 Hudson
网络测试工具主要包括,wireshark, fiddler, charles,它们主要基于HTTP/HTTPS协议进行工作。
appium是当下主流的移动端自动化测试平台,采用app作为测试载体,uiautomator是安卓系统的自动化测试框架,几乎涵盖了安卓的所有事件操作,monkey是安卓系统自带的测试工具,monkey runner是monkey的升级版本,允许用户编写脚本进行测试,并且使用python语言编写,robotium是源自国外的安卓自动化测试框架,其使用方法相对
appscan:应用广泛的一款软件,扫描后能检测出大部分安全问题;fiddler:专门用于网络数据包捕获的工具;burpsuite:具备强力破解及抓包功能;skipfish:一款轻量级安全检测软件,运行速度快,每秒可应对两千个请求。
3、全栈软件测试技能要求
先来了解一下软件测试人员能力提升的路径,从初级测试人员开始,可以逐步过渡到功能测试、自动化测试(涵盖移动端、网页端和API)、单元测试等阶段,最终能够成为测试开发人员。
不要轻信传言,软件测试工作内容其实很单一,这种观念早已过时了,如果仅限于简单重复,很难获得优势,应该树立远大志向,鼓起勇气迈出关键的一步。
(1)通用软件测试技术及理论
掌握基础理论是进入软件测试领域的关键,很多人可能会觉得这些内容没有用,但凭借十年测试工作经验,我告诉大家,这些知识决定了你对软件测试的认知高度,也影响着你未来的发展空间,它们更是各种高级测试技术、前沿测试方法的基础。
软件测试常见概念
软件测试的分类
基于软件生命周期的测试
软件测试流程
黑盒测试方法
测试用例设计
测试用例执行及缺陷报告
测试报告
(2)测试环境配置
测试环境准备和构建是测试人员必须掌握的能力,这需要你对Linux系统、mysql数据库、docker等技术有一定掌握,这些知识至少能帮助测试工作,而不是成为阻碍,也是从测试人员向测试开发人员发展的根基。
Mysql数据库
Linux系统基础
shell基础
Redis数据库
虚拟机测试环境管理
LAMP环境搭建
云服务器搭建
docker环境搭建
k8s环境搭建
(3)掌握至少两门脚本语言
测试人员应当与开发人员有所区分,开发人员可以在某一编程语言上持续深耕,而测试人员则需精通多种编程语言,以便适应不同项目及团队的需求,建议大家以Python为首要学习目标,Java作为次要补充,参考各大招聘平台,主要需求也集中在这两种语言上。
python基础语法(主攻python栈自动化测试技术)
java基础语法
html基础
js基础语法
svn
git/github
(4)UI自动化测试(web、app、小程序)
我们围绕python栈来整理自动化测试的关键技能,自动化测试又能够细分为网页端自动化技术,移动应用端自动化测试技术,以及接口自动化测试技术。
UI端的自动化测试方法在经历前几年的进步与检验,显现出诸多固有缺陷,其经济效益不高,因此公司对其要求也在慢慢降低。
python基础
selenium
appium
requests
airtest
unittest
pytest
ddt
xlrd
pymysql
json
HTMLTestRunner
BeautifulReport
jenkins
git/github/svn
(5)接口测试(短期内需求猛增的技术)
接口检测是当前广受欢迎的一种检测方式,名称听上去十分专业,其实操作起来相当容易,简单来说就是模拟浏览器的工作,即自行组装请求,然后执行发送,市面上常见的检测软件大多能够满足组装的需求。
接口及接口测试的概念
HTTP请求报文
HTTP响应报文

TCP连接的三次握手、四次挥手
接口测试文档的编写和分析
Fiddler/charles抓包
postman(商用工具,很好用)
jmeter(强大,接口、压力通吃)
接口测试可以借助python语言配合requests库来完成,pytest框架能够辅助进行用例运行,ddt模块有助于数据驱动,git版本控制工具则可用于管理代码版本,这些技术组合能够构建一个完整的自动化测试环境。
(6)性能测试技术
非功能性测试属于软件测试的重要分支,曾经相当兴盛,但随着云服务逐渐被中小企业采纳,其发展势头慢慢减弱,如今已不复当年盛况。
然而Loadrunner作为性能测试领域的标杆产品,依旧保持领先地位,不过逐渐露出疲态。
jmeter的应用范围持续扩大,逐步超越Loadrunner的领先地位。
Locast算是一个新兴的选择,它依托于Python这一脚本语言,又利用requests模块来编排脚本,或许能让人更明白性能测试的内在规律。
(7)持续集成
随着软件系统构造日益繁复,软件测试流程愈发复杂,旧有的软件集成方式已难满足需求。
在这种情况下,持续集成技术被应用到了测试环节,它能够帮助测试人员实现自动化的部署、启动以及测试流程,经常使用到的相关工具包括jenkins、docker、git/svn等。
二、简历制作篇
个人履历是向公司呈现的第一份资料,其优劣直接影响着招聘方对你的初步判断,能否引起人事部门的关注,进而决定你是否能获得面试机会,因此一份出色的个人履历具有决定性意义。
此处重点关注两个点:
1、技能列表
将自己精通、常用、熟悉、知晓的技能与设备,依次列举出来。
自己的亮点一定放在最显眼的位置,直接抓住HR的眼光。
技术方面需要完备,涵盖功能验证、接口检验、性能检验等,并且涉及配套软件的应用。
对网络协议、数据库、Linux等也要有一定的基础
语言类通常需要熟练运用java和python这两种脚本语言。
2、项目经验
依据个人实际工作经历,对项目进行归纳,能够分为项目说明和项目任务两个层面。
三、常见面试题-智斗HR篇
应聘软件测试岗位时,面试全程都要和人力资源部门沟通,其中最具挑战性的是电话初步筛选以及最终薪资谈判环节。
1、电话初面
必须明白,初次接触是人力资源部门借助各类平台——包括BOSS直聘、智联招聘和猎头公司——搜集到你的履历资料之后,与你展开的首次沟通,要知道现阶段的人力资源人员对你的认知几乎完全基于简历内容,因此这次电话沟通在很大程度上旨在探明以下几个关键信息,【你只需针对其关注的问题进行回应即可]。
大家好,我是xx,来自xx,毕业于xx。目前从事功能测试工作,已有两年时间。我的工作内容主要包括项目执行、测试用例设计等。在项目实践中,我熟练掌握了多种测试工具和技术。这些经历让我对测试领域有了更深入的了解。最近在xx公司任职,从事app系统测试工作,具体负责xxapp,一款仿照抖音的短视频应用,其功能测试是我的主要职责,涉及过的模块包括拍摄、上传、搜索、推荐引擎等。在测试过程中,主要运用了边界值分析、等价类划分、错误推测等常规的黑盒测试技术。
2、现场面试(二面、三面....)
3、终面谈薪
技术面试结束后,将由面试官给出评价,依据此评级,人力资源部门会参照职位薪酬区间来设定薪资标准,此次电话沟通旨在商讨若干细节,倘若各项条款均获一致意见,人力资源部门便会发出邮件正式发放录用通知。
四、常见面试题-技术篇
准备面试题目其实很简单,关键在于分类归纳,面试前集中梳理,针对不同类型采取不同方法,有的需要记忆背诵,有的需要掌握运用,但最终目标都是能够流畅表达,并且用自己的话阐述清楚,这一点至关重要,单纯照本宣科会给面试官留下负面印象,唯有深刻理解才能真正把握机会。
下面每个部分,提供五六个面试真题,权当抛砖引玉。
1、测试环境问题
这部分内容主要涉及windows系统、linux系统、mysql数据库以及docker技术,属于测试岗位的基础能力范畴。
(1)为什么使用数据索引能提高效率
现有两个数据表,表A包含编号,姓名,住址等列;表B含有编号,英语分数,语文分数等列,请按照编号进行关联,并以英语分数从高到低的顺序进行排列
(3)请说明几个常用Linux指令的功能和操作方式,包括查看目录列表,显示当前路径,查看文件末尾内容,以及获取管理员权限等指令
(4)如何关闭centos7的防火墙
docker的功能是什么,简单说明怎样在docker里建立LAMP环境
2、测试基础理论问题
测试理论、方法、原则相关的问题,是属于测试入门级别技能。
(1)什么是回归测试?
(2)如何测试一个 纸杯?
(3)Beta测试与Alpha测试有什么区别?
(4)测试中的“杀虫剂怪事”是指什么?
(5)web系统测试
3、测试工具使用问题
(1)简述Jmeter和postman工具的区别?
(2)monkey如何使用
(3)常见的ADB命令
(4)postman工具进行接口测试
(5)fiddler的常用使用场景
4、测试流程问题
(1)软件测试流程
每个公司的测试流程都不尽相同,但大体是一致的:
5、大厂企业真题(是真题奥)
(1)JR头条面试真题
(2)DY面试真题
五、写在最后-友情赠送
资料涵盖了测试领域诸多通用内容,涉及基础理论、Linux操作要点、Shell脚本应用、网络程序机制、MySQL数据管理、网络数据包分析软件、API测试软件、测试深度学习-Python编程、网页自动化检测、移动端自动化检测、API自动化检测、测试前沿持续集成、测试系统设计测试框架、压力测试、安全检测等主题
私信小编“资料”免费领取
《软件测试工程师发展规划路线》
800道软件测试面试题
软件测试学习资源
私信小编“资料”免费领取