当前位置:   article > 正文

2024软件测试面试八股文(有答案版),金九银十季,涨薪涨薪_八股文软件测试面试题(1)_测试八股文面试题

测试八股文面试题

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
img

正文

β 测试:在开发者不可控的环境下进行,由软件最终用户在一个或多个客户场所下进行,用户记录测试中遇到的问题,并定期上报给开发者。

项目相关
1、简单介绍下最近做过的项目

根据自己的项目整理完成,要点:

1)项目背景、业务、需求、核心业务的流程

2)项目架构,B/S还是C/5,数据库用的什么? 中间件用的什么?后台什么语言开发的?

是否有做App端,是否有H5是否开发小程序等等。

3)项目前端有哪些功能模块,后台有哪些功能模块?

2、拿一个你所负责的模块,讲下具体怎么测的?

根据自己的项目整理完成,核心要点:

1)拿一个你负责过的模块,核心业务模块讲解

2)业务流程是怎样的,需求怎么样,有什么规则没,规则简单介绍

3)你是如何分析的,讲明分析思路,测试点,主要怎么考虑测试的,主要核心测试重点在哪里,

用了什么测试方法等等。

3、你在这个项目里面主要做了些什么工作?

1)在这个项目中,主要是以功能测试跟后台接口测试为主,主要参加了需求评审会议,用例的编写,

参与用例的评审,执行测试。

2)协助开发定位问题解决发现的bug,编写测试报告,协助上线。

3)另外就是做了APP的一些相关项测试,像兼容性测试、稳定性测试、安装卸载版本覆盖测试和app性能都是有做过的,例外后期有做过接口自动化等。主要就是做了这些工作。

这个具体根据你自己的简历上写的来说

4、你们项目组有多少人、开发多少个、测试多少个?

公司具体人数,可以不太清楚,项目组多少一定清楚

这个一定要根据自己的简历项目大小来说,不能乱说

产品1、项目1个、架构师1个、前端3个、后端5个、ios1个、Android 1个、

测试3个(测试主管,核心测试人员)、运维1个、UI一个

5、测试人员怎么分工的?

1)我们测试组3人,1个测试组长,2个测试,一般都是根据需求的复杂程度大小来,

尽量是自己熟悉哪个版块的就继续做那个版块。

2)比如:我这边主要是负责前端大部分的功能模块,还有接口测试跟ui自动化测试,另一个同事主要是功能测试这边,组长这边也负责一些功能测试,包括一些性能跟安全测试。

3)其实测试工作也划分的没有那么细,后期我们也会做交叉测试,相互测试功能,性能跟安全测试我也会参与一下。

6、项目的送代周期? 多久一选代? 一个版本你们发现多少bug(切记工具自己所选择的项目来回答)

我们公司是这样的,迭代还是蛮快的,一般是两个星期一个迭代,迭代测试两轮。Bug的话不一定哦,关键还得看开发,哈哈,开发的版本质量好的话,BUG就会少些,整个版本比较好的情况下大概也就二十来个BUG,当然如果遇到开发是个新手,那么找到60-70个也是很常见的,比如之前的那个金融项目,足足发现了72个BUG,这样的情况下追踪BUG的工作量都比较的大,如果是版本选代的话,那么基本就不会出现多少BUG了。

参考答案2

因为我们项目的用户活动和三方合作平台比较多,一般半个月或者1个月肯定会有一个迭代版本,

假如用户或者合作方突然有很紧急的需求,那一般老大他们会向上发邮件和OA呈批给(产品经理,项目经理),如果通过了就会马上加急处理这个需求,测试完成直接上线。

现在都是维护为主,但新需求也不断有,一般一个版本上百个bug是有的。

7、你们整个项目写了多少用例,你负责的模块大概写了多少用例?

参考答案:这个得根据项目的复杂程度,我们最近做的这个也还好,整个项目写了大概2干3百多条(有点多了),我负责的模块就写了一千多条(你要思考,你负责了哪些模块,大概评估下,不要乱喊)。

总结注意点:没有标准答案,先说你的前置条件,再说数据,只要你前置条件和数据匹配即可。

8、最近的版本写了多少用例?

