2023最新软件测试十大必问面试题(附答案和解析)

Posted 程序员老波

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2023最新软件测试十大必问面试题(附答案和解析)相关的知识,希望对你有一定的参考价值。

1、 介绍之前负责的项目
参考答案:先大概描述一下这个项目是做什么的(主要功能),包括哪些模块,是什么架构的(B/S、C/S、移动端?),你在其中负责哪些模块的测试。期间经历了几个大版本及几个小版本的迭代。

全程参与需求评审、测试用例编写、搭建测试环境、测试、BUG跟踪、上线等环节。在测试过程涉及到常规的功能测试、使用Postman进行接口测试、简单的性能测试等等。

测试过程中也会使用SQL Server(类似的数据库)进行增删改查、使用抓包工具进行抓包、根据后台日志进行数据分析、辅助测试等。

分析:理论上测试人员是最了解产品的,产品经理可能只知道产品的功能、业务,而测试人员除此之外,还熟悉产品内部的实现逻辑。这道题考察你对项目的熟悉程度,以及根据你负责的内容判断你的能力。

之前面试过一个小伙子,应该是培训机构出来然后包装的简历,问他负责的模块,他说是一个商城“我的”界面。又问,我看你这个项目快一年嘞,只负责过这一个模块吗?答曰,是。是挺坦诚的哈,但是如果你是面试官你会留他吗?后来想一想,他应该是担心写得越深、问得越多,越容易暴露自身的弱点吧。

所以说,写项目经验,要拣有含金量、能体现你能力的写。就算你没有实际的经验,现在网上开源项目那么多,去找个网站、APP从头到尾深入测一遍,撸清楚流程,面试的时候能说得头头是道也可以的。

另外,给培训机构出来的小伙伴一个建议,不要照抄照搬培训机构给的官方答案,你以为你的简历写得很完美,可是在阅人无数的面试官面前,10秒之内就可以判断出你的简历是虚假的还是真实的。说一说我的经验,培训包装的简历,很多都是3年外地工作经验,负责过的项目名称和工作内容千篇一律,有的甚至一个字儿都不改。

这里不是歧视培训出来的小伙伴,转行的经历我也有。可现实是,简历是敲门砖,如果你的简历没有任何突出的地方,大概率连面试的机会都没有的。在成百上千份相似的简历面前,人家为什么偏偏抽中你呢?你的简历要有特点、有亮点。

2、 说说你之前公司的研发管理流程/测试流程
参考答案(常规的流程):

产品经理整理需求文档、绘制产品原型,并组织产品、开发、测试相关人员召开需求评审会议。

评审之后,开发人员开始编写代码,并进行单元测试;测试人员同步开始编写测试用例、评审测试用例。

开发完成后提测,部署到测试环境,测试人员开始测试,包括集成测试、系统测试等等。测试完成后,对测试结果进行分析,编写测试报告,最后产品发版/上线。

上线后持续关注线上产品是否正常运行。

3、 如何保证被测产品质量/用例覆盖度
参考答案:

(1)在需求评审阶段,熟悉并分析需求,对每条需求进行拆解,并对有疑问的地方及时和产品经理/BA沟通;

(2)在设计测试用例阶段,我一般根据需求文档用XMind对测试点进行整理,然后再对每个测试点进行测试用例的设计;另外,我们产品经理会在研发管理系统里建立他的需求,我设计测试用例时会将用例关联到需求上面,确保每个需求都有用例覆盖到;

(3)在用例评审阶段,我们一般先组内进行详细的评审;然后召集产品经理、开发一起评审,主要是评审一些业务流程和跨系统的接口,确保大方向没有问题,之后根据评审结果及时修正测试用例;

(4)在测试阶段,我们会有交叉测试,因为每个人考虑问题的角度不一样。另外在测试过程中,如果发现用例有考虑不周全的地方,会及时完善进去;

(5)在BUG修复我们进行验证时,会将这个BUG相关联的部分也测试一下,防止一些代码改动影响到之前的功能;

(6)在上线前,会进行一个深度回归,回归的用例会和开发、产品一起评估决定。

说明与分析:

以上仅供参考,面试的时候随机应变,不要照抄照搬,结合你们公司的情况、说得越全越好。

现在流行测试左移、右移。测试左移,是往测试前的开发阶段移,越早发现不合理的地方,出现问题的几率就越低。

