3年经验,3轮技术面+1轮HR面,拿下字节30k*16薪offer,这些自动化测试面试题值得大家借鉴
面试一般分为技术面和hr面,形式的话很少有群面,少部分企业可能会有一个交叉面,不过总的来说,技术面基本就是考察你的专业技术水平的,hr面的话主要是看这个人的综合素质以及家庭情况符不符合公司要求,一般来讲,技术的话只要通过了技术面hr面基本上是没有问题(也有少数企业hr面会刷很多人)
我们主要来说技术面,技术面的话主要是考察专业技术知识和水平,下面是我们整理好的自动化测试岗的面试题。
1.你写的测试脚本能在不同浏览器上运行吗
当然可以,我写的用例可以在在IE,火狐和谷歌这三种浏览器上运行。实现的思路是封装一个方法,分别传入一个浏览器的字符串,如果传入IE就使用IE,如果传入FireFox就使用FireFox,如果传入Chrome就使用Chrome浏览器,并且使用什么浏览器可以在总的ini配置文件中进行配置。需要注意的是每个浏览器使用的驱动不一样。
2.什么是PO模式,为什么要使用它
PO是Page Object 模式的简称,它是一种设计思想,意思是,把一个页面,当做一个对象,页面的元素和元素之间操作方法就是页面对象的属性和行为,PO模式一般使用三层架构,分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层。
3.你会封装自动化测试框架吗?
这个问得最多,甚至有很多公司直接卸载招聘要求中
当然可以,自动化框架主要的核心框架就是分层+PO模式:分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层。然后再加上日志处理模块,ini配置文件读取模块,unittest+ddt数据驱动模块,jenkins持续集成模式组成。
4.遇到alert弹出窗如何处理?
使用driver.switch_to.alert方法先跳转到alert弹出窗口
然后再通过accept点击确定按钮,通过dismiss点击取消难,通过text()获得弹出窗口的文本。
5.如何处理多窗口?
这个多窗口之间跳转处理,我们在项目中也经常遇到。就是,当你点击一个链接,这个链接会在一个新的tab打开,然后你接下来要在新tab打开的页面查找元素,
1.我们在点击链接前使用driver.current_window_handle获得当前窗口句柄。
2.再点击链接。点击后通过driver.window_handles获得所有窗口的句柄,
3.然后再循环找到新窗口的句柄,然后再通过driver.switch_to.window()方法跳转到新的窗口。
6.怎么验证元素是enable/disabled/checked状态?
定位元素后:分别通过isEnabled(),isSelected(),isDisplayed()三个方法进行判断。
7.自动化测试发现BUG多吗?
不多,因为之前项目组是把已经测试通过的基本功能再进行自动化脚本编写和在后续版本执行自动化测试,它主要是保证已经测试通过的功能在新版本更新后没有问题。
8.你觉得自动化测试的价值在哪里?你们公司为什么要做自动化测试?
引用自动化测试之后,能代替大量繁琐的回归测试工作,把业务测试人员解放出来,既而让业务测试人员把精力集中在复杂的业务功能模块上,自动化测试一般是对稳定下来的功能进行自动化,保证不会因为产品的更新导致之前稳定下来的功能出现BUG
9.自动化测试有误报过bug吗?产生误报怎么办?
有误报过,有时候自动化测试报告中显示发现了bug,实际去通过手工测试去确认又不存在该bug。
误报原因一般是:
1.元素定位不稳定,需要尽量提高脚本的稳定性;
2.开发更新了页面但是测试没有及时更新维护!
1.如何把自动化测试在公司中实施并推广起来的?
1.项目组调研选择自动化工具并开会演示demo案例,我们主要是演示selenium和robotframework两种。
2.搭建自动化测试框架,在项目中逐步开展自动化。
3.把该项目的自动化流程、框架固化成文档
4.推广到公司的其它项目组应用
10.请描述一下自动化测试流程?
1.编写自动化测试计划
2.设计自动化测试用例
3.编写自动化测试框架和脚本
4.调试并维护脚本
5.无人值守测试
6.后期脚本维护(添加用例、开发更新版本)
11.自动化测试用例如何编写?以下答案二选一即可:
1.用例是自动化测试工程师自己设计的,一般刚开始已基本业务流程为主(登录--完成一个业务--退出)
2.从系统测试用例中进行筛选或由业务工程师提供
12.上一个项目中自动化测试的执行策略?
上一个项目中是定时执行的,设置的执行时间是晚上12点,执行完毕后会自动发送邮件通知
13.自动化测试过程中,你遇到了哪些问题,是如何解决的?
1.频繁地变更页面,经常要修改页面对象类里面的代码
2.自动化测试偶尔出现过误报
3.自动化测试结果出现覆盖的情况:Jenkins根据时间建立文件夹
4.自动化测试代码维护比较麻烦
5.自动化测试进行数据库对比数据
14.在上一家公司做自动化测试用的什么框架?
可以说出以下自己擅长的一种:
1.python+selenium+unittest+htmltestrunner
2.python+selenium+pytest+allure
3. robotframework+Selenium3
15.在selenium自动化测试中,你一般完成什么类型的测试?自动化覆盖率?
主要是冒烟测试和回归测试。回归测试主要写一些功能稳定的场景,通过自动化手段去实现,节约测试时间。因为自动化测试用例也是在不断的更新和迭代,没有刻意去统计,大概在30%-40%左右!
16.在执行脚本过程,如何实现当前元素高亮显示?
这个其实就是利用javaScript去修改当前元素的边框样式来到达高亮显示的效果,
17.如果一个元素无法定位,你一般会考虑哪些方面的原因?
1.页面加载元素过慢,加等待时间
2.页面有frame框架页,需要先跳转入frame框架再定位
3.可能该元素是动态元素,定位方式要优化,可以使用部分元素定位或通过父节点或兄弟节点定位。
4.可能识别了元素,但是不能操作,比如元素不可用,不可写等。需要使用js先把前置的操作完成,
18.元素定位方法你熟悉的有哪些?(八大元素定位方式)
id ,name, class, tag, link_text, Partial link text, css, xpath
19.遇到frame框架页面怎么处理?
先用driver.switch_to.frame()跳转进去frame,
然后再操作页面元素,
操作完后使用driver.swith_to.default_content()跳转出来
20.如何处理下拉菜单?
在Selenium中有一个叫Select的类,这个类支持对下拉菜单进行操作。使用方法如下:
1.定位元素
2.把定位的元素转化成Select对象。
sel = Select(定位的元素对象)
3.通过下标或者值或者文本选中下拉框。
sel.select_by_index(index);
sel.select_by_value(value);
sel.select_by_visible_text(text);
21.在日历这种web 表单你是如何处理的?
首先要分析当前网页试用日历插件的前端代码,看看能不能通过元素定位,点击日期实现,如果不能,可能需要借助javascript。还有些日历控件一个文本输入框,可以直接sendKeys()方法来实现传入一个时间的数据。
22.举例一下说明一下你遇到过那些异常
常见的selenium异常有这些:
NoSuchElementException:没有该元素异常
TimeoutException :超时异常
ElementNotVisibleException :元素不可见异常
NoSuchAttributeException :没有这样属性异常
NoSuchFrameException :没有该frame异常
23.关闭浏览器中quit和close的区别
简单来说,两个都可以实现退出浏览器session功能,close是关闭你当前聚焦的tab页面,而quit是关闭全部浏览器tab页面,并退出浏览器session。知道这两个区别,我们就知道quit一般用在结束测试之前的操作,close用在执行用例过程中关闭某一个页面的操作。
24.在Selenium中如何实现截图,如何实现用例执行失败才截图
在Selenium中提供了一个get_screenshot_as_file()的方法来截图的,一般结合try/except捕获异常时使用,进行错误截图。
25.如何实现文件上传?
定位元素后,直接使用send_keys()方法设置就行,参数为需要上传的文件的路径。
26.自动化中有哪三类等待?他们有什么特点?
1.线程等待(强制等待)如time.sleep(2):线程强制休眠2秒钟,2秒过后,再执行后续的代码。建议少用。
2.imlicitlyWait(隐式等待)会在指定的时间范围内不断的查找元素,直到找到元素或超时,特点是必须等待整个页面加载完成。
3.WebDriverWait(显式等待)通常是我们自定义的一个函数代码,这段代码用来等待某个元素加载完成,再继续执行后续的代码
27.你们测试团队如何提升自己的测试技能?
更多是靠技术讨论和学习交流,除了我们公司内部群之外,我们还会有相关的技术交流群,可以和跟很多同行一起学习,完善自己的技能树。IT行业技术更新迭代本来就很快,所以更需要保持学习的心态。
面试题整理:
对于以上这些知识点,经过长时间整理,已经形成了文档资料以及讲解视频等等,下面给出部分截图:

