写点什么

软件测试面试题【2021 模拟面试整理版(含答案)】

发布于: 2021 年 04 月 08 日
软件测试面试题【2021模拟面试整理版(含答案)】

点击上方蓝色“程序员一凡”,选择“设为星标”

主页点击“领取资料”获取整理好的学习资源




一、问题预测


\1. 让简单介绍下自己(每次面试开场)


\2. 让说下自己会的内容


\3. 看了哪些书籍(有问到)


\4. 了解过哪些技术博客/论坛(有问到)


\5. 是否了解软件测试需要掌握哪些知识(问到类似问题)


\6. 之前面试过,觉得自己需要补充哪些?做了哪些行动?


\7. 为什么做测试,觉得自己做测试有哪些优势?(有问到)


\8. 知道哪些 Bug 系统


9.测试用例的基本要素是?


二、介绍一下公司项目


三、技能方面


1、 数据库方面常识


2、 linux 操作


3、缺陷方面(有问到)


4、用例部分


5、软件测试流程


6、网络相关


7、测试工具


8、其他概念问题


四、你还有什么想问的吗(必答)


五、简历模板



一、问题预测


1. 让简单介绍下自己(这个不用说了每次面试开场)


你好,我叫 xx,来自 xx,毕业于 xx。目前有两年的功能测试经验。最近的一份工作是 xx 公司,主要参与 app 系统测试,负责 xxapp,一款类似抖音的短视频 app 功能测试,负责过的功能模块有拍摄、上传、搜索、推荐引擎等。主要运用边界值,等价类,错误推测等常见黑盒测试方法。


2. 让说下自己会的内容


我熟悉软件测试基础理论和测试流程,测试方法等,有 app 测试、web 测试、接口测试经验。熟悉数据库增删改查操作,熟悉使用测试管理工具。


3. 看了哪些书籍(有问到)


软件测试,软件测试的艺术、软件测试实用教程,在我负责短视频的推荐引擎测试期间看完了项亮的《推荐系统实战》主要是推荐系统的评测部分。


4. 了解过哪些技术博客/论坛(有问到)


博客园、测试窝论坛,CSDN 一些博客(面试经验:面试中会问具体哪些博客),和公众号程序员一凡(搜狗测试、软件测试资源分享)


5. 是否了解软件测试需要掌握哪些知识(有问到类似问题)


软件测试基础知识,流程,测试用例方法,数据库相关知识,抓包分析,接口测试、测试工具、性能测试等。


6. 之前面试过,觉得自己需要补充哪些?做了哪些行动?


很多公司对性能测试和自动化测试工具有要求,由于之前的工作主要涉及的是功能测试,所以这方面的知识储备不够。不过最近我在学习这方面的知识,希望以后在工作中能深入学习。


7. 为什么做测试,觉得自己做测试有哪些优势?(有问到)


我觉得我个人的性格比较适合做测试。我比较细心耐心,考虑事情比较全面,这样对于我在设计测试用例时很有帮助,而且我能够很好的与人协调沟通,当我们测试和开发发生沟通上的矛盾时我也能很好的解决,我平常喜欢刷微博、知乎看热门评论,喜欢考究大众心理,这有助于我站在用户角度设计测试点。


8. 知道哪些 Bug 系统


禅道/bugzila 等


9.测试用例的基本要素是?


版本号,功能模块,优先级别,前置条件,步骤,预期结果,实际结果等。


二、介绍一下公司项目


xxapp,是一款集短视频、游戏、直播、社交互动于一体的内容娱乐 APP。公司大约一个月发布一个较大的版本,需求数 20 几个-40 几个不等(用例数 xx+),每个版本包括的需求 www\wap、后台以及客户端的需求。项目分客户端版本负责人、后台版本负责人、H5 版本负责人等,负责人牵头及落实整个测试流程。我当过的角色有 H5 活动负责人、推荐引擎版本负责人、客户端和后台系统测试人员。负责过的模块用例数大概是 500 左右。


三、技能方面


1、数据库方面常识


l 关系型数据库:把复杂的数据结构归结为简单的二元关系(即二维表格形式),通过 SQL 结构化查询语句存储数据


典型产品:


Mysql:互联网领域、大中小型网站,游戏公司,电商平台等等。体积小、速度快、成本低、开放源代码


Oracle:传统大企业、大公司、政府、金融、证券等。安全性、成本高、


l 非关系型数据库:非关系型数据库也被称为 NoSQL 数据库,NOSQL 的本意是“Not Olnly SQL”。NOSQL 为了高性能、高并发而生


其他分类


1)键值(Key-Value)存储数据库:主要是使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。简单、易部署、高并发


典型:Redis、Memcached


2)列存储(Column-oriented)数据库:应对分布式存储的海量数据。如果我们有一个 Person 类,我们通常会一起查询他们的姓名和年龄,而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另外一个列族中。


典型:Hbase


3)面向文档数据库:数据存储的最小单位是文档


典型:Mongodb、Hive


Mongodb 一个介于关系型数据库和非关系型数据库之间的产品。高性能、易部署、易使用,存储数据非常方便。


