【2023金三银四必备】20道经典自动化测试面试题

本文列举了20道常见的自动化测试面试题目,涵盖了Web自动化的基本元素定位方法、Selenium的使用、等待元素加载的方式以及处理复杂情况如动态元素、验证码和弹窗的策略。同时,文章还讨论了PageObject设计模式和自动化测试的执行策略,强调了自动化测试在软件测试工程师岗位的重要性。

概述

觉得自动化测试很难?

是的,它确实不简单。但是学会它,工资高啊!

担心面试的时候被问到自动化测试?

嗯,你担心的没错!确实会被经常问到!

现在应聘软件测试工程师的岗位,几乎所有的公司都要求会自动化测试!那么,在面试的时候哪些问题会被面试官经常问到?哪些问题是面试官真正关心的?

下面通过20道经典自动化测试面试题。让你能够在面试的时候轻松应对,也让你在学习自动化测试的时候明白应该关注哪些内容,而不仅仅只是会调用接口模拟输入和点击操作!

基础题

1、web自动化时,定位元素的方式有哪些?

答:web自动化有8种元素定位方式。与name有关的有3种:name、class_name、tag_name与link相关的有两种:link_text、partitial_link_text。还有一种是用id来定位。剩下两种是xpath和css定位,它们用元素路径来定位的。

如果元素存在id属性,我一定使用id,因为简单方便,定位最快。其次是Xpath和css,因为很多情况下html标签没有id属性。

2、如何去定位属性动态变化的元素?

答:先去找该元素不变的属性,要是都变,那就找不变的父元素,用层级定位(以不变应万变)

3、启动浏览器的时候用到的是哪个webdriver协议?

答:http协议

4、XPath中使用单斜杠和双斜杠有什么区别?

答:单斜杠表示用绝对路径定位,双斜杠表示用相对路径定位。绝对路径就是从html根目录开始表示的元素路径。相对路径就是选择一个元素作为参考点,相对这个参考点元素开始表示的元素路径。

5、Selenium中有哪些验证点?

答:Selenium主要有3种验证点

① 检查页面标题

② 检查某些文字

③ 检查某些元素(文本框,下拉菜单,表等)

6、如何清除中文本框的内容?

答:使用clear()方法

driver.find_element().clear()

7、如何模拟浏览器的前后移动?

答:

driver.back() # 后退

driver.forward() # 前进

8、find_element()和find_elements()方法有什么区别

答:两个都是查找元素的方式

findelement()查找一个页面元素,只会返回WebElement对象

findelements()查找页面是所有符合匹配的元素,返回元素集合

9、如何判断case是否通过?

答:使用断言,与预期结果比较

10、等待元素加载的方式有几种?

答:有3种,强制等待、隐式等待、显式等待

进阶题

1、定位不到元素怎么办?

答: 

① 检查日志,确认当前页面有没有这个元素

② 如果有,检查定位方式有没有写错

③ 如果还没解决,检查元素是否在内联框里 如果在内联框里,需要先切换到内联框里再定位元素。操作完元素记得退出内联框

2、如果遇到验证码,需要这么处理?

答:① 让开发取消测试环境的验证码

② 让开发设置万能验证码(使用复杂的其他人无法猜到的验证码)

③ 如果是图像验证码,可以使用图像识别技术(难度大,准确率不高)

④ 先手动输入登录系统,保留登录成功的cookie。通过cookie绕过验证码

⑤ 让开发给验证码的数据库权限,从数据库中获取

3、遇到弹窗无法导致无法继续下一步操作怎么办?

答:

① 如果是JavaScript弹框,先通过switch_to.alert定位到JS弹框,再调用accept、dismiss等方法处理JS弹框

② 如果是系统某个操作步骤的提示框,可以点击关闭按钮,或者按提示操作即可

4、怎么切换浏览器窗口?

答:可以通过window_handles方法获取所有窗口的句柄。然后遍历句柄,使用switch_to.window()方法切换窗口,通过窗口title判断是否是目标窗口

例如,

handels = driver.window_handles
for handle in handles:
    driver.switch_to.window(handle)
if driver.title=="千锋教育":
# 如果是目标窗口,退出循环
        break

5、怎么实现拖拽元素的操作?

答:ActionChains类提供了模拟鼠标操作,如双击,右击,拖拽,悬停等操作

# 先导入 ActionChains类,并创建对象
from selenium.webdriver.common.action_chains import ActionChains
actions = ActionChains(driver)
# 具体操作,将动作加入任务列表
source = driver.find_element()
target = driver.find_element()
action.drag_and_drop(source,target) # 拖拽
# 处理任务列表
action.perform() # 依次执行任务列表中的所有操作

设计思路

1、什么是page object设计模式? 

答:

① 通俗来讲,把每个页面当成一个页面对象,页面层写定位元素方法和页面操作方法

② 用例层从页面层调用操作方法,写成用例

③ 可以做到定位元素与脚本的分离