测试右移,是往测试后的发布阶段移,第一时间发现线上的问题并解决。可以在第(2)点之前和第(6)点之后,针对测试左移和右移说说测试人员能做哪些事情、对确保产品质量有什么影响,我想这是一个跳出常规的加分项。

至于如何保证测试用例的覆盖率,可以回答(1)-(4)点,在描述第(2)点时,也可以说说你在设计测试用例时着重要考虑的点。比如,一些软件的业务流程比较复杂,设计测试用例不能只局限于表面的功能,要去深挖,多思考可能出现的场景;再比如一些边界值的测试、异常流程的测试等一些容易忽略的方面。

4、 如何定位问题/判断BUG是前端还是后端
面试官问到这个问题可能会举个例子,比如一个登录界面,输入用户名密码后点击【登录】发现无响应怎么回事?

参考答案:

【首先要明白场景的数据流调用逻辑,这个场景就是前端触发一个操作,然后后端给出响应,最后前端将返回的登录后信息渲染并在界面展示出来。】

答:首先我会用抓包工具 (Fiddler/Charles/浏览器的F12等),看点击登录的时候有没有触发请求,如果没有请求或请求有问题,那就是前端的BUG。

如果前端请求没问题,就看后端返回报文,根据接口文档,返回的数据有误,要具体分析报错的内容。如果是前端传参不对导致的,那就是前端问题,如果传参正确,后端处理不正确,那可能就是后端问题。

如果后端响应了且数据和接口文档一致,那就是前端展示的问题。

总结下来,就是按前→后→前的顺序进行分析。

说明:

类似的问题还有,一个支付功能,支付成功后在我的订单里却没有显示。或者一个查询功能,输入条件查询后没有数据展示出来(先排除是否是因为数据库没有数据导致的)。一般都可以套用上面的回答,都是一个套路。

5、 如果你提的BUG开发不认为是BUG怎么办
参考答案:

(1)首先测试人员要确保这确实是个bug(如果是误测,那只能测试人员自己背锅了);

(2)在测试环境将BUG复现出来,保存好截图、相关测试数据,发给开发人员,或直接给开发人员演示一遍;

(3)如果开发人员还认为不是BUG,或者是由于技术问题很难修改的BUG,可以叫上产品经理、开发负责人,一起讨论一下;

(4)对于等级比较低的建议性BUG,可以先记录到BUG管理系统,暂时不用说服开发去修改,后续再进行跟进。

6、 Web测试和移动端APP测试有什么区别
分析:Web端为B/S架构,即浏览器/服务器模式,直接在网页端进行测试;移动端APP一般为C/S架构,即客户端/服务端模式,是需要在移动设备上安装的。

如果你之前的工作中只测试过APP/Web其中一种,那也不要说另外一种没测过、不了解。

参考答案:

兼容性方面:Web端是网页形式,主要考虑不同浏览器的兼容性,测试时会在几大主流浏览器谷歌、Edge、火狐等进行兼容性测试;另外还要考虑屏幕的分辨率;

移动端APP的兼容性测试要考虑不同设备(不同手机/Pad品牌、型号、屏幕大小、分辨率)、不同安卓/ios版本。

性能方面:web主要关注页面的响应时间;APP测试除了响应时间还要关注电量、流量、CPU、内存等。

安装、卸载、升级方面:web是不需要安装的,服务端升级后,客户端会自动更新;APP存在安装、卸载、升级的测试。

移动端专项测试:接听电话、收发短信、低电量提醒、闹铃、充电、查看通知、锁屏、横屏、手势、刷新、回退、前后台切换、网络切换等等。

7 、给你一个登录界面/优惠券你怎么进行测试
分析:现在面试类似这种问题真的挺烂大街的,基于一个不明确的需求,我觉得回答得好与不好根本说明不了什么。偏偏这种面试题的频率还贼高,什么电梯、杯子、优惠券、朋友圈点赞、登录功能是怎么测试的,这么多案例,都要去背一遍吗?

首先不要从这个功能有哪些可能的场景入手,因为功能需求本来就是不明确的。这里给出一个大概的回答思路。

参考答案:以登录界面为例

我会从下面几个方面去进行用例的设计:

