2024年经典【自动化面试题】附答案

news2024/9/22 17:17:58

一、请描述一下自动化测试流程?

自动化测试流程一般可以分为以下七步:

编写自动化测试计划;

设计自动化测试用例;

编写自动化测试框架和脚本;

调试并维护脚本;

无人值守测试;

后期脚本维护(添加用例、开发更新版本)。

二、自动化测试有误报过bug吗?产生误报怎么办?

有误报过,有时候自动化测试报告中显示发现了bug,实际去通过手工测试去确认又不存在该bug。

误报原因一般是:

元素定位不稳定,需要尽量提高脚本的稳定性;

开发更新了页面但是测试没有及时更新维护。

三、什么是PO模式?

全称:page object model 简称:POM/PO,PO模式最核心的思想是分层,实现松耦合,实现脚本重复使用及脚本易维护性。

PO模式主要分三层:

1.基础层BasePage:封装一些最基础的selenium的原生的api方法,元素定位,框架跳转等。

2.PO层:元素定位、获得元素对象,页面动作

3.测试用例层:业务逻辑,数据驱动。

三者的关系:PO层继承基础层,测试用例层调用PO层。

po模式和非po模式区别?
在这里插入图片描述

在这里插入图片描述
四、怎么对含有验证码的功能进行自动化测试? 

对有验证码的功能模块进行自动化测试,可以通过以下方式:

让开发去掉验证码。未上线前,让开发去掉验证码验证,方便做自动化测试;

设置一个万能的验证码。未上线前,让开发生成固定的验证码,方便做自动化测试。

通过 cookie 绕过登录。

自动识别技术识别验证码。第一种是:OCR 自动识别技术,第二种是:通过第三方打码平台的接口来识别。

五、如何提高脚本的稳定性?

提高脚本的稳定性,可以通过以下方式:

不要右键复制 xpath(绝对路径很不稳定),自己写相对路径;

定位没问题,第二个影响因素那就是等待了,sleep 等待尽量少用(影响执行时间);

定位元素方法重新封装,结合 WebDriverWait 和 expected_conditions 判断元素方法,自己封装一套定位元素方法;

六、如果一个元素无法定位,你一般会考虑哪些方面的原因?

一个元素无法定位,可能的原因有:

页面加载元素过慢,加等待时间;

页面有frame框架页,需要先跳转入frame框架再定位;

可能该元素是动态元素,定位方式要优化,可以使用部分元素定位或通过父节点或兄弟节点定位;

可能识别了元素,但是不能操作,比如元素不可用,不可写等。需要使用js先把前置的操作完成。

七、你的自动化用例的执行策略是什么?

自动化用例的执行策略的含义:

自动化测试用例是用来监控的。集成到Jenkins,创建定时任务定时执行;

有些用例在产品上线前必须回归。Jenkins上将任务绑定到开发的build任务上,触发执行;

有些用例不需要经常执行。Jenkins创建一个任务,需要执行的时候人工构建即可。

八、编写自动化用例的原则?

编写自动化用例的原则包括以下几个方面:

一个用例是一个完整的场景。

一个用例只验证一个功能点。

用例与用例之间尽量避免产生依赖。

一条用例完成测试之后需要对测试场景进行还原,以免影响其它用例的执行。

脚本编写好了之后,需要反复执行,不断调试,直到运行正常为止。脚本的编写和命名要符合管理规范,以便统一管理和维护。

九、selenium工作原理?

Selenium的工作原理可以概括为以下5个方面:

selenium client(Python等语言编写的自动化测试脚本)初始化一个service服务,通过webdriver启动浏览器驱动程序chromedriver.exe;

通过RemoteWebDriver向浏览器驱动程序发送HTTP请求,浏览器驱动程序解析请求,打开浏览器,并获得sessionid,如果再对浏览器操作需携带此sessionid;

打开浏览器后,所有的selenium的操作(访问地址,查找元素)均通过RemoteConnection链接到remote server,然后使用execute方法调用request方法通过urlib3向remote server请求;

浏览器通过请求的内容执行对应动作;

浏览器再把执行的动作结果通过浏览器驱动程序返回给测试脚本。

十、你的自动化框架结构是怎么样的?

搭建的自动化测试框架采用分层设计模型框架,主要分为以下几个模块:

common:一些基础的底层方法类,例如:测试报告类、数据配置读取类、日志类、封装webdriver类、数据库连接类、发送邮件类、公共方法类,只要是我们想要实现的一些功能,可以把基础方法的实现放在common文件夹。

config:配置文件放在这里,比如:账号密码、数据库连接地址等。

log:运行用例后,日志的存储文件夹。

report:运行用例后,测试报告的存储文件夹。

page:在POM设计模式下,关于具体UI页面操作的方法。

test_case:具体存放编写的测试用例。

run_all:用来批量运行测试用例。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

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

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

相关文章

java009 - Java面向对象基础

1、类和对象 1.1 什么是对象 万物皆对象,客观存在的事物皆为对象。 1.2 什么是面向对象 1.3 什么是类 类是对现实生活中一类具有共同属性和行为的事物抽象。 特点: 类是对象的数据类型类是具有相同属性和行为的一组对象的集合 1.4 什么是对象的属…

装饰器模式 详解 设计模式

装饰器模式 它允许你在不改变对象结构的情况下,动态地将新功能附加到对象上。 结构: 抽象组件(Component):定义了原始对象和装饰器对象的公共接口或抽象类,可以是具体组件类的父类或接口。具体组件&…

【c++】stack和queue模拟实现

> 作者简介:დ旧言~,目前大二,现在学习Java,c,c,Python等 > 座右铭:松树千年终是朽,槿花一日自为荣。 > 目标:能手撕stack和queue模拟 > 毒鸡汤:…

