写点什么

赢在 2022,面试官常问的软件测试面试题总结

作者:六十七点五
  • 2021 年 11 月 15 日
  • 本文字数:5882 字

    阅读完需:约 19 分钟

已临秋招尾声,最近问了几位 HR 朋友,发现了几种声音:

“投简历的人挺多,但是合适的却很少。”

“好不容易挖来人,结果 2 轮面试被刷了,现在大厂搬砖的也是参差不齐...”

“在招测试岗,要么学历不够,要么只会纸上谈兵,要么能力一般,还狮子大张口....”

好岗位的确不缺,匹配者却很少。

大厂,高薪,高等级人人想要,门槛却一个比一个高。

不过,话说回来,跳槽成功的人确实也不在少数,福利待遇也确实不赖。前不久,朋友超人就通过三轮面试,跳槽进了阿里,继续做测试开发。

所以说,打铁还需自身硬。他做了三年测试工程师,工作务实,能干,跳槽大厂也在情理之中!

说到面试,问了他的情况。他说“涉及的知识主要有 MySQL 数据库的使用、Linux 操作系统的使用、软件测试框架性的问题,测试环境搭建问题、当然还有一些自动化测试和性能测试的问题.......“


接下来,超全的软件测试面试资料这就来啦,需要的朋友赶紧点击领取~ 或者私❤️作者【1024】

【测试理论基础题】

这类题目就是考测试工程师的基本能力了,比如测试计划,测试流程,如何 bug,你做过哪些测试,一般我们认为这些能力做的再好都是应该的,不会有加分,但是只要做的不好,那就是个不合格的测试工程师了。这种题目也不会问的太多,大概题目如下:


1、请描述下你上个公司的测试流程?


2、请描述下 bug 的几个要素?


3、白盒和黑盒的区别,你是怎么运用的?


4、你是如何做测试分析?


5、如何设计测试用例?什么样子的测试用例是好用例?


6、功能测试在 beta 版本对外的上线标准是什么?

【自动化测试相关】

自动化永远是避不开的,你必须得会一点,面试加分项。这一块包括,自动化一些理念和自动化的工具使用。包含 Selenium、Appium。

1、自动化代码中,用到了哪些设计模式?

单例模式

工厂模式

PO 模式

数据驱动模式


2、什么是断言?

检查一个条件,如果它为真,就不做任何事,用例通过。如果它为假,则会抛出 AssertError 并且包含错误信息。


3、UI 自动化测试中,如何做集群?

Selenium Grid,分布式执行用例

Appium 使用 STF 管理多设备

Docker+K8S 管理集群


4、怎么对含有验证码的功能进行自动化测试?

万能验证码

测试环境屏蔽验证

其他操作不推荐


5、如何优化和提高 Selenium 脚本的执行速度?

尽量使用 by_css_selector() 方法

by_css_selector() 方法的执行速度比 by_id() 方法的更快,因为源码中 by_id() 方法会被自动转成 by_css_selector() 方法处理;

使用等待时,尽量使用显示等待,少用 sleep(),尽量不用隐式等待;

尽量减少不必要的操作:可以直接访问页面的,不要通过点击操作访问;

并发执行测试用例:同时执行多条测试用例,降低用例间的耦合;

有些页面加载时间长,可以中断加载;


6、接口测试能发现哪些问题?

可以发现很多在页面上操作发现不了的 bug;

检查系统的异常处理能力;

检查系统的安全性、稳定性;

前端随便变,接口测好了,后端不用变;

可以测试并发情况,一个账号,同时(大于 2 个请求)对最后一个商品下单,或不同账号,对最后一个商品下单;

可以修改请求参数,突破前端页面输入限制(如金额);


7、Selenium 中隐藏元素如何定位?

如果单纯的定位的话,隐藏元素和普通不隐藏元素定位没啥区别,用正常定位方法就行了(这个很多面试官也搞不清楚);

元素的属性隐藏和显示,主要是 type=“hidden” 和 属性来控制的,接下来在元素属性里面让它隐藏,隐藏元素可以正常定位到,只是不能操作(定位元素和操作元素是两码事,很多初学者傻傻分不清楚),操作元素是 click,clear,send_keys 这些方法;

JS 操作隐藏元素;


