软件测试面试题分享,刷完这套八股文,你的offer就稳了

2023-11-30 05:28

本文主要是介绍软件测试面试题分享,刷完这套八股文,你的offer就稳了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

把最近朋友及自己遇到的面试题记录下来,并写上自己的答案仅供大家参考,看不懂的可以【点击文末小卡片】,大家一起交流学习。

另外,面试官的问题,大部分都是看你的简历提问,所以大家不用纠结为什么自己没有被问到这些问题,分享这些面试题,只是让大家对照下,自己简历当中是否提到类似的技术,做到有备无患。

在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接【点击文末小卡片免费领取资料文档】

软件测试视频教程观看处:

2023最新【软件测试面试300问】面试八股文教程,涵盖自动化测试/接口测试/性能测试/测试开发等内容

面试题列表

1.liunx查询日志有哪些命令,筛选关键字怎么筛选?

答:cat、tail 、head、less等等  筛选关键字可以用grep,譬如cat 日志文件 | grep "关键字"。 

2.sql删除有两种,知道有什么区别吗?

答:truncat、delete。

truncate和delete的主要区别:

delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表空间要足够大,需要手动提交(commit)操作才能生效,可以通过rollback撤消操作。delete可根据条件删除表中满足条件的数据,如果不指定where子句,那么删除表中所有记录。delete语句不影响表所占用的extent,高水线(high watermark)保持原位置不变。truncate是DDL,会隐式提交,所以,不能回滚,不会触发触发器。truncate会删除表中所有记录,并且将重新设置高水线和所有的索引,缺省情况下将空间释放到minextents个extent,除非使用reuse storage。不会记录日志,所以执行速度很快,但不能通过rollback撤消操作(如果一不小心把一个表truncate掉,也是可以恢复的,只是不能通过rollback来恢复)。对于外键(foreignkey )约束引用的表,不能使用 truncate table,而应使用不带 where 子句的 delete 语句。truncatetable不能用于参与了索引视图的表。

3.sql里 having  和where条件有了解过吗?

having和where 区别

1)一般情况下,WHERE 用于过滤数据行,而 HAVING 用于过滤分组。

2)WHERE 查询条件中不可以使用聚合函数,而 HAVING 查询条件中可以使用聚合函数。

3)WHERE 在数据分组前进行过滤,而 HAVING 在数据分组后进行过滤 。

4)WHERE 针对数据库文件进行过滤,而 HAVING 针对查询结果进行过滤。也就是说,WHERE 根据数据表中的字段直接进行过滤,而 HAVING 是根据前面已经查询出的字段进行过滤。

5)WHERE 查询条件中不可以使用字段别名,而 HAVING 查询条件中可以使用字段别名

4.连表查询知道怎么做吗,左右表连接有什么区别?

左连接和右连接区别为:语法公式不同、基础表不同、结果集不同。

一、语法公式不同

1、左连接:左连接的关键字是left join,语法公式为select *from dave a left join bl b on a .id=b .id。

2、右连接:右连接的关键字是right join,语法公式为select *from dave a right join bl b on a .id=b .id。

二、基础表不同

1、左连接:左连接的基础表为left join左侧数据表。

2、右连接:右连接的基础表为right join右侧数据表。

三、结果集不同

1、左连接:左连接的结果集为left join左侧数据表中的数据,再加上left join左侧与右侧数据表之间匹配的数据。

2、右连接:右连接的结果集为rightjoin右侧数据表中的数据,再加上rightjoin左侧与右侧数据表之间匹配的数据。

5.python定位有哪几种方式?