Spring Cloud 构建面向企业的大型分布式微服务快速开发框架+技术栈介绍

分布式架构图 Cloud架构清单 Commonservice(通用服务) 1)清单列表 2)代码结构 Component(通用组件) 1)清单列表 2)代码结构 快速开发管理平台——云架构【系统管理平台】 一…

深度学习-回顾经典AlexNet网络:山高我为峰

深度学习-回顾经典AlexNet网络之山高我为峰 深度学习中,经典网络引领一波又一波的技术革命,从LetNet到当前最火的GPT所用的Transformer,它们把AI技术不断推向高潮。2012年AlexNet大放异彩,它把深度学习技术引领第一个高峰&#x…

MySQL:合并查询语句

1、查询表的数据 t_book表数据 SELECT * FROM db_book.t_book; t_booktype表数据 SELECT * FROM db_book.t_booktype; 提醒: 下面的查询操作的数据来自上图查询表的数据 2. 使用 UNION 查询结果合并,会去掉重复的数据 使用UNION关键字是,数…

linux_day04

大纲:命令,vim,gcc,编译工具,生成代码,调试,库makefile,系统编程 文件系统:文件属性,文件内容,万物皆文件(不在内存中的是文件&#…

新书速览|Python数据科学应用从入门到精通

系统教授数据科学与Python实战,涵盖线性回归、逻辑回归、决策树、随机森林、神经网 本书内容 随着数据存储、数据处理等大数据技术的快速发展,数据科学在各行各业得到广泛的应用。数据清洗、特征工程、数据可视化、数据挖掘与建模等已成为高校师生和职场…

Python学习 问题汇总(None)

None的总结 在Python中,对于一些变量往往需要赋初始值,为了防止初始值与正常值混淆,通常采用置0或置空操作,置0比较简单,置空则是赋NoneNone是一个空值,可以赋给任意类型的变量,起到占位的作用…

【Godot4自学手册】第十七节主人公的攻击和敌人的受伤

本节主要学习主人公是如何向敌人发起进攻的,敌人是如何受伤的,受伤时候动画显示,击退效果等。其原理和上一节内容相同,不过有许多细节需要关注和完善。 一、修改Bug 在本节学习之前,我将要对上一节的代码进行完善&am…

基础小白快速入门Python------>模块的作用和意义

模块, 这个词听起来是如此的高大威猛,以至于萌新小白见了瑟瑟发抖,本草履虫见了都直摇头,好像听上去很难的样子,但是但是,年轻人,请听本少年细细讲述,他只是看起来很难,实…

MySql安全加固:可信IP地址访问控制 设置密码复杂度

MySql安全加固:可信IP地址访问控制 & 设置密码复杂度 1.1 可信IP地址访问控制1.2 设置密码复杂度 💖The Begin💖点点关注,收藏不迷路💖 1.1 可信IP地址访问控制 当您在创建用户时使用’%作为主机部分,…

【爬虫逆向实战 逆向滑块 Python+Node】今天逆向的网站有点嘿嘿,还是仅供学习,别瞎搞

逆向日期:2024.03.01 使用工具:Node.js、Python 加密方法:AES标准算法 文章全程已做去敏处理!!! 【需要做的可联系我】 AES解密处理(直接解密即可)(crypto-js.js 标准算…

大模型生成,Open API调用

大模型是怎么生成结果的 通俗原理 其实,它只是根据上文,猜下一个词(的概率)…… OpenAI 的接口名就叫【completion】,也证明了其只会【生成】的本质。 下面用程序演示【生成下一个字】。你可以自己修改 prompt 试试…

Appium移动端自动化测试-(Java)

目录 环境搭建ADB调试工具adb构成adb工作原理adb常用命令电脑连接多个设备跟模拟器使用adb包名与界面名的概念如何获取包名和界面名文件传输获取app启动时间获取手机日志其他命令 Appium全自动化测试框架(python)冲错了序言 环境搭建Appium客户端安装App…

IDEA切换 Springboot初始化 URL

🌹作者主页:青花锁 🌹简介:Java领域优质创作者🏆、Java微服务架构公号作者😄 🌹简历模板、学习资料、面试题库、技术互助 🌹文末获取联系方式 📝 往期热门专栏回顾 专栏…

【矩阵】【方向】【素数】3044 出现频率最高的素数

作者推荐 动态规划的时间复杂度优化 本文涉及知识点 素数 矩阵 方向 LeetCode 3044 出现频率最高的素数 给你一个大小为 m x n 、下标从 0 开始的二维矩阵 mat 。在每个单元格,你可以按以下方式生成数字: 最多有 8 条路径可以选择:东&am…

C语言基础(三)——函数

六、函数 6.1 函数的声明与定义—嵌套调用 6.1.1 函数的声明与定义 函数间的调用关系是,由主函数调用其他函数,其他函数也可以互相调用,同一个函数可以背一个或多个函数调用任意次。 下例中有两个c文件, func.c是子函数printstar和print_me…

光伏气象站的组成

TH-FGF9光伏气象站主要由以下几个部分组成: 光伏组件:光伏组件是光伏气象站的核心部分,其主要功能是将太阳能转化为电能,为气象站的各项设备提供电源。光伏组件通常由多个光伏电池板组成,能够有效地吸收并利用太阳能。…

C++:String类的使用

创作不易,感谢三连!! 在C语言中,我们想要存储字符串的话必须要用字符数组 char str[]"hello world"这其实是将在常量区的常量字符串拷贝到数组中,我们会在数组的结尾多开一个空间存储\0,这样我…