(总结注意点:没有标准答案,先说你的前置条件,再说数据,只要你前置条件和数据匹配即可

特别注意:你如果是半个月的版本,一般给你两天写用例,你自己评估下写多少。

半个月的版本:1-2天需求分析,1-2天写用例,1天评审用例,其余的时间就是执行回归bug,编写测试报告)

最近的版本因为没有特别的用户活动,产品那边也没有给特别大的改动需求,我负责的

有5个模块吧,大概有180多条用例。

9、你的需求分析一般几天,用例大概写了多长时间?执行了多长时间?

如果按照2周一个版本来算的话,我们需求分析一般是由产品SE先组织我们开会,讲清新版本需求,然后我们再花1天到1天半时间去详细分析需求,另外有2天左右时间来写用例,写完用例会进行用例评审,后面的时间基本就是在执行用例,提bug,并跟进bug修复问题。

10、在uat测试的时候,突然客户临时要大量的数据

备注说明:uat:测试人员提供用例,uat环境已搭建好,他就开始来执行,如果发现问题,

需要协助,谁负责这个需求,就找对应的人,发现bug,提交到uat版本里面,修复完了,

客户需要回归验证的,我们公司只是辅助他去执行测试。

参考答案:

看他需要的数据能不能从上个版本,或者生产环境导入数据进来测试,如果没有,我们看能不能 批量修改数据去测试,如果不行,我们只能通过存储过程造数据了。

12、每个阶段测试开发在干嘛(比如你写用例的时候开发在干嘛?)

1)需求阶段,大家都在了解需求

2)测试准备,

测试编写用例,开发做概要设计,详细设计,然后就是编写代码,编写接口文档,设计文档。

3)测试执行阶段,

测试人员执行用例,发现bug、提交bug、开发修复bug(开发还有可能在开发未完成的功能)

13、你这个项目做了多久? 你这个项目现在的用户里有多少? 活跃量多少?

时间根据简历来

比如:一年时间,金融项目:100W用户2W活跃用户

计算机基础
1、TCP/IP五层模型(从下往上):

物理层:保证原始数据可在各种物理媒体上传输,主要应用:集线器 数据链路层:传输单位为帧,主要应用:交换机 网络层:传输单位为数据报,主要应用:路由器,保证端到端系统之间通信正常,路径选择、路由及逻辑寻址。主要协议:IP协议、ICMP协议(ping命令即为该协议)、ARP协议(IP地址转为MAC地址)、RARP协议(MAC地址转为IP地址) 传输层:主要应用:网关,保证端口到端口之间的可靠/不可靠的传输,主要协议:TCP\UDP 应用层:传输单位为报文,主要协议:HTTP\FTP等

2、IP地址:

A类地址:第一个字节为网络号,地址范围为0-127 B类地址:前两个字节为网络号,地址范围为128-191 C类地址:前三个字节为网络号,地址范围为192-223

3、子网掩码:1表示网络位,0表示主机位

4、http和https的区别

http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
http是80,https是443,http连接是无状态连接(每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。而cookie和session可以保持http连接状态),HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全
5、cookie和session的区别

1)cookie存储在浏览器上,session存储在服务器上,更安全

2)cookie可在浏览器明文查看,session通过服务器加密是一串无序字符串

cookie有两种:

一种存在于浏览器的进程中,一种存在于硬盘上。每个session有一个唯一的sessionid,这个id存放在浏览器进程中的cookie中。当关闭浏览器后cookie消失了,sessionid也消失了,那服务器端的session也消失了。但实际服务器不知道浏览器是否关闭,因此服务器会设置一个session失效时间,到时间后将对应的session删除。

每次浏览器被关闭后再次打开访问同一个请求,都是不同的session。

当勾选自动登录,其实是将sessionid存放在了硬盘cookie中,这样下次可以免登录

6、tcp和udp区别

udp是不可靠、无连接,tcp是可靠,有连接,三次握手,四次挥手。udp比tcp传播速度更快

udp可以一对多或者多对多连接,tcp是一对一连接

TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证(tcp支持重传,而且也有序列号保证数据顺序)

7、进程与线程区别

1)进程是资源分配的最小单位,计算机把资源分配给进程,同个进程下的线程间共享资源

2)一个进程可以包含多个线程,一个线程只能在一个进程中

