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

img
img

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

需要这份系统化的资料的朋友,可以戳这里获取

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

因为我们项目的用户活动和三方合作平台比较多,一般半个月或者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多

9、发送HTTP请求时,传递参数的途径有哪些?

10、自动化测试多久构建一次? 一天构建两次

11、使用工具和代码 实现接口自动化测试的区别

工具:使用简单,但是不灵活,可以应用一些非定制化需求的测试

代码: 非常灵活,可以定制化

12、如何定位前后端bug?????????????????????????

面试官:修改了参数后 点击提交 没有反应,这个时候怎么定位时前端还是后端的问题?

要用fidder抓包来看

看一下前端是否发送的正确的请求消息,如果没有发送或者发送了错误的请求消息 则是前端问题

如果发送了正确的请求消息:但是服务器没有相应数据返回,则是服务端问题

如果发送了正确请求消息,服务端响应了 但是相应错了,这个还是服务端的问题

如果发送了正确的请求,服务端也相应了,相应也是正确的,这个就是前段问题

APP测试
1、什么是Android四大组件?
2、当点击APP图标启动程序,说明将要发生那些过程?
3、APP测试的内容主要包括哪些,如何开展?
4、Android的兼容性测试都考虑哪些内容?
5、针对App的安装功能,写出测试点?
6、常用的ADB命令?
7、在查看logcat命令日志时候怎么内容保存到本地文件?
8、App崩溃(闪退), 可能是什么原因导致的?
9、如何测试监测app的内存使用、CPU 消耗、流量使用情况?
10、弱网测试怎么测
11、"//*contains(@text.“登录” )]”是什么意思
12、Appium都有哪些启动方式

性能测试
1、性能测试有哪些分类
2、你认为性能测试的目的是什么?做好性能测试的工作的关键是什么?
3、服务端性能分析都从哪些角度来进行?
4、如何理解压力测试,负载测试以及性能测试?
5、如何判断是否有内存泄漏及关注的指标?
6、描述软件产生内存泄露的原因以及检查方式。(可以结合- 种开发语言进行描述)
7、简述什么是值传递,什么是地址传递,两者区别是什么?
8、什么是系统瓶颈?

LoadRunner
1、LoadRunner的工作原理是什么?
2、LoadRunner分哪三部分?
3、LoadRunner进行测试的流程?
4、什么是并发?在lordrunner中,如何进行并发的测试?集合点失败了会怎么样?
5、11.1.5LoadRunner脚本如何录制和编写?
6、LoadRunner中的Think Time有什么作用?
7、在搜索引擎中输入汉字就可以解析到对应的域名,请问如何用LoadRunner进行测试?
8、一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?
9、客户交付一个性能测试项目,请阐述你的实施流程。
10、解释5个常用的性能指标的名称与具体含义。
11、写出5个Loadrunner中常用函数,并对其中2个举例说明用法。
12、简述LoadRunner的工作原理?
13、什么是集合点?设置集合点有什么意义? LoadRunner 中设置集合点的函数是哪个?
14、HTML-based script与URL-based script 的脚本有什么区别?
15、如何设置LaodRunner才能让集合点只对一半的用户生效? ’
16、LoadRunner的Controller组件中Pacing参数的作用是什么?
17、LoadRunner中如何监控Windows资源?
18、如果让QALoad模拟LoadRunner中只对关注的性能点进行迭代测试,你有什么好方法?
19、什么是负载测试?
20、什么是性能测试?
21、说明负载测试过程?
22、我们什么时候做负载和性能测试?
23、什么是LoadRunner的组件?

人力资源
1、你的测试职业发展是什么?你自认为做测试的优势在哪里?
2、你找工作时,最重要的考虑因素为何?
3、为什么我们应该录取你?
4、请谈谈你个人的最大特色。
5、个测试工程师应具备那些素质和技能?
6、还有问一下你是怎样保证软件质量的,也就是说你觉得怎样才能最大限度地保证软件质…
7、为什么选择测试这行?
8、为什么值得他们公司雇用?

img
img

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

需要这份系统化的资料的朋友,可以戳这里获取

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

23、什么是LoadRunner的组件?

人力资源
1、你的测试职业发展是什么?你自认为做测试的优势在哪里?
2、你找工作时,最重要的考虑因素为何?
3、为什么我们应该录取你?
4、请谈谈你个人的最大特色。
5、个测试工程师应具备那些素质和技能?
6、还有问一下你是怎样保证软件质量的,也就是说你觉得怎样才能最大限度地保证软件质…
7、为什么选择测试这行?
8、为什么值得他们公司雇用?

[外链图片转存中…(img-YcwHpkHK-1715245034888)]
[外链图片转存中…(img-yztTYDWk-1715245034889)]

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

需要这份系统化的资料的朋友,可以戳这里获取

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

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值