速拿offer,超全自动化测试面试题+答案汇总,背完还怕拿不到offer?

news2025/4/5 10:48:45

目录:导读

    • 前言
    • 一、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性能测试

请添加图片描述

九、总结(尾部小惊喜)

在奋斗的道路上,不要畏惧失败和困难,要坚持不懈地追求目标。相信自己的能力,发挥自己的潜力,只有这样,才能成就真正的辉煌!

不要害怕失败,因为成功之前往往伴随着许多失败。只有勇敢地面对挑战,拼搏奋斗,才能在人生的舞台上创造属于自己的精彩!

生命在于奋斗,只有不断追求进步和超越自我,才能让人生更加精彩。坚定信念,敢于梦想,勇敢追求,终将成就自己的辉煌!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1170006.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手机上有哪些支持设置农历日期提醒的工具

很多人的生日都是按照农历日期来安排的,而农历日期和公历日期相错的日子很多,在手机上如果想要记录农历生日提醒,需要借助一些支持设定农历日期的工具来实现。 手机上有哪些支持设置农历日期提醒的工具呢?敬业签是一款可以在手机…

高斯过程回归 | 高斯过程回归(Gaussian Process Regression)

高斯过程回归(Gaussian Process Regression)是一种非参数的回归方法,它基于高斯过程模型来建模数据的分布情况。在高斯过程回归中,假设数据点之间的关系服从多元高斯分布。 具体来说,考虑有一组输入变量X和对应的输出变量Y,我们希望通过这些已知数据点来建立一个模型,进…

K8S知识点(一)

(1)应用部署方式转变 (2)K8S介绍 容器部署容易出现编排问题,为了解决就出现了大量的编排软件,这里将的是K8S编排问题的解决佼佼者 弹性伸缩:当流量从1000变为1200可以,自动开启一个…

关于编程语言,开发者眼中的争论与共识

点击文末“阅读原文”即可参与节目互动 剪辑、音频 / 卷圈 运营 / SandLiu 卷圈 监制 / 姝琦 封面 / 姝琦Midjourney 产品统筹 / bobo 场地支持 / 声湃轩北京录音间 联合制作 / RTE开发者社区 xxx 是最好的编程语言!此话一出,必能掀起一场技术圈儿…

python图像处理 ——图像锐化

python图像处理 ——图像锐化 前言一、原理二、 空间域锐化滤波1.拉普拉斯算子(Laplacian)2.罗伯茨算子(Roberts)3.Sobel算子4.Prewitt算子5.Scharr算子 三、实验对比 前言 由于收集图像数据的器件或传输图像的通道存在一些质量缺…

pip install -r requirements.txt

挂了梯子报错 不挂梯子gg下

橙河网络:坏人是怎么形成的?

小A是一个非常热心的人,给谁帮忙,都免费。 大家都说,小 A,实在人呀,哈哈。 小B搬来了,他活多,弄不过来,常找小 A 来帮忙。 小A 每次来帮忙,小B 都给小A一张大团结(100…

SpringBoot集成Swagger接口文档/测试

文章目录 Swagger 介绍Swagger 使用常用注解 Swagger 介绍 使用 Swagger 你只需要按照它的规范去定义接口及接口相关的信息,就可以做到生成接口文档,以及在线接口调试页面。官网:https://swagger.io/ Knife4j 是为 Java MVC 框架集成 Swagg…

【Python】列表、集合、字典基础知识

列表 列表中元素的类型可以不同,列表内部存储方式是元素值存储在不连续的空间,但是把他们的指针存在一块连续的空间 列表的创建 1.list1[] 创建一个空列表 2.用list函数 3.split函数截取 列表的更新 1.通过索引[]改变 2.切片修改 3.列表方法更新 列表…

SLAM从入门到精通(参数标定)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 标定是slam开发过程中很重要的一个环节。这部分内容涉及到很多方面,比如说传感器、比如说算法、比如说机械,总之好的标定不…

C3P0、DBCP、Druid 三种数据库连接池的使用

文章目录 数据库连接池1 C3P0 数据库连接池2 DBCP 数据库连接池3 Druid 数据库连接池 数据库连接池 JDBC 的数据库连接池使用 javax.sql.DataSource 来表示,DataSource 只是一个接口,该接口通常由服务器(Weblogic, WebSphere, Tomcat)提供实现&#xff…

SpringCloudTencent(上)

SpringCloudTencent 1.PolarisMesh介绍2.北极星具备的功能3.北极星包含的组件4.功能特性1.服务管理1.服务注册2.服务发现3.健康检查 2.配置管理 5.代码实战1.环境准备2.服务注册与发现3.远程调用 1.PolarisMesh介绍 1.北极星是腾讯开源的服务治理平台,致力于解决分…

Dev-C调试的基本方法2-1

在Dev-C中调试程序,首先需要在程序中设置断点,之后以调试的方式运行程序。 1 设置断点 当以调试的方式运行程序时,程序会在断点处停下来。点击要设置断点代码行号左侧部分,此时会有如图1所示的红点和绿色对勾,表示断…

Mybatis与Mybatis-Plus(注解与Xml)(单表与多表)

准备工作 这里我们准备了两个与数据库表对应的实体类,stu为学生表,cls为班级表 类属性上的注解如 TableId等 为Mybatis-Plus的注解,使用mybatis会无视掉这些注解 在Stu 类的最后一个属性我们定义了Cls实体类的对象,对于单表查询&…

使用php打印时间精确到毫秒及毫秒转成11位时间戳

在PHP中,可以使用microtime函数来获取当前时间,包括毫秒。以下是示例代码: // 获取当前时间戳(秒) $time microtime(true); // 将当前时间戳转换为毫秒 $milliseconds round($time * 1000); // 输出当前时间&#…

【C语法学习】12 - scanf()函数

文章目录 0 前言1 函数原型2 参数2.1 格式字符串2.1.1 转换说明 2.2 参数列表 3 返回值4 读取机制4.1 基本概念4.2 转换说明4.3 读取过程4.4 读取示例4.5 多参数 6 示例6.1 示例16.2 示例26.3 示例36.4 示例4 0 前言 scanf()函数虽然使用起来较为灵活,但是其读取机…

SpringBoot集成JPA实现分页和CRUD

SpringBoot集成JPA实现分页和CRUD 文章目录 SpringBoot集成JPA实现分页和CRUDpom.xmlapplication.propertiesaddCategory.jspeditCategory.jsphello.jsplistCategory.jspCategoryCategoryDAOCategoryServiceCategoryServiceImplPage4NavigatorRedisConfigCategoryControllerHel…

CH10_简化条件逻辑

分解条件表达式(Decompose Conditional) if (!aDate.isBefore(plan.summerStart) && !aDate.isAfter(plan.summerEnd))charge quantity * plan.summerRate; elsecharge quantity * plan.regularRate plan.regularServiceCharge;if (summer())…

C#中List<T>的 AddRange方法使用说明

文章目录 C#中List<T>的 AddRange方法使用说明 C#中List的 AddRange方法使用说明 AddRange可以一次性添加集合A到当前集合B。 本身不能为空&#xff0c;但是可以保存null的数据。 List 中会保留集合中元素的顺序 将集合A添加到集合B的末尾 本身为null&#xff0c;使用 A…

国际测试委员会BenchCouncil首发“开源系统杰出成果榜” 百度飞桨上榜

&#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于恒川的日常汇报系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏C语言初阶、C…