3)一个进程内即使有很多线程,也只运行在一个cpu内,多核cpu上可以运行多个进程,提高速度

4)进程的切换开销比线程的大很多,因为每个进程有自己的虚拟地址空间,同个进程下的线程则是共享该进程的虚拟地址空间。进程切换需要切换虚拟地址,虚拟地址映射为物理地址通过页表实现,进程切换页表也切换,导致缓存失效,映射物理地址速率就变慢,而线程不需要切换地址空间

5)线程间的通信方式有4种:wait/notify(等待唤醒)、volatile、CountDownLatch、CyclicBarrier

8、tcp怎么保证可靠性传输

1)校验和:保持首部和数据的校验和

2)序列号:使用序列号保证数据传输的顺序性

3)支持重传

4)停止等待协议:每发完一个分组就停止等待对端确认

9、ping命令不通的原因

1)本机或目的机子未联网,报time_out超时

2)网络很差超时

3)对端有***阻止Ping

10、重定向

在 HTTP 协议中,重定向操作由服务器通过发送特殊的响应(即 redirects)而触发。HTTP 协议的重定向响应的状态码为 3xx 。浏览器在接收到重定向响应的时候,会采用该响应提供的新的 URL ,并立即进行加载,大多数情况下,除了会有一小部分性能损失之外,重定向操作对于用户来说是不可见的。

Python
1、python是动态语言,动态语言和静态语言区别

动态语言无需申明变量类型,运行时才确定数据类型的语言,如python,js等
静态语言需要先申明变量类型,如java\c\c++
2、python装饰器

当一个方法有装饰器修饰时,首先会将该方法当作参数传入装饰器函数中执行,再执行该方法。

3、python可变与不可变类型区别

可变表示值变,但是指向的内存地址不变;不可变表示值变,指向的内存地址也变 tuple 整型 字符串都为不可变类型 list dict set都为可变类型 tuple中嵌套list或者dict,dict和list的值都可变,但是tuple的值不可变。

6、浅拷贝与深拷贝与赋值

赋值表示指向同一个地址,任何一个变都会变。

浅拷贝:嵌套内的原值改变,新值也变。原值改变,新值不变

深拷贝:嵌套内的原值改变,新值不变。原值改变,新值不变

数据库
1、嵌套查询需关注

最外层的为最终的结果,再根据条件一层一层嵌套

嵌套查询每次只查找一个表

2、内连接、左外连接、右外连接

写法:from table_a inner/left/right join table_b on 关联两个表的条件。
三个连接区别:内连接只显示两表中有关联(符合条件)的数据;左连接显示左表所有数据,右表没有对应的数据用NULL补齐,右表多余的数据删除;右连接显示右表所有数据,左表没有对应的数据用NULL补齐,左表多余的数据删除
3、group by的分组字段要与select的字段一致,除去使用聚合函数的字段

group by后可以跟having对分组后的数据再进行筛查
delete table where xxx,update table set xxx
模糊查询用like,不匹配用is not
sum和count区别:sum用于统计值的总和,count用于统计行数即记录数
4、索引(用户不可见,主键默认为索引)

创建索引:create index 索引名称 on table_name(column_name)
根据索引查询:select * from tabel_name where column_name=‘xxx’
为某一列创建索引,搜索该列的值的时候可以提高查询速度,但是索引太多将会影响更新和插入的速度,因为它同样需要更新每个索引文件。
5、主键,外键和索引

主键的值唯一,不能为空,一个表只能有一个主键。

外键的值可以不唯一,可以为空,一个表可以有多个外键,一个表的外键通常是另一隔壁表的主键。

索引的值不能唯一,可以为空,一个表可以有多个索引

6、TOP 子句用于规定要返回的记录的数目,需要现场写sql语句,多为连表查询

Linux
1、vim下的指令参数

nx:连续向后删除n个字符
dd:删除游标所在的那一行
ndd:删除光标所在的向下n行
vyy:复制光标所在的那一行
nyy:复制光标所在的向下n行
2、python反转字符串

切片: str【: : -1】
list=list(str) list. reverse() ’ '. join(list)
3、linux查看进程命令

ps -ef | grep 查找需要的进程 top 列出各个进程的资源占用情况 Linux找到被占用的端口号进程并结束: netstat -tunl|grep 端口号 找到进程号后kill -9 进程号(-9强制删除)

