当前位置: 首页 > news >正文

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)真题目录汇总 ## 输入 输入一个字符串仅…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

基于大模型的 UI 自动化系统

基于大模型的 UI 自动化系统 下面是一个完整的 Python 系统,利用大模型实现智能 UI 自动化,结合计算机视觉和自然语言处理技术,实现"看屏操作"的能力。 系统架构设计 #mermaid-svg-2gn2GRvh5WCP2ktF {font-family:"trebuchet ms",verdana,arial,sans-…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了,就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...