功能测试:我会根据需求文档,将界面划分成几个小模块,比如注册、登录、忘记密码等,然后对每个小模块进行用例的设计。

注册可能要考虑手机号、邮箱等不同注册方式;登录要考虑正常登录、异常登录,会使用边界值、等价类划分法来设计用例;忘记密码要考虑不同的密码找回方式。(功能这一块可以再展开详细地说)

如果涉及到接口的,我会使用工具Postman来进行接口测试。

UI:检查界面是否有错别字,界面配色和布局、相关控件设计是否和UI设计一致。

兼容性:如果是web端登录,考虑浏览器、分辨率的兼容性;如果是移动端,考虑不同手机设备、不同屏幕大小、不同系统版本的兼容性。

性能方面:考虑用户从点击登录到登录成功的响应时长;多用户并发同时操作时功能是否正常。

安全性:考虑敏感数据如密码的传输和存储是否加密、是否明文存储在本地。

稳定性:看是否有闪退、崩溃、无响应等情况。

网络测试方面:网络状况不好时能否登录成功,异常提示是否正确等。

专项:如果是移动端的登录,还要考虑电话、短信、锁屏、横屏、重启等的影响。

8 、你之前是如何进行接口测试的
参考答案:

首先获取接口规范、接口文档、需求文档,设计接口测试功能用例,用例设计要考虑单接口和多接口业务流程。

单接口主要进行接口的正确性和健壮性验证,要考虑各种入参验证(正常情况、异常情况,包括输入参数个数不对,类型不对,可选/必选,还要考虑参数互斥或关联的情况)、接口返回值各种验证(符合接口文档需求)。

多接口业务流程测试主要关注业务流和数据流,也就是多个接口的串联操作能否满足需求文档里的需求。

我们公司使用postman进行接口测试,根据接口文档,先选择请求方式,然后输入url,发送请求,看接口返回的数据。

9、 在测试过程中,有没有遇到过比较困难的事情,你是怎么解决它们的
参考答案:

比较困难的事情在工作中还是很常见的,我上一份工作中就遇到过这样的情况:

开发提测的版本经常出现影响流程的BUG,导致测试无法进展下去,影响测试进度。

因为是小公司,没有一个规范的产品研发、测试标准,但是这样下去工作效率只会越来越低。

因此我,作为团队的核心成员,主导拟定了一套产品提测标准。要求开发自测用例覆盖度(也就是冒烟测试范围)、执行通过度要达到一定的标准,否则测试可以无条件驳回。

经过一段时期的试运行,后面情况好了很多,基本不会有随便一点就报错,或者影响大流程的问题。

10、你对未来的职业规划是什么
分析:面试必问,可以谈谈短期目标、长期目标,最好加上为了达到这个目标你做了哪些努力。对于初级测试可以这么回答:

参考答案:

下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

  下面是一些配套的资源,希望能帮到大家 

 

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取    

2020-2021最新大厂面试题附答案解析建议收藏

字节跳动

一面

1.算法题
两个栈实现队列
2.算法题输入一个数组,想一种方法让这个数组尽可能的乱序,保证功能能实现的情况下时间复杂度和空间复杂度尽可能的小,可使用随机数函数。(面试官最后说了 O(n)的时间复杂度能实现)
3.写一个单例
4.ActivityA -> Activity B -> Activity A
Activity A 启动模式为 singleTask
Activity B 启动模式为常规模式
问A 启动 B,B 又启动 A 的生命周期调用顺序?
5.你刚才提到 onsaveinstancestate() ,说一下调用时机,它用来干什么的。
6.onsaveinstancestate() 保存的那个参数叫什么?Bundle 里面都放一些什么东西?怎么实现序列化?Parcelable 和 Serializable有什么区别?
Bundle 。
7.数组和链表的区别
8.HashMap 的结构以及原理
9.我看你简历上写了 retrofit,你能说一下它是做什么的,如果知道基本框架也说一下
10.了解 View 的绘制机制吗,能说一下吗
11.我看你项目里用的 Fragment 能说一下 Fragment A 启动了 Fragment B,Fragment B 中按下返回键只退出 Fragment B 怎么实现。
12.你还有什么要问的吗?

二面