Selenium
定位元素方法有id,name,class_name,tag_name,linktext,xpath,css

1、driver.quit()关闭浏览器,driver.close()仅关闭当前页面

2、等待分为强制等待(必须等待多久),显示等待(直到某个元素出现才操作,除非超时)和隐式等待(为浏览器对象创建一个等待时间,得不到某个元素就等待,直至拿到)

3、isDisplayed()方法可以判断某个元素是否显示

4、driver.switchTo().alert()切换到web弹窗

5、driver.window_handles()可查看当前所有句柄,driver.switch_to.window(index)切换句柄

接口测试
1、请结合你熟悉的项目,介绍一下你是怎么做测试的?

首先要自己熟悉项目,熟悉项目的需求、项目组织架构、项目研发接口等

功能 + 接口 + 自动化 + 性能 是怎么处理的?

第一步: 进行需求分析,需求评审,研发和测试对需求达成统一的理解

第二步:架构师会输出接口规范;

前后端开发根据接口进行开发
功能测试人员,开始根据需求设计测试用例
接口测试人员根据接口规范设计测试接口测试用例
第三步:后端开发 先测接口

第四步:接口测试人员对接口进行测试

第五步:接口测试通过之后,输出接口的测试报告

第六步:功能测试人员,根据接口的测试报告和前端开发的提测,来开始进入功能测试,接口测试人员整理接口自动化脚本,并开始在验收环境进行接口测试

第七步:功能测试人员测试环境测试通过后,进入验收环境进行功能的验收测试

UI 自动化小组成员,开始编写回归测试的自动化UI测试的代码
第八步:发布到线上环境,进行最后一轮的功能回归测试

第九步:跟踪产生BUG

2、你们公司是如何做接口测试的?

分析: 一般会发这类问题,最好结合项目回答,并且要回答出使用工具、技术、设计的人力安排、工作成果等

参考答案: 我在上一家公司里面,对HRM人力资源系统进行过接口测试,负责的呢轮毂、员工的增删盖茶,部门的增删盖茶,用户资源查询接口测试,一共12个接口

在公司里我开展测试时,先要进行需求分析,然后开发开发代码时,熟悉项目需求。等待开发提测试接口后,拿到接口文档,然后根据接口文档设计测试用例,使用postman 工具进行接口测试,经过3天的测试,一般能够完成一轮的接口测试。测试完成后,如果所有测试用例都执行完毕,并且所有的bug都回归测试通过,没有严重等级bug之后,就可以移交功能测试。

在功能测试人员进行功能测试时,我们可以编写自动化接口测试代码,然后进行接口层的回归测试。

同时,我们接口测试人员会提前在UAT验收环境进行部署和回归测试。等UAT回归通过之后,前端测试就可以介入UAT测试。

等前端测设通过并发布上线之后,我们可以在UAT 环境使用持续集成技术,持续的监控已发布的版本质量,达到保证项目质量的目的

最后,我们使用接口测试自己数,对人力管理系统进行利系统接口层测试,测试效率比功能测试回归的效率高了16倍,功能测试需要花费一天的时间才能执行完成回归测试工作,我们接口人员利用自动化接口测试技术,只花了半个小时。而且还能持续的监控旧版本的代码质量,提高我们的测试效率

如果面试官不打断,就接着说:

这里面,我们使用Postman的断言,关联、引入外部数据文件,对接口进行测试。并且使用newman工具来生成HTML报告,利用mysql来连接数据库,校验数据库的数据。

其中,一些大数据的测试场景,我们使用csv文件来完成测试。

让人印象深刻的bug:

在工作中,我遇到一些让我印象深刻的bug,其中我在测试登陆接口时,偶然发现,我们不输入用户名和输入一个特定的密码结果登陆成功了,然后让我意识到这是一个后门,然后提单了,并且询问开发为什么会有这种问题,最后开发说,这是数据库中插入了一条脏数据,这个数据没有用户名,然后有密码导致,他们会修复。

面试的建议:

1、最好能够主导面试的分为,控制面试官问的问题。(如果他有准备往往很难控制)

2、面试官必然会问的3类问题:你简历中写的技术;公司中使用的技术,扩展知识(超出面试者个人的知识,都是我们面试时不知道的内容)