8、如何判断一个页面上元素是否存在?

方法一:用 try…except…

方法二:用 elements 定义一组元素方法,判断元素是否存在,存在返回 True,不存返回 False

方法三:结合 WebDriverWait 和 expected_conditions 判断(推荐)


9、如何提高脚本的稳定性?

不要右键复制 xpath(十万八千里那种路径,肯定不稳定),自己写相对路径,多用 id 为节点查找;

定位没问题,第二个影响因素那就是等待了,sleep 等待尽量少用(影响执行时间);

定位元素方法重新封装,结合 WebDriverWait 和 expected_conditions 判断元素方法,自己封装一套定位元素方法;


10、如何定位动态元素?

动态元素有 2 种情况,一个是属性动态,比如 id 是动态的,定位时候,那就不要用 id 定位就是了;


还有一种情况动态的,那就是这个元素一会在页面上方,一会在下方,飘忽不定的动态元素,定位方法也是一样,按 f12,根据元素属性定位(元素的 tag、name 的步伐属性是不会变的,动的只是 class 属性和 styles 属性);


11、如何通过子元素定位父元素

使用 element.parent 方法


12、平常遇到过哪些问题? ?如何解决的

可以把平常遇到的元素定位的一些坑说下,然后说下为什么没定位到,比如动态 id、有 iframe、没加等待等因素;


13、一个元素明明定位到了,点击无效(也没报错),如果解决?

使用 JS 点击,Selenium 有时候点击元素是会失效;


14、测试的数据你放在哪?

对于账号密码,这种管全局的参数,可以用命令行参数,单独抽出来,写的配置文件里(如 ini);


对于一些一次性消耗的数据,比如注册,每次注册不一样的数,可以用随机函数生成;


对于一个接口有多组测试的参数,可以参数化,数据放 YAML,Text,JSON,Excel 都可以;


对于可以反复使用的数据,比如订单的各种状态需要造数据的情况,可以放到数据库,每次数据初始化,用完后再清理;


对于邮箱配置的一些参数,可以用 ini 配置文件;


对于全部是独立的接口项目,可以用数据驱动方式,用 excel/csv 管理测试的接口数据;


对于少量的静态数据,比如一个接口的测试数据,也就 2-3 组,可以写到 py 脚本的开头,十年八年都不会变更的;


15、什么是数据驱动,如何参数化?

参数化的思想是代码用例写好了后,不需要改代码,只需维护测试数据就可以了,并且根据不同的测试数据生成多个用例;


16、其他接口都需要登录接口的信息,怎么去让这个登录的接口只在其他接口调用一次?

使用单例模式

使用自定义缓存机制

使用测试框架中的 setup 机制

pytest 中 fixture 机制


17、接口产生的垃圾数据如何清理?

造数据和数据清理,需用 python 连数据库了,做增删改查的操作测试用例前置操作,setUp 做数据准备后置操作,tearDown 做数据清理


18、怎么用接口案例去覆盖业务逻辑?

考虑不同的业务场景,一个接口走过的流程是什么样的,流程的逻辑是什么样的,什么样的参数会有什么样的结果,多场景覆盖;


最新软件测试面试题汇总【内附参考答案】

【接口自动化测试篇】

接口自动化测试属于灰盒测试的范畴,实现起来简单,即可以让测试工程师提早介入测试,也可以用来做回归测试。随着以后市场的发展,接口自动化测试成为测试工程师的必备技能之一。接口自动化测试带来的价值在哪?


1、没有接口文档的情况下,你会如何执行接口测试?


2、接口自动化测试过程中,你如何设计测试数据,关注点在哪里?


3、如何判断一个缺陷是属于前端还是后端的?


4、HTTP 和 HTTPS 的区别在哪里?


5、之前见过哪些接口请求类型,简单的描述下区别?


6、见过哪些接口返回状态码,简单的举例说明几个?


7、在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理?


8、当一个接口出现异常时候,你是如何分析异常的?


9、用过哪些接口测试工具,有没有用过代码形式来实现接口自动化测试?有什么区别?


10、在接口自动化测试方案设计中有没有涉及数据驱动,是如何实现的?


11、简单的描述下 token 和 seesion 的区别?


12、支付接口你是如何执行接口自动化测试的?


