电话面试或远程面试并不会改变面试官对面试者的考核标准,但对于经验甚少的应聘者来说,由于电话面试无法通过微表情、身体语言等辅助我们及时掌握一些面试过程的环境与氛围,进而灵活调整思考策略。而只能通过声音与传输介质来输出我们想表达的内容。这里总结以下几个电话面试需要注意的点。
即把每一次的面试都当作是一个项目来完成,以一位测试人员的职业身份来完成这个项目。
以一条简易且常见的项目测试流程为例:
接收客户/产品原始需求-确认需求-分析需求-确认可测性(接收测试)-工作(测试)计划-测试设计评审-执行测试-提交缺陷报告-回归测试-提交测试报告-工作总结-持续集成
那么转化为面试项目即是:
接收招聘方招聘要求-确认要求-分析-确认是否参加面试-面试计划-自己对面试计划作检查评审-面试-记录面试过程中的漏洞-重新学习-知识延伸-面试经验总结-形成文档存档-持续改进
1、面试需求分析
如同一个测试人员拿到原始需求,需要在最短时间内掌握其核心业务并转化为测试需求,并且确定可测性。那么接到HR电话时,可以通过简单对话了解招聘JD以及工作范围,是否有硬性条件无法满足(有些招聘平台上的JD与真正招聘是有出入的,有必要进一步澄清。类似于需求确认的过程)接下来就是对照整理后的JD分析可能问到的知识点,以及未接触过的领域,可以采用快速学习法了解核心。
2、确认参加面试后与HR提前确认好电话面试时间
并制订好面试计划,可以从步骤1中将需求分析结果写入计划中,以及“环境配置”(即面试环境的布置,确保场地安静、电话或网络畅通、耳机与话筒功能正常、备一杯水润嗓等)并将具体时间排期列入(可能同一天安排了两个以上的面试,需要分别列出)并自己检查一遍
3、面试
如果是电话面试可以自己用笔记录下疑难问题以及自己当时未能答上来的,与现场面试不同,电话面试时只能通过声音,所以思考时间不可以太长。如确实需要思考时间 ,可以讲与面试官获得。
4、面试结束
针对记录好的疑难问题与回答缺陷来重新学习,并进行知识延伸,触类旁通。(不必把面试过程看得过于严肃,每一场面试都是一场技术经验的交流,想象能够学到更多技能而感到庆幸)
5、面试经验总结,可以从几个方面进行
–问题分类,回答有缺陷(或不如意)的问题重新回答自己
–知识延伸,对某个未掌握的知识点进行梳理、学习
–面试过程管理,可通过回忆或整理面试片段来梳理整个过程的优缺点,进而简单分析面试成功与否可能的原因
–持续改进,形成经验文档,对于可能造成失败的原因加以分析并改进,不在同一个地方跌倒
以一个互联网公司的高级测试岗初试过程为例,整个面试过程围绕简历,问题属于标准范围内,所以在投简历前一定要仔细检查简历,做好静态测试这一步,实事求是,节约双方的时间。
1、请先作一个自我介绍
从个人基本信息、就职公司、从业经验、负责过的项目、取得的荣誉成就、以及个人特点(对于项目与工作经验部分讲出核心即可,避免长篇大论)自我介绍部分最好提前拟好内容。
2、你们之前做的接口自动化测试是什么测试方案?
因自我介绍时回答了工作经验这一部分,属于追问环节,之前测试团队中优先搭建的框架是UI自动化测试框架,使用框架SELENIUM+TESTNG+ANT+JAVA+SVN+JENKINS ,接口测试一直是单接口的手工测试。而UI自动化测试也是为了解决回归测试与兼容性测试的重复问题。
3、为什么没有先做在接口自动化测试?
当时团队中都是功能测试人员,接口测试为手工测试,后来因业务量扩大,需求变更频繁,回归测试任务增加,同时 UI自动化研发及维护成本过高、产品版本迭代速度快所以引进了接口自动化测试,通过培训学习、掌握了单接口与联合接口的测试,更多关注业务场景过程与各依赖接口的自动化测试,实现了替代之前手工测试的单接口测试,是用JMETER实现了一套轻量级的接口自动化测试,访问当前接口、得到返回值、解析回参数、SQL的构造、查询结果、判断结果。
手工接口测试时只能关注到响应状态、响应时间、响应数据格式包含编码、字段; 以及请求数据格式包含协议、编码、字段
4、编程语言中最熟悉哪一种?
简历中的职业技能有体现JAVA PYTHON C等,多数是写自动化测试脚本或平时写一些辅助测试小工具时用到的
5、Selenium中常用的三种等待方式?
隐式等待、显式等待、固定等待
延伸:
隐式等待
隐式等待需要设置一个最长的等待时间,如在规定时间内页面加载完成,就开始执行下一步next(),否则一直等到时间结束,才去执行下一步操作。其优点是对整个Driver的一个周期有作用,只要设置一次隐式等待就好;其缺点是程序会一直等待整个网页加载完成,才执行下一步操作;不够灵活,因程序无法判断当前要使用的元素是否已加载完成,无形中浪费一部分的时间
显式等待
显式等待要配合until或者until_not方法,加上需要的判断条件,经过多长时间就去查询locator对象可见与否,若locator对象可见则停止等待,如不可见就一直等直至超出写好的时间。等待场景是需要自己构造判断条件 。
固定等待
固定等待SELENIUM中是最常见的一种等待方式了,其使用thread将整个线程后面的代码sleep并延迟执行。固定等待是强制性等待,让浏览器等待多长时间 ,不论当前的操作执行进度 ,都会强制等待这个固定时间 。非常适合在调试时使用,代码也简单。但缺点是不够灵活 ,如果用例代码中包含多个固定等待,会影响到执行效率。
6、如果自动化测试过程中报错信息是:元素未找到 ,你要怎么解决?或者说你的排查问题的步骤是怎样的?
这是SELENIUM中比较常见的一种错误提示了,NoSuchElementException: Message: no such element
排查过程中可以根据以往经验迅速判断出最可能的原因 ,然后依次排查。通常情况下有以下原因:
–要获取的element自身的代码写错,如id是否动态,但写为固定了,或是其他属性拼写有误,属于代码错误
–element嵌套在iframe里,当前窗口自然无法点击,需要切换到iframe里再去查找element
–element实际并未加载完成,调试时可设置一个等待时间(常见于网络不稳定的情况)
–要获取的element是不可见或是被覆盖了,需要用enter代替clickdriver.find_element来查找
–element可见的屏幕中,要设置代码执行滚动条操作定位到要获取的元素位置,对于web端页面常见,可以封装成通用方法
7、Selenium的底层工作原理?
简单描述是:Selenium2需要用客户端的自动化测试脚本,来驱动浏览器即DRIVER,Selenium2中内置了FIREFOX的DRIVER,所以没有指定特定浏览器时,默认会调用FIREFOX来执行脚本。不同浏览器以及不同版本都需要相应的DRIVER驱动。
Selenium其他版本原理也不尽相同。
百科中对Selenium的功能介绍:框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。使浏览器兼容性测试自动化成为可能,尽管在不同的浏览器上依然有细微的差别。
8、Java的面向对象如何理解?
能够举出例子说明更好,用自己的理解方式。
面向对象是一种程序设计方法,面向对象的基本思想是使用对象、类、继承、封装、多态等基本概念来进行程序设计。从现实世界中客观存在的事物(即对象)出发来构造出应用系统,并在整个编写过程中使用人类的自然思维方式,与面向过程的编程方式正好是相对的概念。
延伸:面向过程概念,以及二者的优缺点。同时分别解决了什么问题。
9、面向对象有哪三个特征?
封装、继承、多态
延伸了解每个特征的使用场景,以及放在应用代码中的各个特征与使用注意事项。
10、在团队管理方面有曾经优化过哪些东西,或者是工作上作出过哪些优化?
如果身兼多种职能 ,可以分开讲,但要注意控制时间。同时尽可能多地挑选比较有代表性的优化
参考:
测试专业技能方面(职业测试人员的基本技能:测试设计与缺陷报告提交)
测试过程管理方面
项目过程管理方面
团队合作方面
工作软技能方面,沟通,特别是跨部门、与客户的沟通方面
说明清楚优化前与后的区别,效率提升、过程改进、协作等,但前提是都是个人经历过的。
11、最近三年的职业规划是怎样的?
12、离开上家公司原因?
属于标准问题,职业规划要清晰,有自己的主见。
将每一次的面试都当作是一场技术的交流,珍惜每个面试机会,像对待一个真实的项目一样去经营,即便结果未曾满意 ,但至少是持续向上的,也最终会遇到更好的自己。
最后感谢每一个认真阅读我文章的人,下面这个网盘链接也是我费了几天时间整理的非常全面的,希望也能帮助到有需要的你!
这些资料,对于想转行做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……
如果你不想一个人野蛮生长,找不到系统的资料,问题得不到帮助,坚持几天便放弃的感受的话,可以点击下方小卡片加入我们群,大家可以一起讨论交流,里面会有各种软件测试资料和技术交流。
敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。
自学推荐B站视频:
零基础转行软件测试:自学完软件测试,拿到了字节的测试岗offer,堪称B站最好的视频!
自动化测试进阶:已上岸华为,涨薪20K,2022最适合自学的python自动化测试教程,自己花16800买的,无偿分享