3、面试的问题本质上就是我们怎么做的

例如: 你知道HTTP协议码?

这个问题不是在问你知不知道HTTP协议,而是在问你 什么是HTTP协议,有什么特点,有哪些部分组成?

你写过测试用例吗?

我曾经对登陆接口设计过接口测试用例,按照测试方法论等价类、边界值设计了登陆的测试用例,一共设计了46个,主要的关键元素时用例的测试名称,操作步骤,严重等级,预期结果这些部分。

3、什么时候开展接口测试?

我们公司一般都是前后端开发链条后进行接口测试。

但是我们可以提前介入,例如在后端开发输出接口文档之后就开始进行模拟的接口测试,编写测试脚本

我们可以在UAT阶段进行接口的回归测试

持续集成时,使用自动化接口自动的持续监控版本质量

4、接口测试和UI测试的工作是否重复?

参考答案: 接口测试和功能测试是有重复场景的,如果是接口和UI测试时完全分离的,没有重复。

接口测试和功能测试在业务逻辑上是重复的。但是接口测试更注重后端的交互,而功能测试可以注重前端UI交互,这样的话各有侧重点,能更好的管理测试。

但是当前行业中,很多公司基本上都是通过功能测试来进行接口测试的,有时候会省略接口测试,但是这种风险比较高,功能测试无法覆盖厚点接口测试中性能和安全测试点,导致测试不充分,有很高的上线风险。

5、接口测试框架怎么搭建的?

我们公式使用的框架 python+unitest + request + parameterized + HTMLTestRuuner +pymysql 来进行测试接口

其中 unitest 主要用来管理测试用例

requests模块用来发送接口请求和封装接口

parameterized 用于参数化

HTMLTestRunner 用于生成测试报告

pymysql操作数据库

在我们接口框架中,我们首先是新建一个项目,然后再把项目所需要的目录结构搭建好,接着安装框架需要使用requests,parameterized htmltestrunner pymysql这些工具包

编写脚本会调用封装的接口,来进行接口测试。最后再run_suite.py生成测试报告。report目录用来存放测试报告,utils存放自定义的模块

自我介绍要简洁,条理要清晰

6、接口之间有依赖时怎么处理?

可以用关联,我之前在公司对人力资源管理系统进行接口测试时,其中登陆、员工管理模块都有依赖关系,我遇到后,使用postman 工具,先获取上一个接口的响应,然后保存到全局变量,接着在下一个接口中调用保存的变量,从而实现关联来解决接口之间的依赖关系。

代码实现也是将response响应消息中的值保存为变量,在下一次的接口中调用

7、如何判断接口测试的结果 是成功还是失败?

断言接口的返回数据和预期是否一致

如果需要更新数据库的数据,需要到数据库中查询数据是否和修改的一致

数据库中修改完成还需要查询一下,看看是否能够正常的查询

8、常用的接口请求方式和区别

常见的接口请求方式:GET POST PUT delete

GET:用于查询

POST:用于新增

PUT 用于修改

DELETE: 用于删除

其中 GET 和POST有显著的区别:

  • GET 没有请求体,它的请求参数直接放在了url中,post 是有请求体的
  • GET请求相对来讲不安全,因为参数直接暴露了,post将数据放在了请求体中,相对来讲安全
  • GET请求的数据包比POST的小
  • get请求支持的编码格式没有post多

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
的结果 是成功还是失败?

断言接口的返回数据和预期是否一致

如果需要更新数据库的数据,需要到数据库中查询数据是否和修改的一致

数据库中修改完成还需要查询一下,看看是否能够正常的查询

8、常用的接口请求方式和区别

常见的接口请求方式:GET POST PUT delete

GET:用于查询

POST:用于新增

PUT 用于修改

DELETE: 用于删除

其中 GET 和POST有显著的区别:

  • GET 没有请求体,它的请求参数直接放在了url中,post 是有请求体的
  • GET请求相对来讲不安全,因为参数直接暴露了,post将数据放在了请求体中,相对来讲安全
  • GET请求的数据包比POST的小
  • get请求支持的编码格式没有post多

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-CEgSkYCk-1713694771171)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/1016642
推荐阅读
相关标签
  

闽ICP备14008679号