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

速拿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…...

【排序算法】 计数排序(非比较排序)详解!了解哈希思想!

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; 算法—排序篇 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言&#x1f324;️计数排序的概念☁️什么是计数排序&#xff1f;☁️计数排序思想⭐绝对…...

20231103配置cv180zb的编译环境【填坑篇】

20231103配置cv180zb的编译环境【填坑篇】 2023/11/3 11:36 感谢您选择了晶视科技的cv180zb&#xff0c;让我们一起来填坑。 在你根据文档找不到答案的时候&#xff0c;是不是想把他们家那个写文档的家伙打一顿&#xff0c;我顶你。 当你在在网上找一圈&#xff0c;BAIDU/BING/…...

足底筋膜炎如何治疗

足底筋膜炎主要表现为下床站立后或休息后再次走路时&#xff0c;出现足跟部的疼痛与不适症状&#xff0c;活动后可自行缓解&#xff0c;但走路时间长或较剧烈活动后&#xff0c;疼痛会再次加重&#xff0c;甚至有针扎样疼痛感向脚前部发散&#xff0c;影响患者的日常生活。 足…...

rabbitMq路由键介绍

rabbitTemplate.convertAndSend() 是 Spring AMQP 中用于发送消息到 RabbitMQ 的方法。下面是对您提供的代码示例的解释&#xff1a; rabbitTemplate.convertAndSend("ums-platform.ex", "ums.report.routing", param);这行代码主要完成以下几个操作&…...

【python基础】python切片—如何理解[-1:],[:-1],[::-1]的用法

文章目录 前言一、基本语法二、切片1.a[i:j]2.a[i:j:k] 总结&#xff1a;[-1] [:-1] [::-1] [n::-1] 前言 在python中&#xff0c;序列是python最基本的数据结构&#xff0c;包括有string&#xff0c;list&#xff0c;tuple等数据类型&#xff0c;切片对序列型对象的一种索引方…...

剑指JUC原理-9.Java无锁模型

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱吃芝士的土豆倪&#xff0c;24届校招生Java选手&#xff0c;很高兴认识大家&#x1f4d5;系列专栏&#xff1a;Spring源码、JUC源码&#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&…...

汽车托运使用的场景

在托运车辆时&#xff0c;要仔细的检查车辆的性能&#xff0c;比如电瓶电量是否充足&#xff0c;发动机的性能是否良好&#xff0c;轮胎是否是正常的气压&#xff0c;冬季时需使用防冻液&#xff0c;车内禁止放易燃易爆物品。 托运时还需选择一家好的托运公司&#xff0c;首先要…...

机器学习 - 加油站数据分析

一、实验数据 数据集&#xff1a;“加油站数据.xls” 数据集介绍&#xff1a;该表记录了用户在11月和12月一天24小时内的加油信息&#xff0c;包括&#xff1a;持卡人标识&#xff08;cardholder&#xff09;、卡号&#xff08;cardno&#xff09;、加油站网点号&#xff08;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&#xff08;非极大值抑制&#xff09;阈值是用于控制在一组重叠的边界框中保留哪些边界框的参数。当检测或识别算法生成多个边界框可能涵盖相同物体时&#xff0c;NMS用于筛选出最相关的边界框&#xff0c;通常是根据它们的置信度分数。 具体来说&#xff0c;NMS的工作原理…...

备份doris数据到minio

1、MINIO 设置 创建服务账户&#xff0c;记住ACCESS_KEY和SECRET_KEY 创建Buckets doris 设置region 在首页查看服务ip和端口号 2、创建S3备份库 因为minio是兼容S3协议的&#xff0c;所以可以通过s3协议链接minio。 CREATE REPOSITORY minio WITH S3 ON LOCATION "s3://…...

Linux中正则表达式等

grep命令&#xff1a;主要作用就是过滤查找文本内容 常用的选项有&#xff1a; -m 数字:匹配几次之后停止&#xff0c;按行匹配&#xff0c;不是按字符个数&#xff0c;例如 -v:取反 例如: -n:显示匹配的行号 例如&#xff1a; -c:仅显示匹配的行数&#xff0c;不显示匹配内…...

记一次并发问题 Synchronized 失效

记一次并发问题 Synchronized 失效 场景&#xff1a;为避免信息提交重复&#xff0c;给事务方法增加了synchronized修饰符&#xff0c;实际场景中仍然无法完全避免重复&#xff0c;原因是因为在第一个线程执行完synchronized代码段后&#xff0c;此时spring还未完成事务提交&a…...

手机平板摄像头如何给电脑用来开视频会议

环境&#xff1a; Iriun Webcam EV虚拟摄像头 钉钉会议 问题描述&#xff1a; 手机平板摄像头如何给电脑用来开视频会议 解决方案&#xff1a; 1.下载软件 手机端和电脑端都下载这个软件&#xff0c;连接同一局域网打开软件连接好 另外一款软件Iriun 也是一样操作 2.打…...

windows docker desktop 更换镜像 加速

最近 docker hub 访问不了; 经过研究 可以通过添加 代理镜像网址 添加代理服务器的方式 实现完美访问 1添加镜像网站 修改成国内镜像地址就能享受到飞一般的速度&#xff0c;但有一个问题&#xff0c;部分站点镜像不全或者镜像比较老&#xff0c;建议使用多个镜像站。 https…...

linux下多机器ssh免密码登录配置

20,21,22,23等4台机器配置ssh免密登陆 确认sshd配置 查看/etc/ssh/sshd_config文件&#xff0c;确认如下配置没有被注释掉&#xff1a; AuthorizedKeysFile .ssh/authorized_keys每一台机器修改hosts配置主机名&#xff08;可选&#xff09; 执行ssh命令&#xff0c;如…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中&#xff0c;我们已经大致实现了rpc服务端的各项功能代…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分

一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计&#xff0c;提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合&#xff1a;各模块职责清晰&#xff0c;便于独立开发…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...