一,python 常用的8种定位方法1,使用 ID定位           driver.find_element_by _id('ID 值')driver.find_element(by ='id',value ='ID值')2,使用 name定位单个元素    driver.find_element_by_name('name值')driver.find_element(by='name',value='name值')定位多个元素     driver.find_elements_by_name('name值')driver.find_elements(by='name',value='name值')3,使用 class name定位单个元素   driver.find_element_by_class_name('class 属性值')driver.find_element(by='class name',value='class 属性值')定位多个元素         driver.find_elements_by_class_name('class 属性值')driver.find_elements(by='class name',value='class 属性值')4,使用 标签名称定位单个元素    driver.find_element_by_tag_name('标签名称')driver.find_element(by='tag name',value ='标签名称')定位多个元素       driver.find_elements_by_tag_name('标签名称')driver.find_elements(by='tag name',value ='标签名称')5,使用 链接的全部文字定位    driver.find_element_by_link_text('链接全部文字内容')driver.find_element(by='link text',value='链接全部文字内容')定位多个元素      driver.find_elements_by_link_text('链接全部文字内容')driver.find_elements(by='link text',value='链接全部文字内容')6,使用 部分链接文字定位    driver.find_element_by_partial_link_text('链接的部分文字')driver.find_element(by='partial link text',value ='链接的部分文字')定位多个元素    driver.find_elements_by_partial_link_text('链接的部分文字')driver.find_elements(by='partial link text',value ='链接的部分文字')7,使用 XPath 定位       driver.find_element_by_xpath('xpath 定位表达式')driver.find_element(by='xpath',value ='xpath定位表达式')定位多个元素   driver.find_elements_by_xpath('xpath 定位表达式')driver.find_elements(by='xpath',value ='xpath定位表达式')8,使用 CSS方式定位     driver.find_element_by_css_selector('CSS定位表达式')driver.find_elements(by='css selector',value='CSS定位表达式')定位多个元素   driver.find_elements_by_css_selector('CSS定位表达式')driver.find_elements_by_css_selector('CSS定位表达式')二,XPath 定位的必杀技 定位表达式1, 使用绝对路径定位元素    /html/body/div/input[@value = '查询']    不建议使用2, 使用相对路径定位元素   //input[@value = '查询']3, 使用索引号定位元素     //input[2]    //div[last()]/a   最后一个div元素下的a标签       //div[last()-1]/a                倒数第二个div元素下的a标签//div/input[position()<2]        div元素下input的位置序列号小于2的input标签4, 使用页面元素多个属性值定位元素   //div[@name='div1' and @value = 'div2']/input[@name='div1input']5, 使用模糊属性值定位元素         //img[starts-with(@alt,'div1')]   查找属性alt的属性值以div1开始的页面元素//img[contains(@alt,'img')]     查找属性alt的属性值包含img 的页面元素6, 使用XPath轴定位元素     //div[@name='div1']/parent::input 查找name属性值为div1的div元素的父级input元素//div[@name='div1']/child::img    查找name属性值为div1的div元素的子级img元素//div[@name='div1']/following::img   查找name属性值为div1的div元素后面的所有img元素  //div[@name='div1']/following-sibling::img  查找name属性值为div1的div元素后面所有兄弟img元素//div[@name='div1']/preceding::img          查找name属性值为div1的div元素前面的所有img元素 //div[@name='div1']/preceding-sibling::img[1]   查找name属性值为div1的div元素前面的所有兄弟中的第一个img元素//div[@name='div1']/ancestor::img       查找name属性值为div1的div元素的所有上级的img元素//div[@name='div1']/descendant::img       查找name属性值为div1的div元素的所有下层的img元素7, 使用页面元素的文本定位元素         //a[contains(text(),'百度')]     //a[text()='搜狐']8, 使用XPath 运算符定位元素          //div[a>9] 子元素中有a元素,文本值>9的div元素//div[a<10 and span =13]  子元素中有a元素,文本值>9 同时子元素span文本值=13的div元素

6.python_UI自动化,有三个等待方式,知道有什么区别吗?

  • sleep():强制等待,设置固定休眠时间。后脚本的执行过程中执行 sleep()后线程休眠,而另外两种线程不休眠。

  • implicitly_wait():隐式等待,是设置的全局等待。设置等待时间,是对页面中的所有元素设置加载时间,如果超出了设置时间的则抛出异常。隐式等待可以理解成在规定的时间范围内,浏览器在不停的刷新页面,直到找到相关元素或者时间结束。

  • WebDriverWait():显示等待,是针对于某个特定的元素设置的等待时间,在设置时间内,默认每隔一段时间检测一次当前页面某个元素是否存在,如果在规定的时间内找到了元素,则直接执行,即找到元素就执行相关操作,如果超过设置时间检测不到则抛出异常。默认检测频率为0.5s,默认抛出异常为:NoSuchElementException。

7.python里的鼠标悬浮,知道怎么做吗?

定位到要悬停的元素
move = driver.find_element_by_id("xx")
对定位到的元素执行悬停操作
ActionChains(driver).move_to_element(move).perform()

8.之前的接口自动化是用什么做的?

9.给你一个普通接口,你会怎么测?

如图: 

10.第二个项目,说说一下你在里面的工作内容?

基本的功能测试必须说,如果做过自动化、性能或开发提效工具的工作,那就详细说下细节,这是你区别其他应聘者的闪光点,也是你征服面试官,谈薪的资本,即使没有,编也要编一个。

11.你python和java哪个个熟悉一点?

看自己对哪个熟悉吧,建议大家在学习语言的同时,多看看相关的八股文

12.你觉得你有什么优势?

因人而异,特别说明一点,很多人说到自己的优势,无非就是,细心、负责、有耐心,沟通能力好,巴拉巴拉一大堆,我是面试官,我都觉得很假,很恶心。