1.算法题 一个字符串,求最长没有重复字符的字符串长度
2.string stringbuffer 和 stringbuilder 区别
3.final finally finalize区别
4.数组和链表的区别
5.HashMap 了解过吗
6.Tcp 三次握手四次挥手
7.get 与 post 的区别
8.synchronized 的作用
9.你知道哪些设计模式
10.Android 进程通信的方法
11.那你能说一下 Intent 是怎么进程通信的
12.内存泄漏有哪几种情况
13.有什么要问

字节社招

一面

1、java泛型,反射
2、进程间通信的方式,安卓中有哪些方式,为什么是基于Binder的,不用传统的操作系统进程间通信方式呢
3、一个app可以开启多个进程嘛,怎么做呢,每个进程都是在独立的虚拟机上嘛
4、异步消息处理流程,如果发送一个延时消息,messagequeue里面怎么个顺序,messagequeue是个什么数据结构
5、广播的种类,注册的方式,以及不同注册方式的生命周期。
6、局部广播和全局广播的区别分别用什么实现的。
7、activity和service的通信方式
8、进程和线程的区别
9、并发和并行分别是什么意思,多线程是并发还是并行
10、安卓11有什么新的特性。
11、HTTPS过程。
12、DNS解析过程,如果服务器ip地址改变了,客户端怎么知道呢
13、算法:二叉树的右视图。

二面

1、介绍一下所有的map,以及他们之间的对比,适用场景。
2、一个按钮,手抖了连续点了两次,会跳转两次页面,怎么让这种情况不发生。
3、一个商品页一个商详页,点击商详页的一个关注按钮,希望回- 到商品页也能够显示关注的状态,怎么做
4、项目中定时为什么用AlarmManager,不用postDelayed
5、项目中后台网络请求为什么用service不用线程
6、安卓的新特性。
7、内部类会有内存泄漏问题吗 内部类为什么能访问外部类的变量,为什么还能访问外部类的私有变量。
8、算法: 单链表判断有无环。

三面

1、介绍项目用到了contentprovider,然后问ContentProvider的生命周期,application,activity,service,contentprovider他们的 context有什么区别。
2、内存溢出和内存泄漏,提到了bitmap
3、然后问下载一个图片的时候直接下载了一个5g的图片,不压缩一定会产生OOM问题,那么怎么去获取这个图片的长宽呢,或者说这个图片的大小的大小在你没下载之前如何得到。

字节跳动

1.操作系统进程通信方式有哪几种?
2.进程间的共享内存是怎么实现的?
3.java中被static修饰的对象会被回收吗?
4.synchronized能保证可见性吗?
5.说说事件分发机制
6.说说类加载机制
7.说说双亲委派模型
8.看过哪些框架?
9.retrofit怎么实现的?
10.项目中遇到的难题以及如何解决的
11.算法:写一个函数,往一个数组中指定位置插入一个元素
12.http状态码有哪些?
13.如果自己实现AsyncTask,要怎么实现?

OPPO

•项目中的重点内容
•Service两种区别
•AsynTask 原理
•线程池原理,是否使用过
•性能优化,图片内存占用计算,持有引用,
•TCP原理,如何确保稳定(与udp相比),阻塞,
•文件上传下载原理,下载中流的大小;
•反射如何实现
•泛型
•EventBus作用,,原理;
•java四种引用(强软弱虚),软弱的回收区别
•ListView的一些优化,如何复用,错位,现在用glide
•数据结构,SparseArray和hashmap区别
•操作系统,cpu调度
•数据库
•LRU缓存原理
•死锁,锁的几种类型。是否项目中使用
•继承和接口,优先使用级
•四道算法原理
•Linux指令;

快手

  1. 单例模式
  2. volatile关键字
  3. HashMap(红黑树的时间效率为什么是logn,怎么算出来的?)
  4. 线程、线程池
  5. Retrofit(底层网络请求涉及到OkHttp)
  6. Handler(原理、Looper在主线程中死循环,为啥不会ANR?、是否能在主线程更新UI、同步屏障机制等)
  7. HTTP和HTTPS的区别
  8. 一道mid算法

小米:

rxjava 三大类是什么
String的对象为什么是不可变的
arraymap可能导致什么问题
thread的构造函数是什么
runnable如何创建线程
(创建线程的方式)
有哪些锁?
synchronize和lock的区别
GC root有哪些
队列如何创建、队列在Java中的类是什么
offer是什么(当时问的时候呆了一下,还以为面试官要给我offer了,搞得老激动…然后没答出来…后来才想起他问的应该是队列里的offer方法… )
有什么查找的算法
排序的算法

