公司动态
软件测试面试题和简历模板(面试前准备篇)
一、问题预测1、让简单介绍下自己这个不用说了每次面试开场面试官你好我叫xxxxx年本科毕业从事软件测试将近3年的时间。在此期间做过一些项目也积累过一些经验能够独立地完成软件测试流程的一个工作。最近的一份工作是xx公司主要参与app 系统测试负责xxapp,一款类似抖音的短视频app功能测试负责过的功能模块有拍摄、上传、搜索、推荐引擎等。主要运用边界值等价类错误推测等常见黑盒测试方法。我最近有在学习的是一个app的自动化测试它是使用PythopnAppium结合pytest自动化测试框架基于PO的思想来实现的。平时我会在各新媒体平台分享我的测试经验现在总粉丝大概有1w以上就是我的一些简单的自我介绍谢谢。2、让说下自己会的内容说自己会的就行不会的千万不要提比如我之前主要做过的是功能测试web自动化测试 、app专项测试、接口测试、也有用过Jmeter做过一些性能方面的测试。我对于缺陷管理工具比如禅道版本控制器git与svn能够熟悉应用。数据库、linux、Fiddler、Jmeter这些应用也比较熟悉。我熟悉软件测试基础理论和测试流程测试方法等有app测试、web测试、接口测试经验。熟悉数据库增删改查操作熟悉使用测试管理工具。3、看了哪些书籍有问到软件测试软件测试的艺术、软件测试实用教程、Google 软件测试之道最喜欢的书是大话软件测试这本书能帮助新手深入理解性能测试和自动化测试的意义也能帮助有多年工作经验正处于迷茫阶段的从业人员排忧解难还能给那些刚刚步入管理岗位的菜鸟们提供指导尤其是团队建设、绩效管理等4、了解过哪些技术博客/论坛有问到testerhome、CSDN一些博客面试经验面试中会问具体哪些博客和公众号面试经验面试中会问具体哪些公众号5、是否了解软件测试需要掌握哪些知识有问到类似问题软件测试基础知识软件测试的流程测试用例方法bug提交测试报告测试计划数据库相关知识UI自动化抓包分析接口测试手工自动化、测试工具、性能测试等。6、觉得自己需要补充哪些做了哪些行动很多公司自动化测试有要求由于之前的工作主要涉及的不多我最近有在学习的是一个app的自动化测试它是使用PythopnAppium结合pytest自动化测试框架基于PO的思想来实现的测试。所以这方面的知识储备不够希望以后在工作中能深入学习。7、为什么做测试觉得自己做测试有哪些优势有问到我觉得我个人的性格比较适合做测试。我比较细心耐心考虑事情比较全面这样对于我在设计测试用例时很有帮助而且我能够很好的与人协调沟通当我们测试和开发发生沟通上的矛盾时我也能很好的解决我平常喜欢刷微博、知乎看热门评论喜欢考究大众心理这有助于我站在用户角度设计测试点。8、知道哪些Bug管理工具系统禅道/bugzila/Easybug等9、测试用例的基本要素是?三大核心要素为 标题 、步骤 、预期结果1.标题是对测试用例的描述标题应该清楚的表达测试用例的用例2.步骤对测试执行过程进行描述3.预期结果提供测试执行的预期结果预期结果一般是根据产品需求得出如果实际结果和预期结果一致则测试通过反之失败。非核心要素4.预支条件执行当前测试用例所需要的前提条件如果这些前提条件不满足则后面的步骤无法进行或无法的到预期结果。5.测试用例所属的项目一般使用用例管理工具一次性分配6.用例编号用例管理管理工具会自动分配如果没有用用例管理工具产品编号-ST-系统测试项名-系统测试子项名-XXX7.重要级别一般分为高、中、低每个公司的等级可能有出入。高系统基本核心业务中介于高低之间低使用频率不高对系统功能影响不大8.测试用例输入用例执行过程中需要加工的外部数据二、介绍一下自己测试过的项目1、对项目进行基本介绍这一部分对项目的基本介绍重点要概括说明项目的基本功能和组成部分。2、说明自己负责测试的模块这一部分需要挑选自己比较熟悉的业务功能模块因为后续面试的问题可能就出自这些模块。3、针对部分模块展开进行说明最后挑选一些有代表性的模块展开说明这里需要注意的是说明的模块或者业务一定要描述的清晰有条理。介绍的整体项目时间把握在2分钟内目的是让面试官对你之前的项目有一定的了解同时体现下自己的逻辑和表达能力。如果想进一步的丰富的话可以再简单说明下公司的测试流程及测试中使用到的具体的技术比如数据库等。三、技能方面1、 数据库方面常识关系型数据库把复杂的数据结构归结为简单的二元关系即二维表格形式通过SQL结构化查询语句存储数据典型产品Mysql互联网领域、大中小型网站游戏公司电商平台等等。体积小、速度快、成本低、开放源代码Oracle传统大企业、大公司、政府、金融、证券等。安全性、成本高、非关系型数据库非关系型数据库也被称为NoSQL数据库NOSQL的本意是“Not Olnly SQL”。NOSQL为了高性能、高并发而生其他分类1键值Key-Value存储数据库主要是使用一个哈希表这个表中有一个特定的键和一个指针指向特定的数据。简单、易部署、高并发典型Redis、Memcached2列存储Column-oriented数据库应对分布式存储的海量数据。如果我们有一个Person类我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下姓名和年龄就会被放入一个列族中而薪资则在另外一个列族中。典型Hbase3面向文档数据库数据存储的最小单位是文档典型Mongodb、HiveMongodb一个介于关系型数据库和非关系型数据库之间的产品。高性能、易部署、易使用存储数据非常方便。Hive可以用来进行统计查询HBase可以用来进行实时查询一些增删改查笔试题准备2、 linux操作linux搭建测试环境比如web系统服务搭建。linux常用命令1Linux管理文件和目录的命令2有关磁盘空间的命令3文件备份和压缩命令在Linux中常用的文件压缩工具有gzip、bzip2、zip。bzip2是最理想的压缩工具它提供了最大限度的压缩。zip兼容性好Windows也支持。4有关关机和查看系统信息的命令5管理使用者和设立权限的命令6线上查询的命令7文件阅读的命令8网络操作命令9其他命令10bash常用命令3、缺陷方面有问到描述一个你印象最深刻的bug其实面试官并不关心你描述的这个bug是否真的有价值或有多曲折离奇他只是1了解你平时工作中的测试能力所以这就要求的你平时工作中遇到bug时试着自己去定位定位bug的过程远比你的单纯的执行测试用例有“价值”自我技能提高的价值在定位bug的过程中你需要掌握和运用更多知识。另外建议你平时养成总结的好习惯发现的bug开发解决了最好问问他原因以及解决的方法这样再遇到类似问题时自己也可以试着定位解决。遇到难解决的bug也可以把最终的解决过程记录下来。这不是就有素材了2考察你的表达能力我们搞技术的有许多属于闷骚性格让我们和技术打交道游刃有余。在QQ群里聊天也风趣、幽默、机智、博学… 因为网络段子看多了嘛再加上有百度加持。但面对公司会议或者和陌生人交流时语言表达能力比较欠缺。所以建议你平时可以主动要求去分享一些自己工作中用到或学习的技术。或者多去参加集体活动加强自己的表达能力。3也许就是想抛一个问题给你自己好有时间继续看你的简历。如果一时想不起来怎么回答可以这么切入找一个自己工作中很熟悉的项目然后谈谈你是如何对这个项目进行测试的然后在某一个版本测试中发现xxx开发也xxxx前端也xxxx运维也xxxx最后终于发现原来是xxx引起的xxxx 。把你工作过程中的测试方法和步骤描述清楚了那么这个bug有没有价值或是否印象深刻就不那么重要了。4、用例部分现场让你设计个用例比如水杯、凳子怎么测试首先说明的是遇到这样的测试题目首先应该反问面试官需求是什么样的比如是测什么样的杯子。因为设计测试用例的规则应该是根据需求分析文档设计用例客户需求什么就测试什么。但是在没有需求分析文档的前提下来设计测试用例可以考查一个测试人员的基本功比如考虑问题是否全面设计测试用例的方法是否合理等。一般是根据自己的日常经验和测试的思维来设计测试用例。在设计测试用例时一般从以下几个方面进行分析功能测试性能测试界面测试安全性测试兼容性测试可用性测试可靠性测试本地化/国际化测试。5、软件测试流程公司严格规范测试流程和测试文档首先是参与需求评审编写测试计划、测试方案、测试用例进行测试方案及用例的测试组内部评审外部评审。提取部分一级用例提交研发自测研发自测通过后开开始执行一轮系统测试。测试过程中发现并提交、跟踪问题。问题修复后进行回归测试。一轮测试完成后对修复包进行冒烟测试测试通过则进行二轮测试。二轮测试完成后会进行需求交叉测试。完成测试编写系统测试报告提交验收测试。验收测试通过输出验收测试报告。6、网络相关网络协议如TCP/UDP的区别1、TCP面向连接如打电话要先拨号建立连接;UDP是无连接的即发送数据之前不需要建立连接2、TCP提供可靠的服务。也就是说通过TCP连接传送的数据无差错不丢失不重复且按序到达;UDP尽最大努力交付即不保证可靠交付3、TCP面向字节流实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制因此网络出现拥塞不会使源主机的发送速率降低对实时应用很有用如IP电话实时视频会议等4、每一条TCP连接只能是点到点的;UDP支持一对一一对多多对一和多对多的交互通信5、TCP首部开销20字节;UDP的首部开销小只有8个字节6、TCP的逻辑通信信道是全双工的可靠信道UDP则是不可靠信道三次握手与四次挥手三次握手通俗版第一次握手客户端要和服务端进行通信首先要告知服务端一声遂发出一个SYN1的连接请求信号,”服务端哥哥我想给你说说话”。第二次握手当服务端接收到客户端的连接请求此时要给客户端一个确认信息”我知道了ACK,我这边已经准备好了你现在能连吗SYN”。第三次握手当客户端收到了服务端的确认连接信息后要礼貌的告知一下服务端“好的咱们开始联通吧ACK”。到此整个建立连接的过程已经结束接下来就是双方你一句我一句甚至同时交流传递信息的过程了。四次挥手断开连接通俗版第一次挥手双方交流的差不多了此时客户端也已经结尾了接下来要断开通信连接所以告诉服务端“我说完了FIN”此时自身形成等待结束连接的状态。第二次挥手服务端知道客户端已经没话说了服务端此时还有两句话要给客户端说“我知道你说完了ACK我再说两句*…%”…第三次挥手此时客户端洗耳恭听继续处于等待结束的状态服务器端也说完了自身此时处于等待关闭连接的状态并对告诉客户端“我说完了咱们断了吧FIN”。第四次挥手客户端收知道服务端也说完了也要告诉服务端一声ACK因为连接和断开要双方都按下关闭操作才能断开客户端同时又为自己定义一个定时器因为不知道刚才说的这句话能不能准确到达服务端网络不稳定或者其他因素引起的网络原因。所以默认时间定为两个通信的最大时间之和超出这个时间就默认服务器端已经接收到了自己的确认信息此时客户端就关闭自身连接服务器端一旦接收到客户端发来的确定通知就立刻关闭服务器端的连接。到此为止双方整个通信过程就此终结。这里要声明一下断开链接不一定就是客户端谁都可以先发起断开指令另外客户端和服务端是没有固定标准的谁先发起请求谁就是客户端。三次握手阐述在第一次消息发送中A随机选取一个序列号作为自己的初始序号发送给B第二次消息B使用ack对A的数据包进行确认因为已经收到了序列号为x的数据包准备接收序列号为x1的包所以ackx1同时B告诉A自己的初始序列号就是seqy第三条消息A告诉B收到了B的确认消息并准备建立连接A自己此条消息的序列号是x1所以seqx1而acky1是表示A正准备接收B序列号为y1的数据包。四次挥手阐述由于TCP连接时全双工的因此每个方向都必须要单独进行关闭这一原则是当一方完成数据发送任务后发送一个FIN来终止这一方向的连接收到一个FIN只是意味着这一方向上没有数据流动了即不会再收到数据了但是在这个TCP连接上仍然能够发送数据直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭而另一方则执行被动关闭上图描述的即是如此。1第一次挥手Client发送一个FIN用来关闭Client到Server的数据传送Client进入FIN_WAIT_1状态。2第二次挥手Server收到FIN后发送一个ACK给Client确认序号为收到序号1与SYN相同一个FIN占用一个序号Server进入CLOSE_WAIT状态。3第三次挥手Server发送一个FIN用来关闭Server到Client的数据传送Server进入LAST_ACK状态。4第四次挥手Client收到FIN后Client进入TIME_WAIT状态接着发送一个ACK给Server确认序号为收到序号1Server进入CLOSED状态完成四次挥手。7、测试工具测试工具无非这几类BUG管理工具禅道、Jira、Bugzilla等。web端自动化测试工具selenium、QTP等。app自动化测试工具有AppiumMonkeyRunner、Robotium等性能测试工具主要是Loadrunner和Jmeter。抓包分析工具wireshak、fiddler。数据库工具mysql/oracle自动化测试工具 (如QTP)性能测试工具 (如loadrunner)测试管理类 如jira安全测试工具渗透测试工具8、其他概念问题Beta测试与Alpha测试有什么区别1、Alpha测试Alpha测试是由用户在开发环境下进行的测试也可以是开发机构内部的用户在模拟实际操作环境下进行的测试。开发者坐在用户旁边这是在开发者受控的环境下进行的测试。由开发者随时记录下错误情况和使用中的问题。2、Beta测试Beta测试是由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场这是在开发者无法控制的环境下进行的测试。由用户记录下遇到的所有问题定期向开发者报告。beta测试是一模拟真实的使用环境从而发现缺陷的一种测试3、验收测试验收测试是以用户为主的测试软件开发和QA人员也应该参加测试一般在用户所在地进行由用户验证软件产品是否满足了所有的需求的一系列的验收测试工作。仅限于做项目的公司部门内部测试稳定后根据合同中需求由发包商进行验收测试。验收测试的目的是为了以发现”未实现的需求”为目的以评估”适合使用”为目标该类测试的不是以发现缺陷为主要目的。区别两者的主要区别是测试的场所不同。Alpha测试是指把用户请到开发方的场所来测试beta测试是指在一个或多个用户的场所进行的测试。Alpha测试的环境是受开发方控制的,用户的数量相对比较少,时间比较集中。而beta测试的环境是不受开发方控制的,谁也不知道用户如何折磨软件,用户数量相对比较多,时间不集中。一般地,alpha测试先于beta测试执行。通用的软件产品需要较大规模的beta测试,测试周期比较长。如果产品通过了beta测试,那么就可以正式发行了。Alpha测试在系统开发接近完成时对应用系统的测试测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成不能由程序或测试员完成。Beta测试 当开发和测试根本完成时所做的测试最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成不能由程序员或测试员完成。四、你还有什么想问的吗必答面试官要给面试者一个提问的机会其实是因为面试者有权利了解面试他的这个部门的基本信息、岗位信息以及他将来可能要使用的技术、负责的业务。所以可以去问一些关于部门、技术栈等方面的信息了解清楚从而更好地评估自己是否适合这个部门更广泛地去了解部门的信息并提前学习相关的一些技术栈假如你将来真的要加入这个公司这也会是对你非常有帮助的。面试官听到你问这种问题时也会很热心地回答你他也会对这种求知欲很满意的毕竟你是想了解他所在的部门所做的事情想要加入他们面试官可以收到你想要传达给他的心意问你真正想问的不代表你可以无底线地提问对面试官来说有一些问题是比较禁忌的我们不妨来看几个反面例子。不要问薪资直接问薪资是不可取的假如你参加的是技术面试千万别问薪资人家会觉得你很不专业并且心思都放在了钱上。如果是HR面试你还可以比较含蓄地问一下“贵司的薪资结构是怎么样的”侧面进行了解千万不要说“我一个能拿到多少钱”这样直白的话。不要问私事有些面试者比较随意想直接从面试官身上获得一手的信息比如问面试官“一个月工资多少钱”、“平时你加班严重吗”、“你觉得这家公司怎么样”这就好像一个刚认识的人打探你的家事一样会让人很反感的。不要问一些和职位无关的事情有些面试者可能跳出了面试职位直接开始问一些比较脱离实际的问题“未来公司战略是怎么样的”、“我们部门发展现状将来会如何如何”这类假大空的问题也是要避免的。我相信犯这个错误的人应该比较少毕竟咱们程序员都比较实在。五、简历模板简历是面试中最重要的一环这里详细介绍一下简历怎么写才能吸引HR的眼睛。1个人基本信息简历开头是个人信息这个大家都没有异议的吧但是个人信息应该包含哪些内容每个人理解都不一样我的建议是1、要包含姓名、性别、学历、工作年限、电话、邮箱地址2、不包含照片对自己特自信的除外、毕业学校特知名的除外、专业特自豪的除外原因咱们是技术岗一切以技术优先学校和专业如果是优势当然鼓励放前面甚至可以把学校期间获得的奖项也简要写一写这个是加分项。如果不是请尽快让筛简历的人往下看到自己的优势2个人专业技能作为技术岗位你的个人技能是面试官最为关注的要点之一。而作为软件测试岗位如果想要理想的薪资技能不可以过于单薄。既然是专业技能记得写一些自己拿的出手的东西应聘测试工程师你说自己熟练使用office文档这有什么关系更悲剧的是只是熟悉测试用例编写方法就是本来应该掌握更好的测试技能反而还不如 office 用的好了这部分我的建议是1、不要随便写「精通」特别是针对操作系统和编程语言如果你真的「精通」当我没说2、如果招聘需求有明确技能要求请自己对照着优先级提供自己对应的技能熟练程度3、要突出你的个人特色你最擅长的一定要写在前面。有时候HR真的会没耐心看完注意力最多3行4、简历是给别人看的是要吸引别人注意力的要提供别人关心的内容不要一股脑把自己自以为傲但又毫不相干的特长列上去2和3的总结5、个人能力中写的都是熟悉和掌握甚至还有了解对于HR来说掌握代表的是会用熟悉代表着用过了解就代表着不会。对于自己真正掌握的技术可以大胆写上“精通”能达到精通的技能一定是深度学习和经验累积的结果。6、简历中最核心的在于“个人能力”首先要确保展示自己所掌握的技能并且一定要有所擅长不然面试一问三不知就很尴尬了。3工作经历工作经历就简单罗列一下自己在不同公司的从业经验就可以一般只需要提供时间区间、公司名、岗位名称即可。几个注意事项1、不要写公司介绍不关心2、不要写工作简介项目经验里面有3、每个公司尽量只占一行不用在这吸引太多眼球4、如果呆过的公司比较多建议把位置调整到项目经验的后面去4项目经验现在所有的企业除了比较看重实际工作经验之外也非常注重项目经验。并且项目经验是简历中篇幅最多一定要格外用心去写。写项目以及工作经验的时候我们可以按照S.T.A.R.法则来写S情景项目是在什么背景下制作的要在什么情况下完成。比如为了用户可以更好的体验xxxx公司研发了xxxx本项目主要针对xx用户由xxx和xxx系统或架构组成由什么语言来编写的T任务在本项目中主要负责什么比如参与该模块测试的组员有xx人我主要是负责xxx用它来xxx的并且负责xx用例以及报告的设计以及评审组织演说等等A行动在这个任务中你做了什么。比如使用xx管理用例的编写通过xx管理代码和版本使用xx工具做了什么我对该模块的工作使用了xx技术等等R结果通过本次行动得到了什么结果比如编写了xx个用例发现了xx个bug编写了xx行代码。利用xx工具做的结论—压测结果或者测试结果开发结果等通过以上得到了项目对我的一些影响。项目经验几个注意事项1、按时间倒序写就是最近的项目写到最前面2、挑几个典型项目进行重点罗列就是可以体现自己能力的项目3、项目简介要简洁自己提炼下语言不要从别的地方拷贝粘贴一大段你自己都不看的内容突出下自己负责模块的重要性即可4、前面写的专业技能要在典型项目的工作职责中有体现如果专业技能写自己会很多自动化工具结果项目里全是手工测试这明显有问题5、工作职责里挑典型的、能体现自己专业技能的部分重点写其他和别人做的一样的内容简写5整体格式首先这份简历看上去干净整洁条理清晰让人赏心悦目这是一个加分项。不要有拷贝粘贴的痕迹告诉你一个小秘密如果是 docx 文件系统又开启了豆沙绿的话很容易看出来哪些是拷贝粘贴的内容。其次个人技能很丰富完全符合当下市场需求。不管是理论基础还是功能、性能、自动化都有体现出来。任何一家企业所涉及的技能都能用得上。你要明白虽然一份好看的简历能为你打开一扇扇面试的大门但最终面试官考察你的还是你简历上体现出来的技能点是不是真材实料你对知识点掌握和理解的程度你是否能思路清晰的描述出你曾经做过的项目等等。即使某些知识点你仅仅是学习过但并没有实际使用过但如果你能思路清晰的描述出来也会很加分。最后一定要记住写简历最重要的是用心如果对自己的敲门砖都不用心怎么能保证是真的想进门感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取