这份文档,对于今年面试的朋友来说,应该会有很大的帮助,希望大家都能收到满意的offer,大家觉得有用的话记得给我点赞收藏,点击下方小卡片均可以分享。
相关文章:
3年经验,3轮技术面+1轮HR面,拿下字节30k*16薪offer,这些自动化测试面试题值得大家借鉴
面试一般分为技术面和hr面,形式的话很少有群面,少部分企业可能会有一个交叉面,不过总的来说,技术面基本就是考察你的专业技术水平的,hr面的话主要是看这个人的综合素质以及家庭情况符不符合公司要求,一般来…...
分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测
分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测 目录分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测分类效果基本描述模型描述程序设计参考资料分类效果 基本描述 1.Matlab实现WOA-CNN-LSTM多特征分类预测&…...
自然语言处理(NLP)之近似训练法:负采样与层序Softmax
我们在前面介绍的跳字模型与连续词袋模型有个缺陷就是在计算梯度时的开销随着词典增大会变得很大,因为每一步的梯度计算都包含词典大小数目的项的累加。为了降低这种带来的计算复杂度,介绍两种近似的处理方案:负采样和层序softmax负采样(Nega…...
关于上位机,C#
TCP与modbusTCP的区别 (10条消息) C#高级--常用数据结构_李宥小哥的博客-CSDN博客_c# 数据结构 C#中常用的数据结构 TCP/IP协议是网络通讯协议。MODBUS是应用与工业现场(电子控制)的通讯协议。两者的应用范围和应用环境有…...
华为OD机试真题 用 C++ 实现 - 字符串加密 | 多看题,提高通过率
最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…...
达梦8数据守护动态增加实时备库
实时主备环境 类型 业务IP 库名 实例名 PORT_NUM MAL_HOST MAL_INST_DW_PORT MAL_PORT MAL_DW_PORT 主库dm8p 192.168.1.223 DAMENG GRP1_RT_01 5236 10.0.0.223 45101 55101 65101 备库dm8s 192.168.1.224 DAMENG GRP1_RT_02 5236 10.0.0.224 45121…...
《代码整洁之道 - 程序员的职业素养》读书笔记
一 前言 《代码整洁之道 - 程序员的职业素养》的作者是Robert C. Martin,大家喜欢喊他Bob大叔。这本书主要是Bob大叔40年编程生涯的心得体会,主要讲述了一个专业的程序员需要具备什么样的态度,遵循什么样的原则,采取什么样的行动。…...
八、CSS新特性二
文章目录一、CSS3多背景和圆角二、怪异盒子模型三、多列属性四、H5多列布局瀑布流五、CSS3线性渐变5.1 线性渐变5.2 径向渐变六、CSS3过渡动画七、CSS3 2D八、CSS3动画一、CSS3多背景和圆角 css3多背景,表示CSS3中可以添加多个背景。 CSS3圆角 border-radius: 0px;…...
Ubuntu国内镜像源
查看系统版本命令: $ lsb_release -aDistributor ID: UbuntuDescription: Ubuntu 22.04 LTSRelease: 22.04Codename: jammy国内的更新源有多个,几个大互联网公司的源都比较稳定,没什么差别。 下面是比较主流的、常用的几个…...
3.Linux安装es单机版
1.下载 版本 JDK 11ES elasticsearch-7.10.0 jdk安装 下载: wget https://download.java.net/openjdk/jdk11/ri/openjdk-1128_linux-x64_bin.tar.gz配置环境变量:# 编辑配置文件 vim /etc/profile# Java11环境变量配置 export JAVA_HOME/devtools/ja…...
C语言实现通讯录
咱们手机上面还有教务系统上都可以存储信息,这些都是使用编程语言来实现的,那么今天,咱们今天就用C语言来实现通讯录。 一. 实验名称 通讯录 二. 实验目标 1.数据的储存 2.数据的增加 3.数据的删除 4.数据的修改 5.数据的展示 6.数据…...
Python-生成列表
1.生成列表使用列表前必须先生成列表。1.1使用运算符[ ]生成列表在运算符[ ]中以逗号隔开各个元素会生成包含这些元素的新列表。另外,如果[ ]中没有元素就会生成空列表示例>>> list01 [] >>> list01 [] >>> list02 [1, 2, 3] >>…...
如何写好controller层
前言本篇主要要介绍的就是controller层的处理,一个完整的后端请求由4部分组成:1. 接口地址(也就是URL地址)、2. 请求方式(一般就是get、set,当然还有put、delete)、3. 请求数据(request,有head跟body)、4. 响应数据(response)本篇…...
MySQL---视图的概念与操作
MySQL—视图的概念与操作 常见的数据库对象 对象描述表(TABLE)表是存储数据的逻辑单元,以行和列的形式存在,列就是字段,行就是记录数据字典就是系统表,存放数据库相关信息的表。系统表的数据通常由数据库系统维护, 程…...
ChatGPT,会是现实世界的MOSS吗?
最近,两个人工智能系统彻底火出了圈,成为许多网友热议的焦点。 一个是冷酷无情的“幕后主角”MOSS,一个是多才多艺的“全能网友”ChatGPT。 先来说说MOSS。今年春节档,科幻电影《流浪地球2》热映,电影中一个面试环节令…...
安卓大厂面试题_安卓开发面经_Android大厂面经(22/30)之JNI全解析
系列专栏: 《150道安卓常见面试题全解析》 安卓专栏目录见帖子 : 安卓面经_anroid面经_150道安卓常见基础面试题全解析 安卓系统Framework面经专栏:《Android系统Framework面试题解析大全》 安卓系统Framework面经目录详情:Android系统面经_Framework开发面经_150道面试题答…...
记一次docker虚拟机横向移动渗透测试
本次渗透在几个docker虚拟机间多次横向移动,最终找到了一个可以进行docker逃逸的出口,拿下服务器。渗透过程曲折但充满了乐趣,入口是172.17.0.6的docker虚拟机,然后一路横向移动,最终在172.17.0.2出实现了docker逃逸&a…...
计算机网络-物理层
计算机网络-物理层 计算机网络学习笔记 学习视频:https://www.bilibili.com/video/BV1c4411d7jb/?p14&spm_id_from333.1007.top_right_bar_window_history.content.click&vd_source75dce036dc8244310435eaf03de4e330 物理层的基本概念 物理层考虑的是怎样…...
Kubernetes Nginx 发布
kubernetes发布nginx 目录 Nginx Pod启动Service访问Nginx 2.1. NodePort访问Nginx 2.2. ClusterIP访问Nginx 2.3. LoadBalancer访问Nginx 2.4. ExternalName访问NginxDeployment方式部署Nginx 3.1 Nginx Replicas Nginx Pod 启动 nginx-v1.yaml apiVersion: v1 kind: Pod…...
华为OD机试真题Python实现【非严格递增连续数字序列】真题+解题思路+代码(20222023)
非严格递增连续数字序列 题目 输入一个字符串仅包含大小写字母和数字 求字符串中包含的最长的非严格递增连续数字序列长度 比如: 12234 属于非严格递增数字序列 🔥🔥🔥🔥🔥👉👉👉👉👉👉 华为OD机试(Python)真题目录汇总 ## 输入 输入一个字符串仅…...
XML Group端口详解
在XML数据映射过程中,经常需要对数据进行分组聚合操作。例如,当处理包含多个物料明细的XML文件时,可能需要将相同物料号的明细归为一组,或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码,增加了开…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
【入坑系列】TiDB 强制索引在不同库下不生效问题
文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...
vue3 字体颜色设置的多种方式
在Vue 3中设置字体颜色可以通过多种方式实现,这取决于你是想在组件内部直接设置,还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法: 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