2、page object设置模式中,是否需要在page里定位的方法中加上断言?

答:不需要,page页只做元素抓取和操作方法

3、你的自动化用例的执行策略是什么?

答:

① 自动化测试用例是用来监控的。集成到jenkins,创建定时任务定时执行;

② 有些用例在产品上线前必须回归。jenkins上将任务绑定到开发的build任务上,触发执行;

③ 有些用例不需要经常执行。jenkins创建一个任务,需要执行的时候人工构建即可。

4、什么是数据驱动框架?它与关键字驱动框架有什么不同?

答:数据驱动框架中,测试用例逻辑驻留在测试脚本中。测试数据被分离并保存在测试脚本之外。测试数据是从外部文件(如Excel)中读取的,并被加载到测试脚本中的变量中。变量用于输入值和验证值。

关键字驱动需要开发数据表和关键字。它们独立于执行它们的测试自动化工具。可以使用或不使用应用程序来设计测试。在关键字驱动的测试中,被测试的应用程序的功能记录在一个表格中,以及每个测试的分步说明。

5、你觉得自动化测试最大的缺陷是什么?

答:

① 不稳定

② 可靠性不强

③ 不易维护

④  成本与收益


 今天的分享就到此结束了,如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

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

### 软件测试面试题及答案 #### 数据和数据库完整性测试 在评估应用程序的数据处理能力时,确保数据的一致性和准确性至关重要。这涉及到验证输入到系统的数据能否被正确存储、检索以及更新而不会丢失或损坏[^1]。 #### 功能测试 此类型的测试旨在确认各个功能模块按照预期工作。例如,在电子商务网站上购买商品的功能应该能够成功完成交易流程中的每一步骤,包括选择产品、填写配送信息直至支付过程结束。 #### 用户界面测试 用户体验对于任何应用的成功都非常重要。通过模拟真实用户的操作行为来进行UI/UX方面的审查可以发现潜在的设计缺陷并提高产品的易用性水平。 #### 性能评测与负载测试 为了衡量系统在不同条件下的响应速度和服务质量,通常会实施性能评测;而在高并发情况下考察服务器承受压力的能力则属于负载测试范畴。这类活动有助于识别瓶颈所在从而优化资源配置策略以满足业务需求。 #### 安全性和访问控制测试 保护敏感资料免受未授权访问是至关重要的。因此需要定期开展针对权限管理机制的有效性检验——即检查只有经过适当认证后的合法用户才能获取特定资源,并且防止内部人员滥用职权造成的信息泄露风险。 #### 故障转移和恢复测试 当发生意外中断事件(如硬件故障)之后,快速恢复正常运行状态是一项基本要求。为此设计专门方案用于演练灾难场景下应急措施的效果评价就显得尤为必要了。 #### 配置测试 不同的环境设置可能会影响程序的表现形式及其稳定性表现。所以有必要针对多种部署模式展开全面细致的研究分析以便及时调整参数设定达到最佳兼容效果。 #### 加密测试 随着网络安全威胁日益严峻,保障通信链路的安全传输成为不可忽视的任务之一。这就意味着要对采用的各种加密算法进行严格检测确保其强度足以抵御外部攻击者破解企图的同时不影响正常使用体验。 #### 可用性测试 从最终消费者的角度出发考量整个交互过程是否流畅自然也是不可或缺的一个环节。它不仅限于页面加载时间长短这样的硬指标还包括视觉呈现美观度在内的软因素共同作用决定着整体满意度得分高低。 #### 版本验证测试 每当有新的迭代发布之前都要经历一轮详尽的质量把控工序来保证新旧特性之间不存在冲突矛盾之处并且所有已知问题均已得到妥善解决才允许上线推广给广大受众群体试用反馈意见收集整理待改进事项清单持续完善产品质量管理体系循环往复不断提升竞争力优势地位稳固保持行业领先水平不断超越自我追求卓越品质永无止境地探索未知领域创造无限可能性未来可期。 #### 文档测试 良好的技术文档可以帮助开发者更好地理解项目的架构和技术细节,同时也方便后续维护和支持工作的顺利开展。因此,应当仔细审核各类手册指南是否存在错误遗漏等问题影响实际工作效率提升。 ```python import unittest class TestExample(unittest.TestCase): def test_addition(self): self.assertEqual(1 + 1, 2) if __name__ == '__main__': unittest.main() ``` 上述代码展示了如何利用Python内置库`unittest`创建简单的单元测试案例并通过调用`.main()`方法启动执行流程实现自动化校验目的[^2]。 关于具体项目经验分享方面,则可以从以下几个角度入手准备回答: - 描述所参与的具体项目名称及其背景意义; - 解释团队结构构成情况比如成员数量角色分工协作方式等要素; - 提供有关开发周期长度里程碑规划进度安排等方面的信息说明; - 统计编写了多少条测试用例发现了几个Bug等相关量化成果展示个人贡献价值所在[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值