13、有没有用过 mock,简单的描述下你是如何使用 mock 来模拟接口的?


14、不可逆的接口自动化测试数据,例如订单,删除之后下次执行就没有该数据了,如何保障脚本在不重新做数据的情况下可以无线执行?


15、APP、微信小程序要实现接口自动化测试,其实现方式和 Web 端有区别么?


16、手机端如何执行弱网测试?

【性能测试篇】

在互联网时代,客户流量直接影响到一个软件的成败,有了流量也就代表软件服务器必须支持产品性能。首先,中小型公司,不需要设计大型的性能测试方案体系,但是对于软件的核心功能还是会保障其性能的。第二,执行性能测试,发现性能瓶颈,常见性能问题还是需要清楚。


1、性能测试指标包括哪些

最大并发用户数,HPS(点击率)、事务响应时间、每秒事务数、每秒点击量、吞吐量、CPU 使用率、物理内存使用、网络流量使用等。


前端需主要关注的点是:

响应时间:用户从客户端发出请求,并得到响应,以及展示出来的整个过程的时间。

加载速度:通俗的理解为页面内容显示的快慢。

流量:所消耗的网络流量。


后端需主要关注的是:

响应时间:接口从请求到响应、返回的时间。

并发用户数:同一时间点请求服务器的用户数,支持的最大并发数。

内存占用:也就是内存开销。

吞吐量(TPS):Transaction Per Second, 每秒事务数。在没有遇到性能瓶颈时:TPS=并发用户数*事务数/响应时间。

错误率:失败的事务数/事务总数。

资源使用率:CPU 占用率、内存使用率、磁盘 I/O、网络 I/O。


从性能测试分析度量的度角来看,主要可以从如下几个大的维度来收集考察性能指标:


系统性能指标、资源性能指标、稳定性指标


2、如果一个需求没有明确的性能指标,要如何开始进行性能测试?

先输出业务数据,如 pv、pu、时间段等,计算出大概的值,然后不断加压测到峰值


3、介绍 JMeter 聚合报告包括哪些内容?

请求名、线程数、响应时间(50 95 99 最小 最大)错误率、吞吐量


4、如果有一个页面特别卡顿,设想一下可能的原因?

后台:接口返回数据慢,查询性能等各种问题

前端:使用 Chrome 工具调试,判断 JS 执行久或是其他问题

网络问题


5、说一说项目中的实际测试内容

根据自己项目中的经验实话实说,有没有经验很容易露馅。


6、介绍一下 JMeter 进行性能测试的过程

结合自己的项目经验聊。大家也可以自行搜索。


7、介绍一下 JMeter 和 LoadRunner 的区别

详细的不展开了,最重要的是相对来说 LoadRunner 的笨重、昂贵、闭源,理念和生态都落后,而 JMeter 是开源、可定制化开发,功能强大易用,并且在互联网大厂都已经有非常成熟的落地方案(主流的互联网公司基本都在使用 JMeter+ELK+Grafana+Influxdb 这套架构),可以说是进 BAT 大厂必备技能。还不会 JMeter 的同学建议抓紧补起来。

【移动测试相关】

如今是移动互联网的天下,谁家没有个应用,所以这一块基本都会问到,同时也会看你的简历,如果你没有做过,基本也不会问的太深,如果你是专门做这一块的,那么要好好准备了。


概念题

1、描述下 web 测试和移动应用测试的相同点和区别?

2、你是如何做应用的兼容性测试的?

3、请讲出客户端下 3 个常用的性能指标的名称与具体含义?

4、iOS 应用和 Android 应用测试有什么侧重点?

5、请讲诉移动应用的灰度是怎么做的?


实践题

1、应用的闪退通常是什么原因造成的?如果应用闪退,Android 和 iOS 上是分别怎么抓取日志的?

2、请简述移动应用在升级安装时候应该考虑的场景?

3、给你一个应用,请简述你会从哪些方面去测试?

4、请描述下微信朋友圈发小视频的用例设计?

5、如果让你来测试扫码支付,你会考虑哪些场景?

6、如何测试一个应用的登录场景?

【JMeter 的面试问题】

1、解释什么是采样器(Samplers)和线程组(Thread group)?

2、提到 JMeter 中的正则表达式是什么?

