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

前言

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

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

面试题列表

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定位有哪几种方式?

  1. 一,python 常用的8种定位方法

  2. 1,使用 ID定位    driver.find_element_by _id('ID 值')

  3. driver.find_element(by ='id',value ='ID值')

  4. 2,使用 name定位单个元素 driver.find_element_by_name('name值')

  5. driver.find_element(by='name',value='name值')

  6. 定位多个元素 driver.find_elements_by_name('name值')

  7. driver.find_elements(by='name',value='name值')

  8. 3,使用 class name定位单个元素 driver.find_element_by_class_name('class 属性值')

  9. driver.find_element(by='class name',value='class 属性值')

  10. 定位多个元素 driver.find_elements_by_class_name('class 属性值')

  11. driver.find_elements(by='class name',value='class 属性值')

  12. 4,使用 标签名称定位单个元素 driver.find_element_by_tag_name('标签名称')

  13. driver.find_element(by='tag name',value ='标签名称')

  14. 定位多个元素 driver.find_elements_by_tag_name('标签名称')

  15. driver.find_elements(by='tag name',value ='标签名称')

  16. 5,使用 链接的全部文字定位 driver.find_element_by_link_text('链接全部文字内容')

  17. driver.find_element(by='link text',value='链接全部文字内容')

  18. 定位多个元素 driver.find_elements_by_link_text('链接全部文字内容')

  19. driver.find_elements(by='link text',value='链接全部文字内容')

  20. 6,使用 部分链接文字定位 driver.find_element_by_partial_link_text('链接的部分文字')

  21. driver.find_element(by='partial link text',value ='链接的部分文字')

  22. 定位多个元素 driver.find_elements_by_partial_link_text('链接的部分文字')

  23. driver.find_elements(by='partial link text',value ='链接的部分文字')

  24. 7,使用 XPath 定位 driver.find_element_by_xpath('xpath 定位表达式')

  25. driver.find_element(by='xpath',value ='xpath定位表达式')

  26. 定位多个元素 driver.find_elements_by_xpath('xpath 定位表达式')

  27. driver.find_elements(by='xpath',value ='xpath定位表达式')

  28. 8,使用 CSS方式定位 driver.find_element_by_css_selector('CSS定位表达式')

  29. driver.find_elements(by='css selector',value='CSS定位表达式')

  30. 定位多个元素 driver.find_elements_by_css_selector('CSS定位表达式')

  31. driver.find_elements_by_css_selector('CSS定位表达式')

  32. 二,XPath 定位的必杀技 定位表达式

  33. 1, 使用绝对路径定位元素 /html/body/div/input[@value = '查询'] 不建议使用

  34. 2, 使用相对路径定位元素 //input[@value = '查询']

  35. 3, 使用索引号定位元素 //input[2] //div[last()]/a 最后一个div元素下的a标签

  36. //div[last()-1]/a 倒数第二个div元素下的a标签

  37. //div/input[position()<2] div元素下input的位置序列号小于2的input标签

  38. 4, 使用页面元素多个属性值定位元素 //div[@name='div1' and @value = 'div2']/input[@name='div1input']

  39. 5, 使用模糊属性值定位元素 //img[starts-with(@alt,'div1')] 查找属性alt的属性值以div1开始的页面元素

  40. //img[contains(@alt,'img')] 查找属性alt的属性值包含img 的页面元素

  41. 6, 使用XPath轴定位元素 //div[@name='div1']/parent::input 查找name属性值为div1的div元素的父级input元素

  42. //div[@name='div1']/child::img 查找name属性值为div1的div元素的子级img元素

  43. //div[@name='div1']/following::img 查找name属性值为div1的div元素后面的所有img元素

  44. //div[@name='div1']/following-sibling::img 查找name属性值为div1的div元素后面所有兄弟img元素

  45. //div[@name='div1']/preceding::img 查找name属性值为div1的div元素前面的所有img元素

  46. //div[@name='div1']/preceding-sibling::img[1] 查找name属性值为div1的div元素前面的所有兄弟中的第一个img元素

  47. //div[@name='div1']/ancestor::img 查找name属性值为div1的div元素的所有上级的img元素

  48. //div[@name='div1']/descendant::img 查找name属性值为div1的div元素的所有下层的img元素

  49. 7, 使用页面元素的文本定位元素 //a[contains(text(),'百度')] //a[text()='搜狐']

  50. 8, 使用XPath 运算符定位元素 //div[a>9] 子元素中有a元素,文本值>9的div元素

  51. //div[a<10 and span =13] 子元素中有a元素,文本值>9 同时子元素span文本值=13的div元素

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

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

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

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

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

  1. 定位到要悬停的元素

  2. move = driver.find_element_by_id("xx")

  3. 对定位到的元素执行悬停操作

  4. ActionChains(driver).move_to_element(move).perform()

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

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

如图: 

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

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

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

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

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

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

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

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

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

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

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

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

  • 8
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值