所以个人建议,大家在说自己的优势的同时,尽量举例说明,而不是干巴巴的猛夸自己。

例如:我个人具备一定的开发水平,特别善于总结项目痛点,运用自己的代码知识,开发过几款提效工具,比如在某某项目中,某某某业务前置流程较长,只能通过模拟用户页面操作,走完前置流程需要10分钟左右,效率比较低。为此,我通过抓包的方式,梳理了这条业务线涉及到的接口、接口之间关联关系、数据流转和相应的数据库、表。通过py或java开发出一款可以自动造数据的工具,测试小伙伴只要调用我的测试工具接口,传入相关的参数,在1分钟左右,就可以造出符合条件的测试数据,大大提高了测试人员造数据的效率。

你看夸自己的同时,还能举例说明,这样才有说服力,才能征服面试官。

最后

PS:这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源,博主也收集不少进阶自动化的资源,从理论到实战,知行合一才能真正的掌握。全套内容已经打包到网盘,内容总量接近500个G。【点击文末小卡片免费领取】

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。

这篇关于软件测试面试题分享,刷完这套八股文,你的offer就稳了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/435790

相关文章

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【专题】2024飞行汽车技术全景报告合集PDF分享(附原数据表)

原文链接: https://tecdat.cn/?p=37628 6月16日,小鹏汇天旅航者X2在北京大兴国际机场临空经济区完成首飞,这也是小鹏汇天的产品在京津冀地区进行的首次飞行。小鹏汇天方面还表示,公司准备量产,并计划今年四季度开启预售小鹏汇天分体式飞行汽车,探索分体式飞行汽车城际通勤。阅读原文,获取专题报告合集全文,解锁文末271份飞行汽车相关行业研究报告。 据悉,业内人士对飞行汽车行业

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

一些其他面试题

阿里二面:那你来说说定时任务?单机、分布式、调度框架下的定时任务实现是怎么完成的?懵了。。_哔哩哔哩_bilibili 1.定时算法 累加,第二层每一个格子是第一层的总时间400 ms= 20 * 20ms 2.MQ消息丢失 阿里二面:高并发场景下引进消息队列有什么问题?如何保证消息只被消费一次?真是捏了一把汗。。_哔哩哔哩_bilibili 发送消息失败

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo

java常用面试题-基础知识分享

什么是Java? Java是一种高级编程语言,旨在提供跨平台的解决方案。它是一种面向对象的语言,具有简单、结构化、可移植、可靠、安全等特点。 Java的主要特点是什么? Java的主要特点包括: 简单性:Java的语法相对简单,易于学习和使用。面向对象:Java是一种完全面向对象的语言,支持封装、继承和多态。跨平台性:Java的程序可以在不同的操作系统上运行,称为"Write once,

分享5款免费录屏的工具,搞定网课不怕错过!

虽然现在学生们不怎么上网课, 但是对于上班族或者是没有办法到学校参加课程的人来说,网课还是很重要的,今天,我就来跟大家分享一下我用过的几款录屏软件=,看看它们在录制网课时的表现如何。 福昕录屏大师 网址:https://www.foxitsoftware.cn/REC/ 这款软件给我的第一印象就是界面简洁,操作起来很直观。它支持全屏录制,也支持区域录制,这对于我这种需要同时录制PPT和老师讲

【Kubernetes】常见面试题汇总(三)

目录 9.简述 Kubernetes 的缺点或当前的不足之处? 10.简述 Kubernetes 相关基础概念? 9.简述 Kubernetes 的缺点或当前的不足之处? Kubernetes 当前存在的缺点(不足)如下: ① 安装过程和配置相对困难复杂; ② 管理服务相对繁琐; ③ 运行和编译需要很多时间; ④ 它比其他替代品更昂贵; ⑤ 对于简单的应用程序来说,可能不

【附答案】C/C++ 最常见50道面试题

文章目录 面试题 1:深入探讨变量的声明与定义的区别面试题 2:编写比较“零值”的`if`语句面试题 3:深入理解`sizeof`与`strlen`的差异面试题 4:解析C与C++中`static`关键字的不同用途面试题 5:比较C语言的`malloc`与C++的`new`面试题 6:实现一个“标准”的`MIN`宏面试题 7:指针是否可以是`volatile`面试题 8:探讨`a`和`&a`

Laravel 面试题

PHP模块 PHP7 和 PHP5 的区别,具体多了哪些新特性? 性能提升了两倍 结合比较运算符 (<=>) 标量类型声明 返回类型声明 try…catch 增加多条件判断,更多 Error 错误可以进行异常处理 匿名类,现在支持通过new class 来实例化一个匿名类,这可以用来替代一些“用后即焚”的完整类定义 …… 了解更多查看文章底部链接 PHP7 新特性 为什么 PHP