自动化测试面试题总结:
1、你会封装自动化测试框架吗?
这个问得最多,很多公司直接写在招聘要求中。
自动化框架主要的核心框架就是分层+PO模式:
分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层。
然后再加上日志处理模块,ini配置文件读取模块,pytest+ddt数据驱动模块,jenkins持续集成模式组成。
软件测试面试题:https://www.bilibili.com/video/BV1Lq4y137aR/
2、如何把自动化测试在公司中实施并推广起来的?
项目组调研选择自动化工具并开会演示demo案例,我们主要是演示selenium和robotframework两种;
搭建自动化测试框架,在项目中逐步开展自动化;
把该项目的自动化流程、框架固化成文档;
推广到公司的其它项目组应用;
3、请描述一下自动化测试流程?
编写自动化测试计划;
设计自动化测试用例;
编写自动化测试框架和脚本;
调试并维护脚本;
无人值守测试;
后期脚本维护(添加用例、开发更新版本);
4、自动化测试用例如何编写?
以下答案二选一即可:
1.用例是自动化测试工程师自己设计的,一般刚开始已基本业务流程为主(登录–完成一个业务–退出)
2.从系统测试用例中进行筛选或由业务工程师提供
5、上一个项目中自动化测试的执行策略?
上一个项目中是定时执行的,设置的执行时间是晚上12点,执行完毕后会自动发送邮件通知
6、自动化测试发现BUG多吗?
不多,因为之前项目组是把已经测试通过的基本功能再进行自动化脚本编写和在后续版本执行自动化测试,它主要是保证已经测试通过的功能在新版本更新后没有问题。
7、你觉得自动化测试的价值在哪里?你们公司为什么要做自动化测试?
引用自动化测试之后,能代替大量繁琐的回归测试工作,把业务测试人员解放出来,既而让业务测试人员把精力集中在复杂的业务功能模块上,自动化测试一般是对稳定下来的功能进行自动化,保证不会因为产品的更新导致之前稳定下来的功能出现BUG
8、自动化测试有误报过bug吗?产生误报怎么办?
有误报过,有时候自动化测试报告中显示发现了bug,实际去通过手工测试去确认又不存在该bug。
误报原因一般是:
1.元素定位不稳定,需要尽量提高脚本的稳定性;
2.开发更新了页面但是测试没有及时更新维护!
9、自动化测试过程中,你遇到了哪些问题,是如何解决的?
1.频繁地变更页面,经常要修改页面对象类里面的代码
2.自动化测试偶尔出现过误报
3.自动化测试结果出现覆盖的情况:Jenkins根据时间建立文件夹
4.自动化测试代码维护比较麻烦
5.自动化测试进行数据库对比数据
10、在执行脚本过程,如何实现当前元素高亮显示?
这个其实就是利用javaScript去修改当前元素的边框样式来到达高亮显示的效果,
11、如果一个元素无法定位,你一般会考虑哪些方面的原因?
1.页面加载元素过慢,加等待时间
2.页面有frame框架页,需要先跳转入frame框架再定位
3.可能该元素是动态元素,定位方式要优化,可以使用部分元素定位或通过父节点或兄弟节点定位。
4.可能识别了元素,但是不能操作,比如元素不可用,不可写等。需要使用js先把前置的操作完成,
12、元素定位方法你熟悉的有哪些?
id name classname link_text css xpath
13、遇到frame框架页面怎么处理?
先用driver.switch_to.frame()跳转进去frame,
然后再操作页面元素,
操作完后使用driver.swith_to.default_content()跳转出来
14、遇到alert弹出窗如何处理?
使用driver.switch_to.alert方法先跳转到alert弹出窗口。
然后再通过accept点击确定按钮,通过dismiss点击取消难,通过text()获得弹出窗口的文本。
15、如何处理多窗口?
这个多窗口之间跳转处理,我们在项目中也经常遇到。就是,当你点击一个链接,这个链接会在一个新的tab打开,然后你接下来要在新tab打开的页面查找元素,
1.我们在点击链接前使用driver.current_window_handle获得当前窗口句柄。
2.再点击链接。点击后通过driver.window_handles获得所有窗口的句柄,
3.然后再循环找到新窗口的句柄,然后再通过driver.switch_to.window()方法跳转到新的窗口。
16、怎么验证元素是enable/disabled/checked状态?
定位元素后:分别通过isEnabled(),isSelected(),isDisplayed()三个方法进行判断。
17、在Selenium中如何实现截图,如何实现用例执行失败才截图?
在Selenium中提供了一个get_screenshot_as_file()的方法来截图的,一般结合try/except捕获异常时使用,进行错误截图。
18、如何实现文件上传?
定位元素后,直接使用send_keys()方法设置就行,参数为需要上传的文件的路径。
19、你写的测试脚本能在不同浏览器上运行吗?
当然可以,我写的用例可以在在IE,火狐和谷歌这三种浏览器上运行。实现的思路是封装一个方法,分别传入一个浏览器的字符串,如果传入IE就使用IE,如果传入FireFox就使用FireFox,如果传入Chrome就使用Chrome浏览器,并且使用什么浏览器可以在总的ini配置文件中进行配置。
需要注意的是每个浏览器使用的驱动不一样。
20、什么是PO模式,为什么要使用它?
PO是Page Object 模式的简称,它是一种设计思想,意思是,把一个页面,当做一个对象,页面的元素和元素之间操作方法就是页面对象的属性和行为,PO模式一般使用三层架构,分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层。
下面是我整理的2023年最全的软件测试工程师学习知识架构体系图 |
学会从层层困惑中看到一丝希望,学会从重重困难中找到一缕曙光,学会从阵阵郁闷中发现一份悠扬,学会从种种坎坷中获得一些力量。
最好的生活方式,是和一群志同道合的人,一起奔跑在理想的路上!回头有一路的故事,低头有坚定的脚步,抬头有清晰的远方。
永远不要沉溺在安逸里得过且过,能给你遮风挡雨的,同样能让你不见天日,只有让自己更加强大,才能真正撑起一片天。