网易:

sharepreference的commit方法和apply方法的区别

jetpack(viewmodel、lifecycle)

AndroidX有什么好处

Android帧动画会遇到的问题

属性动画和view动画的区别

子线程创建handler

Android达到ANR的条件

recyclerview使用不同的布局

小米

一面

  • 事件分发
  • 自定义view
  • 给了个布局问你的实现方式
  • 有没有了解过新的布局
  • Android布局优化
  • 过度绘制及优化
  • 讲讲你认为你Android里理解最深的点
  • 了解过framework吗
  • 讲讲二叉树前中后序遍历
  • 数据库
  • 类加载的过程
  • kotlin扩展方法 扩展属性
  • 看过哪些开源库
  • 实习过程中最有成就感的事
  • 算法
    • 反转链表
    • 删除公共字符串
    • 冒泡排序怎么排的 稳定吗

二面

  • Android
    • 滑动时间冲突解决
    • handler原理
    • Android跨进程通信
    • Activity生命周期
    • Android为啥要分四大组件
    • 弹一个dialog时Activity生命周期变化
    • onstart onresume分别执行什么类型的业务
  • Java
    • 手写单例
    • hashmap源码
    • 多线程,锁
  • 操作系统
    • 进程和线程的区别
  • 算法
    • 之字形打印二叉树

三面

  • Java
    • 封装继承多态,重点说理解及应用
    • static
    • 重写和重载的区别、理解及应用
    • hashmap底层,把面试官当小白给面试官讲
  • Android
    • 四大组件的理解
    • activity生命周期、横竖屏生命周期、有没有不让activity销毁的方法
    • 启动模式
    • 两种service有啥区别
    • service执行耗时操作会咋样、咋解决
    • intentservice底层
    • service保活
    • broadcastreciver权限
    • Android跨进程方式
    • intent底层是怎么跨进程的
    • 常用布局,重点说理解及应用
    • Android动画有哪几种,有没有底层研究
    • 自定义view、自己写过的demo
    • 内存泄漏场景及解决办法
  • 网络
    • TCP三次握手/四次挥手 讲讲
    • 有没有直接在TCP层做过操作
  • 操作系统
    • 进程和线程的区别

##腾讯

一面

自我介绍
说一下做过的项目
两个队列实现一个栈
activity和service的区别
找出一个数组中出现次数大于数组长度一半的数
线程安全的单例模式
Android 线程切换有哪些方式
三次握手四次挥手 为什么要有三次握手(而不是两次)
说一下final关键字
讲一下listview的特点??
http的301状态码
tcp UDP的区别
tcp如何做到可靠传输
Java gc
讲一下你对flutter的看法(简历里写了会flutter)
平时有写博客吗?可以看一下你的github主页吗?
让我问问题

二面

自我介绍
说项目
说一下项目中的难点
说说flutter的实现原理(绘制原理?)
说说flutter和Android在开发效率上的感受
C 和Java中的多态有什么区别
讲一下设计模式
然后再细讲一下工厂
讲一下MVP
进程间通信
对比一下队列和栈,以及它们底部实现
对比一下C 的vector和Java的list,什么空间利用率呀,空间占用啊
还问了 有没有读研的打算
最后让我问问题,我首先问了什么时能有结果?
然后问了,如果出现了一个新技术或者新框架,团队会马上投入研究吗?

总结

分享一份整理好的 Android学习PDF+架构视频+面试文档+源码笔记高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料

以上完整面试笔记pdf全部免费分享,需要的朋友只需要点赞支持一下后,可以点击这里获得领取方式,希望可以帮助大家顺利拿到自己满意的offer。

以上是关于2023最新软件测试十大必问面试题(附答案和解析)的主要内容,如果未能解决你的问题,请参考以下文章

2023年Java面试正确姿势(1000+面试题附答案解析)

2023年Java面试正确姿势(1000+面试题附答案解析)

分享互联网2021年最新Java面试题汇总整理-附详细答案解析

2020-2021最新大厂面试题附答案解析建议收藏

2021年超全超详细的最新大数据开发面试题,附答案解析

<面试必过系列>2021最新JVM大厂必问面试题附解答