Hive 可以用来进行统计查询,HBase 可以用来进行实时查询


一些增删改查笔试题准备


(另起一篇)


2、linux 操作


linux 搭建测试环境,比如 web 系统服务搭建。


一些常见命令准备


(另起一篇)


3、缺陷方面(有问到)


描述一个你印象最深刻的 bug


在做上传视频的测试时,发现华为荣耀 V10 上传手机自带相机专业模式录制的视频会闪退。而 ios 上传同个视频提示合成失败。


我将手机自带相机录制的专业模式和普通模式录制的同样时长的视频发到电脑上,用格式工厂软件查看视频的不同之处,之后发现视频编码是不同的。


我继续网上查阅了视频编码方面的知识,发现 mp4 视频有几种编码,而继续测试验证发现我们的 app 上传的视频只支持 mp4 视频中的 H.264 编码格式。于是提交了视频上传不支持非 H.264 格式的视频。并补充完善了相关用例。


(因为在公司没有查日志权限,所以其实应该先查日志)


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 则是不可靠信道


三次握手与四次挥手


三次握手通俗版:


第一次握手:客户端要和服务端进行通信,首先要告知服务端一声,遂发出一个 SYN=1 的连接请求信号,”服务端哥哥,我想给你说说话”。


第二次握手:当服务端接收到客户端的连接请求,此时要给客户端一个确认信息,”我知道了(ACK),我这边已经准备好了,你现在能连吗(SYN)”。


第三次握手:当客户端收到了服务端的确认连接信息后,要礼貌的告知一下服务端,“好的,咱们开始联通吧(ACK)”。


到此整个建立连接的过程已经结束,接下来就是双方你一句我一句甚至同时交流传递信息的过程了。


四次挥手断开连接通俗版:


第一次挥手:双方交流的差不多了,此时客户端也已经结尾了,接下来要断开通信连接,所以告诉服务端“我说完了(FIN)”,此时自身形成等待结束连接的状态。


第二次挥手:服务端知道客户端已经没话说了,服务端此时还有两句话要给客户端说“我知道你说完了(ACK),我再说两句 &*…%¥”…


第三次挥手:此时客户端洗耳恭听继续处于等待结束的状态,服务器端也说完了,自身此时处于等待关闭连接的状态,并对告诉客户端,“我说完了,咱们断了吧(FIN)”。


第四次挥手:客户端收知道服务端也说完了,也要告诉服务端一声(ACK),因为连接和断开要双方都按下关闭操作才能断开,客户端同时又为自己定义一个定时器,因为不知道刚才说的这句话能不能准确到达服务端(网络不稳定或者其他因素引起的网络原因)。


所以默认时间定为两个通信的最大时间之和,超出这个时间就默认服务器端已经接收到了自己的确认信息,此时客户端就关闭自身连接,服务器端一旦接收到客户端发来的确定通知就立刻关闭服务器端的连接。


到此为止双方整个通信过程就此终结。


这里要声明一下:断开链接不一定就是客户端,谁都可以先发起断开指令,另外客户端和服务端是没有固定标准的,谁先发起请求谁就是客户端。


三次握手阐述:


在第一次消息发送中,A 随机选取一个序列号作为自己的初始序号发送给 B;


第二次消息 B 使用 ack 对 A 的数据包进行确认,因为已经收到了序列号为 x 的数据包,准备接收序列号为 x+1 的包,所以 ack=x+1,同时 B 告诉 A 自己的初始序列号,就是 seq=y;


第三条消息 A 告诉 B 收到了 B 的确认消息并准备建立连接,A 自己此条消息的序列号是 x+1,所以 seq=x+1,而 ack=y+1 是表示 A 正准备接收 B 序列号为 y+1 的数据包。


四次挥手阐述:


由于 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,确认序号为收到序号+1,Server 进入 CLOSED 状态,完成四次挥手。


7、测试工具


测试工具,无非这几类:


自动化测试工具 (如 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 测试 当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。


四、你还有什么想问的吗(必答)

我非常希望能够加入公司,所以想请问您觉得我还有哪些地方比较不足,能否给一些建议?以及是否有复试时间呢?

有续集……

一个用心码了这么多文字的人,往往渴望得到大家的认可。如果你觉得这篇文章对你有帮助,双击屏幕,给我点个赞呀!

一个沉默不语的人,未必像看着那般平庸。很有可能人家在悄悄做事,然后一鸣惊人。


公众号主页点击领取资料


资源包暗号:一凡

不要只做收藏从未停止,行动从未开始的人,很多事情,做着做着就无师自通了。如果在做的过程中还能稍微加点思考,稍微看一些别人的经验和做法,成长会更快,效果也会更好!加油吧,测试人!路就在脚下,成功就在明天!

我是一凡,用心输出有价值的内容!

(文章越来越多,在考虑做一个文章分类导读,同时欢迎投稿)

创作不易,不想被白嫖,各位的「点赞」就是一凡创作的最大动力,我们下篇文章见!


用户头像

陪你学习成长,助你升职加薪! 2021.01.19 加入

公众号:程序员一凡

评论

发布
暂无评论
软件测试面试题【2021模拟面试整理版(含答案)】