软件测试面试了十几家公司,全是这种“套路题”

目录

一、问题预测

二、介绍一下公司项目

三、技能方面

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

五、简历模板


一、问题预测

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. 了解过哪些技术博客/论坛(有问到)

51testing论坛,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的区别?(https://www.cnblogs.com/steven520213/p/8005258.html)

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

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

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

五、最常见的面试题

1. 项目测试流程你是怎么开展的?

2. 接口测试用例的编写要点有哪些?

3. APP 测试和 Web 测试有什么区别?

4. 你是如何做 app 兼容性测试的?

5. get 和 post 方法有什么区别?

6. 常用的元素定位方式?

7. 怎么定位是前端 bug 还是后端 bug?

8. 项目上线后发现的 bug,你们会怎么处理呢?

9. Group by 和 order by 区别?

10. “长连接”和“短连接”有什么区别?

11. linux 查看日志的命令?当 Linux 数据过多时,如何查看自己想看的信息?

12. 赋权命令 chmod 777,3 个数字每一个 7 代表的什么权限?

13. 测试计划和测试方案的区别?.

14. http 协议有哪些响应状态码

15. mysql 中的 where 和 having 有什么区别?

16. 你知道白盒测试么? 有哪些白盒测试的方法?

17. 在 Linux 系统下如何部署测试环境?

18. 抓包工具有哪些以及有什么区别?

19. 小程序测试和 app 测试有什么区别呢?

20. 数据库中的左连接、右连接和内连接有什么区别?

21. 说一下 TCP 协议的三次握手过程?

22. 项目页面无法访问,如何定位问题?

23. 在浏览器中输入一个网页会发生什么?

24. App 出现 crash 原因有哪些?

25. 说一下 TCP 协议的 4 次挥手过程?

26. App 测试中 iOS 和 Android 测试的区别?

27. 你能说说“抖音直播”怎么测试么?

28. 显示等待、隐式等待和强制等待有什么区别?

29. 给你一个产品你是怎么开展测试的?

30. 为什么会产生 ANR 这种情况呢?

31. TCP 协议和 UDP 协议的区别?

32. 编写测试用例的流程.

33. 讲下你印象中最深刻的 bug 吧?

34. OSI 七层模型有哪些层以及有哪些代表协议?

35. b/s 和 c/s 架构有什么区别?.

36. 怎么判断一个接口是否有 bug

37. fiddler 如何构造弱网测试

38. fiddler 断点有什么用?

39. 局域网中两台 PC 互 ping 不通,可能原因有哪些?

40. Jmeter 的关联,会用到哪些方法去实现?

41. linux 下编辑文件常用的命令有哪些?

42. 查看进程的命令 ps,常用参数有哪些.

43. 怎么保证测试质量?

44. 如何开展项目的性能测试?

45. jmeter、postman 接口测试工具的区别?

46. http 和 https 协议的区别?

47. https 协议比 http 安全,是如何实现的呢?

48. 什么叫做对称加密和非对称加密

49. 双十一抢券怎么测?

50. 如果让你单独负责一个项目,需要注意什么呢?

2023 年春招 100 道软件测试面试题答案

51. 接口测试到底测什么呢?

52. 如果页面上获取不到元素该怎么处理?

53. 给你一个微信上一个聊天的窗口你是怎么测试的?

54. 偶发性 bug,作为测试该怎么处理?

55. Selenium 中如何保证操作元素的成功率?

56. 用户反馈功能很卡,要从哪些方面考虑?

57. 给你一个魔盒可以实现任何愿望,作为测试怎么设计测试用例?

58. 测试计划要素有哪些?

59. 你们公司版本上线标准是怎样的?

60. 测试进行不下去的时候,怎么办?

61. 说一下购物车功能,怎么测试呢?.

62. 如果测试时间比较紧的话,你怎么安排你的工作?

63. 怎么对含有验证码的功能进行自动化测试

64. 你能说说“支付功能”怎么测试么?

65. 你讲一下登录功能,你会考虑哪些测试点呢?

66. 说下模块的功能测试点怎么整理的?

67. MD5、AES 和 RSA 加密有什么区别?

68. socket 和 websocket 有什么区别?

69. 常见的 HTTP 接口请求方法有哪些.

70. 怎么保证测试用例的覆盖率?

71. 手机拍照功能怎么测试?

72. 讲下对性能测试的理解?

73. 项目里,bug 都有哪些类型,以及哪些地方容易出 bug?

74. 推动自动化测试流程是怎样的

75. 设计一个好的自动化框架,要考虑哪些因素呢?

76. 如何用 jmeter 找出某个接口的最大并发用户数?

77. 给你一个 N95 口罩你要怎么编写测试用例?

78. 三个请求参数,三个请求头,两个是可填,一个是必填。你是如何设计接口测试用例58

79. 做了接口测试,后面还需要进行系统功能测试吗?

80. 依赖登录状态的接口如何测试?

81. 一个活动页面,要求 1 秒钟能支持 1000 个访问请求,你如何做性能测试?

82. 登录接口做性能测试,要怎么准备登录账号呢?

83. 你能说说“微信红包”怎么测试么?

84. 因为软件测试失误,产品带着 bug 上线,导致公司损失 5000w,你怎么看待?

85. 没有接口文档,测试人员如何测试?

86. python 中列表和字典有什么区别?

87. python 中列表和元组有什么区别?

88. 你说下数据库查询中,count(*) 和 count(1) 和 count(列名)的区别?

89. 二维码如何测试?

90. 需要先登录才能调用的接口,用 jmeter 如何进行性能测试?

91. 性能测试、负载测试、压力测试的区别

92. app 测试上的 H5 和原生页面怎么区分

93. 项目流程和测试方面有什么需要优化的吗?

94. JMeter 常用的几种断言方法.

95. 开发不认同你的 bug,你怎么处理?

96. 如何提交一个高质量的 bug?

97. 什么时候会用 liunx 定位 bug?定位什么样的 bug?

98. 微信朋友圈怎么设计测试用例?

99. 接口自动化测试过程中遇到的问题.

100. 局域网内,一台机器不能上网,而其他机器可以,所有的机器都安装的 windows 系统,而且电脑都可以访问局域网内电脑,是分析原因?

六、简历模板/面试题/项目

因此我建立了一个软件测试开发自学团,正在学习测试的小伙伴可以通过点击下面的小卡片【东西我都放群里了】

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值