3、使用 JMeter 构建的测试计划是否依赖于操作系统?

4、提到 JMeter 中处理器的类型是什么?

5、解释什么是预置处理器元件?列出一些预处理器元件?

6、是否提到测试元件的执行顺序?

7、正则表达式中的“包含”和“匹配”表示什么?

8、说明 JMeter 中的计时器是什么,计时器的类型是什么?

9、说明如何减少 JMeter 中的资源需求?

10、列出几个 JMeter 监听器?

11、在 JMeter 中是否有必要显式调用嵌入式资源?

12、解释计时器(Timer)在 JMeter 中的作用是什么?

【网络协议】

1、Http 与 Https 的区别

2、什么是 Http 协议无状态协议?怎么解决 Http 协议无状态协议?

3、常用的 HTTP 方法有哪些?

4、HTTP 请求报文与响应报文格式

5、一次完整的 HTTP 请求所经历的 7 个步骤

6、TCP/IP 的模型及概念

7、怎么测试网络是否连通

8、如何让外网访问家里的终端?它的原理是什么?

9、访问一个网址会经历哪些流程?

【测试实战面试题】

我现在有个程序,发现在 Windows 上运行的很慢,怎么判别是程序存在问题还是软硬件系统存在问题

1、检查系统是否有中毒的特征

2、检查软件/硬件的配置是否符合软件的推荐标准

3、确认当前的系统是否独立,即没有对外提供什么消耗 CPU 资源的服务

4、如果是 C/S 或者 B/S 结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成

5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对 CPU/内存的访问情况

补充:每一步该怎么实现,需要用到什么技术

一个程序有 n 个变量采用边界值分析可以产生几个测试用例

4n+1

请设计一个关于 ATM 自动取款机的测试用例。

【MySQL 数据库】

1、说下左连接和右连接。

2、介绍下什么是索引。

3、使用 sql 生产 10 万条数据。

4、给你一张表,根据要求写 sql。

5、维护数据库的完整性和一致性,你喜欢用触发器还是自写业务逻辑?为什么?

6、查询选修课程超过 5 门的学员学号和所属单位?

【Linux】

1、你常用的命令是什么?

2、用什么查看 log?

3、如何查找一个文件大小超过 5M 的文件

4、如何查看进程?

5、编译 maven 项目

6、Xshell 工具如果想要实现从服务器上传或者下载文件的话,可以在服务器上安装什么包?

7、编辑 start.sh 文件,查看文件前 10 行内容和后 10 行内容

【编程题】

1、请写出冒泡排序。

2、1~9999 数列中数字 3 出现的次数。用递推方法解出。

3、从一个数组中找出前 4 个最大的数,用最优解。

4、写一段程序,删除字符串 a 中包含的字符串 b,举例 输入 a = "asdw",b = "sd" 返回 字符串 “aw”,并且测试这个程序。

5、写一个方法,把字符串转为数字,比如 str="1234",变成 int 1234。并且测试这个程序。

6、给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

【HR 面】

  1. 简单自我介绍/为什么来北京/现居住地/自我发展空间

  2. 总结下自己目前的短板

  3. 平时怎么学习

  4. 入职之后,你最讨厌或者说最不喜欢和什么样的同事打交道

  5. 非计算机及相关专业如何进入到测试中/在公司初次接触测试,你主要的职责/对于你而言,给你收获最多的一个项目是什么/原因是什么/项目具体是什么

  6. 你了解字节跳动吗?说说你眼中的字节吧!

  7. 之前的薪资是多少/期望薪资是多少/说一下为什么会期望这些薪资

  8. 已经找工作多久了/手中是否还有其他 offter/接收到 offter 多久可以入职

  9. 你有什么问题想问我


由于软件测试面试真题比较多,作者就不一一写到文中,除此之外,还有很多经常遇到的面试题,这套软件测试面试题汇总,希望对大家有帮助哈~


码文良久,还望手动点赞关注鼓励~

发布于: 53 分钟前阅读数: 2
用户头像

喜欢写作,分享内容的攻城狮! 2021.11.02 加入

公众号:程序员一凡,回复:资料,获取10G+学习资源

评论

发布
暂无评论
赢在2022,面试官常问的软件测试面试题总结