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

二、接口自动化项目实战

三、Web自动化项目实战

四、App自动化项目实战

五、一线大厂简历

六、测试开发DevOps体系

七、常用自动化测试工具

八、JMeter性能测试

九、总结(尾部小惊喜)
在奋斗的道路上,不要畏惧失败和困难,要坚持不懈地追求目标。相信自己的能力,发挥自己的潜力,只有这样,才能成就真正的辉煌!
不要害怕失败,因为成功之前往往伴随着许多失败。只有勇敢地面对挑战,拼搏奋斗,才能在人生的舞台上创造属于自己的精彩!
生命在于奋斗,只有不断追求进步和超越自我,才能让人生更加精彩。坚定信念,敢于梦想,勇敢追求,终将成就自己的辉煌!
相关文章:
速拿offer,超全自动化测试面试题+答案汇总,背完还怕拿不到offer?
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、你会封装自动化…...
LeetCode----1415. 长度为 n 的开心字符串中字典序第 k 小的字符串
题目 一个 「开心字符串」定义为: 仅包含小写字母 [‘a’, ‘b’, ‘c’].对所有在 1 到 s.length - 1 之间的 i ,满足 s[i] != s[i + 1] (字符串的下标从 1 开始)。比方说,字符串 “abc”,“ac”,“b” 和 “abcbabcbcb” 都是开心字符串,但是 “aa”,“baa” 和 “a…...
2310C++协程超传服务器
原文 告别异步回调模型,写代码更简单.同样也是跨平台,仅头文件的,包含头文件即可用,来看看它的用法. 基本用法 提供getpost服务 coro_http_server server(1, 9001);server.set_http_handler<GET, POST>("/", [](coro_http_request &req, coro_http_respo…...
【排序算法】 计数排序(非比较排序)详解!了解哈希思想!
🎥 屿小夏 : 个人主页 🔥个人专栏 : 算法—排序篇 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言🌤️计数排序的概念☁️什么是计数排序?☁️计数排序思想⭐绝对…...
20231103配置cv180zb的编译环境【填坑篇】
20231103配置cv180zb的编译环境【填坑篇】 2023/11/3 11:36 感谢您选择了晶视科技的cv180zb,让我们一起来填坑。 在你根据文档找不到答案的时候,是不是想把他们家那个写文档的家伙打一顿,我顶你。 当你在在网上找一圈,BAIDU/BING/…...
足底筋膜炎如何治疗
足底筋膜炎主要表现为下床站立后或休息后再次走路时,出现足跟部的疼痛与不适症状,活动后可自行缓解,但走路时间长或较剧烈活动后,疼痛会再次加重,甚至有针扎样疼痛感向脚前部发散,影响患者的日常生活。 足…...
rabbitMq路由键介绍
rabbitTemplate.convertAndSend() 是 Spring AMQP 中用于发送消息到 RabbitMQ 的方法。下面是对您提供的代码示例的解释: rabbitTemplate.convertAndSend("ums-platform.ex", "ums.report.routing", param);这行代码主要完成以下几个操作&…...
【python基础】python切片—如何理解[-1:],[:-1],[::-1]的用法
文章目录 前言一、基本语法二、切片1.a[i:j]2.a[i:j:k] 总结:[-1] [:-1] [::-1] [n::-1] 前言 在python中,序列是python最基本的数据结构,包括有string,list,tuple等数据类型,切片对序列型对象的一种索引方…...
剑指JUC原理-9.Java无锁模型
👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码🔥如果感觉博主的文章还不错的话,请👍三连支持&…...
汽车托运使用的场景
在托运车辆时,要仔细的检查车辆的性能,比如电瓶电量是否充足,发动机的性能是否良好,轮胎是否是正常的气压,冬季时需使用防冻液,车内禁止放易燃易爆物品。 托运时还需选择一家好的托运公司,首先要…...
机器学习 - 加油站数据分析
一、实验数据 数据集:“加油站数据.xls” 数据集介绍:该表记录了用户在11月和12月一天24小时内的加油信息,包括:持卡人标识(cardholder)、卡号(cardno)、加油站网点号(n…...
基于CMFB余弦调制滤波器组的频谱响应matlab仿真
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、CMFB余弦调制滤波器组原理 4.2、CMFB调制过程 4.3、CMFB特点 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ......................…...
helm一键部署grafana
一键部署命令 helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update helm install prometheus prometheus-community/kube-prometheus-stack暴露服务 kubectl port-forward --address 0.0.0.0 deployment/prometheus-gr…...
pytorch复现_NMS
NMS(非极大值抑制)阈值是用于控制在一组重叠的边界框中保留哪些边界框的参数。当检测或识别算法生成多个边界框可能涵盖相同物体时,NMS用于筛选出最相关的边界框,通常是根据它们的置信度分数。 具体来说,NMS的工作原理…...
备份doris数据到minio
1、MINIO 设置 创建服务账户,记住ACCESS_KEY和SECRET_KEY 创建Buckets doris 设置region 在首页查看服务ip和端口号 2、创建S3备份库 因为minio是兼容S3协议的,所以可以通过s3协议链接minio。 CREATE REPOSITORY minio WITH S3 ON LOCATION "s3://…...
Linux中正则表达式等
grep命令:主要作用就是过滤查找文本内容 常用的选项有: -m 数字:匹配几次之后停止,按行匹配,不是按字符个数,例如 -v:取反 例如: -n:显示匹配的行号 例如: -c:仅显示匹配的行数,不显示匹配内…...
记一次并发问题 Synchronized 失效
记一次并发问题 Synchronized 失效 场景:为避免信息提交重复,给事务方法增加了synchronized修饰符,实际场景中仍然无法完全避免重复,原因是因为在第一个线程执行完synchronized代码段后,此时spring还未完成事务提交&a…...
手机平板摄像头如何给电脑用来开视频会议
环境: Iriun Webcam EV虚拟摄像头 钉钉会议 问题描述: 手机平板摄像头如何给电脑用来开视频会议 解决方案: 1.下载软件 手机端和电脑端都下载这个软件,连接同一局域网打开软件连接好 另外一款软件Iriun 也是一样操作 2.打…...
windows docker desktop 更换镜像 加速
最近 docker hub 访问不了; 经过研究 可以通过添加 代理镜像网址 添加代理服务器的方式 实现完美访问 1添加镜像网站 修改成国内镜像地址就能享受到飞一般的速度,但有一个问题,部分站点镜像不全或者镜像比较老,建议使用多个镜像站。 https…...
linux下多机器ssh免密码登录配置
20,21,22,23等4台机器配置ssh免密登陆 确认sshd配置 查看/etc/ssh/sshd_config文件,确认如下配置没有被注释掉: AuthorizedKeysFile .ssh/authorized_keys每一台机器修改hosts配置主机名(可选) 执行ssh命令,如…...
告别内网穿透:用IPv6+阿里云DNS搭建你的第一个家庭NAS(保姆级避坑指南)
告别内网穿透:用IPv6阿里云DNS搭建你的第一个家庭NAS(保姆级避坑指南) 家里有一台闲置的旧电脑想改造成NAS?厌倦了内网穿透工具的速度限制和复杂配置?其实你只需要一个IPv6地址和域名解析服务,就能让家庭NA…...
基于Trinket与NeoPixel的声控LED色彩风琴制作全攻略
1. 项目概述:让声音驱动光效色彩风琴,一个听起来有些复古的名字,在七八十年代的迪斯科舞厅和家庭派对上,它曾是营造氛围的明星。本质上,它就是一个声控灯光系统,能够将音乐的节奏和强度实时转化为绚丽的光影…...
STM32 HAL库实战:用CD74HC4067扩展模拟输入通道,附完整工程代码
STM32 HAL库实战:用CD74HC4067扩展模拟输入通道,附完整工程代码 在嵌入式开发中,模拟信号采集是常见需求,但MCU内置ADC通道数量往往有限。当面对多路传感器信号采集时,如何经济高效地扩展输入通道成为开发者必须解决的…...
从Kafka设计哲学到高性能系统通用模式:吞吐、顺序I/O与批处理的艺术
1. 项目概述:为什么是Kafka?如果你在后台开发、数据平台或者中间件领域摸爬滚打过几年,大概率会听过甚至深度使用过Apache Kafka。它早已不是一个简单的消息队列,而是现代数据驱动架构的“中枢神经系统”。我最初接触Kafka&#x…...
如何快速配置PlotSquared:Minecraft领地管理完整教程
如何快速配置PlotSquared:Minecraft领地管理完整教程 【免费下载链接】PlotSquared PlotSquared - Reinventing the plotworld 项目地址: https://gitcode.com/gh_mirrors/pl/PlotSquared 你是否厌倦了Minecraft服务器中混乱的建筑和领地冲突?想要…...
从‘梳子’到‘低通’:图解CIC滤波器在5G和软件无线电里的那些事儿
从‘梳子’到‘低通’:图解CIC滤波器在5G和软件无线电里的那些事儿 在5G毫米波基站和软件无线电设备中,高速ADC采样产生的数据洪流就像未经处理的原油,而CIC滤波器正是第一道精炼装置。这种没有乘法器的奇特滤波器,凭借积分器和梳…...
保姆级教程:用R语言从16S数据到SparCC共现网络图,手把手搞定微生物群落分析
微生物共现网络分析实战:从16S数据到SparCC网络可视化 当面对复杂的微生物群落数据时,科学家们常常需要回答一个关键问题:这些微生物之间是如何相互作用的?是互利共生还是竞争排斥?本文将带您用R语言和SparCC算法&…...
告别混乱!Flink指标报告选型指南:Graphite、InfluxDB、Prometheus、StatsD到底怎么选?
Flink监控体系选型实战:Graphite、InfluxDB、Prometheus与StatsD深度对比 当Flink集群从测试环境走向生产环境时,监控指标的可视化与分析能力直接关系到系统的稳定性和运维效率。面对Graphite、InfluxDB、Prometheus和StatsD这四种主流指标报告方案&…...
Cadence OrCAD Capture 层次化电路设计:用NetGroup信号线束高效管理多路SPI/I2C
Cadence OrCAD Capture 层次化电路设计:用NetGroup信号线束高效管理多路SPI/I2C 在嵌入式系统设计中,多路复用接口(如SPI、I2C)的拓扑结构已成为工程师日常面临的挑战。当主控芯片需要连接多个传感器、存储设备或外设模块时&…...
QEMU理解与分析系列(5):RISCV虚拟版卡初始化
文章目录 1、QOM简介 `register_module_init` 的实现 Machine 类型注册 Machine 类定义 MachineClass 结构体定义 MachineState 结构体定义 virt 机器初始化流程 自定义设备初始化 1、QOM简介 QEMU Object Model (QOM) 是 QEMU 中的一种对象系统,用于实现 QEMU 设备模型和设备…...
