Selenium自动化测试面试题全家桶

news2024/11/26 12:33:17

1、什么是自动化测试、自动化测试的优势是什么?

通过工具或脚本代替手工测试执行过程的测试都叫自动化测试。

自动化测试的优势:

1、减少回归测试成本

2、减少兼容性测试成本

3、提高测试反馈速度

4、提高测试覆盖率

5、让测试工程师做更有意义的测试

2、什么样的项目比较适合做自动化测试,什么样的不适合做自动化测试?

1、适合做的项目:

a.项目周期长且相对稳定

b.需要做频繁的冒烟测试

c.需要经常做回归测试

d.需要进行大数据量的数据驱动测试

2、不适合做的项目:

a.项目周期短用例不会多次重复执行

b.被测项目不稳定变化太频繁

3、说一下开展自动化工作的主要流程是怎样的?

1、选择合适的测试工具

2、定义自动化测试覆盖的范围

3、制定测试计划

4、自动化测试环境搭建

5、脚本开发

6、测试执行

7、测试脚本维护

4、在制定自动化测试计划的时候一般要考虑哪些点?

1、选择适合的测试工具或分析当前的工具是否适合新项目

2、选择合适的自动化测试框架

3、确定要做自动化测试的范围和不做自动化测试的范围

4、测试环境的准备与搭建

5、制定一个粗略的脚本开发的时间表

6、制定脚本执行的一些策略,如冒烟测试的频率,回归测试的时间点及频率等

7、定义自动化测试的输出,比如脚本,测试数据,发现的缺陷,测试报告等

5、编写自动化脚本时的一些规范?

1、统一的命名约定,如用例名,方法名等

2、良好的脚本注释

3、遵循代码规范,使用适当的缩进

4、对异常进行处理

6、你一般一天能编写多少个自动化脚本?

这个取决于测试用例场景的复杂度,一般一天能写2~5个左右,复杂的话一天只能写一个

7、做自动化测试时关注的一些指标?

1、自动化测试用例的覆盖率=自动化测试用例数/所用用例总数,这个比例越高测试反馈越快,成本节约越多

2、节省的时间成本=手工测试所花的时间-自动化测试所花的时间

3、自动化测试的投入=开发脚本的投入+脚本维护的投入+工具价格

4、自动化测试发现的缺陷数,每次回归测试时自动化测试发现的缺陷数及漏测数,反应了自动化用例的有效性

5、自动化测试投入产出比

ROI=(手工测试的成本-自动化测试成本)/自动化测试成本

ROI如果是负值说明自动化测试的成本未收回,ROI为正值说明自动化测试成本已回收,且值越大说明回报越好

8、自动化测试可以达到100%的覆盖率吗?

比较难,因为有些用例场景无法被自动化,一些验证易用性友好性的用例不适合做自动化,有些边缘的用例很少被重复执行,从投入产出比来说也不适合做自动化

9、你们公司开展自动化测试遇到一些什么问题?

1、项目流程不规范,项目变动频繁导致自动化用例维护成本高,解决:深入理解用户需求,规范开发流程,自动化用例先覆盖已经稳定的功能

2、对自动化期望太高,自动化也是一个逐步完善的过程,不可能一下子完全代替手工

3、有些自动化工程师的技术能力偏弱,提升编程能力,提升自动化工具使用能力,对新人进行培训等

10、Selenium驱动浏览器使用的协议是什么?

JsonWireProtocol 是通过使用 webdriver 与 remote server 进行通信的 web service 协议。通过 http 请求,完成和 remote server 的交互。

11、Selenium工具都包含哪些组件?

Selenium WebDriver

Selenium IDE

Selenium Grid

12、Selenium中定位网页元素的八种方式?

13、webdriver启动常见的浏览器语句?

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 公众号:AllTests软件测试
 
from selenium import webdriver
 
driver = webdriver.Chrome()
driver = webdriver.Firefox()
driver = webdriver.Ie()

14、如何选中下拉列表中的下拉选项?

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 公众号:AllTests软件测试
 
# 通过选项的顺序,第一个为0
select_by_index(index)
# 通过value属性
select_by_value(value)
# 通过选项可见文本
select_by_visible_text(text)

15、如何取消选中下拉列表中的下拉选项?

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 公众号:AllTests软件测试
 
deselect_by_index(index)
deselect_by_value(value)
deselect_by_visible_text(text)
deselect_all()

16、Selenium如何处理弹窗?

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 公众号:AllTests软件测试
 
# 确认
driver.switch_to.alert.accept()
# 取消
driver.switch_to.alert.dismiss()
# 在弹出框输入内容
driver.switch_to.alert.send_keys("输入数据")

17、Selenium可以处理Windows弹窗吗?

Selenium本身是不可以处理Windows弹窗的,但是Selenium可以借助Autolt小工具来完成对Windows弹窗的操作。

18、如何判断一个元素在页面上是显示出来的?

webelement类中的is_displayed()方法

本身这个函数用于判断某个元素是否存在页面上(这里的存在不是肉眼看到的存在,而是html代码的存在。某些情况元素的visibility为hidden或者display属性为none,我们在页面看不到但是实际是存在页面的一些元素。)

19、Selenium中如何判断元素是否存在?
 

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 公众号:AllTests软件测试
 
from selenium.common.exceptions import NoSuchElementException
 
# 判断元素是否存在
def isElementPresent(self, by, value):
    try:
        element =self.driver.find_element(by=by, value=value)
    except NoSuchElementException as e:
        # 发生了NoSuchElementException异常,说明页面中未找到该元素,返回False
        return False
    else:
        # 没有发生异常,表示在页面中找到了该元素,返回True
        return True

20、driver.quit()和driver.close()的区别?

driver.close()仅关闭当前用户正在操作的页面

driver.quit()关闭整个浏览器,关闭所有的页面

21、自动化测试用例从哪里来?

1、手工用例中抽取

2、参考自动化用例的执行策略

22、常见的自动化测试框架有哪些?

线性脚本框架、基于模块化的框架、库结构框架、数据驱动框架、关键字驱动框架、混合框架等

23、什么是POM?

POM,中文字母意思是,页面对象模型,POM是一种最近几年非常流行的自动化测试模型,或者思想,POM不是一个框架,是一个解决问题的思想。采用POM的目的是为了解决前端中UI变化频繁,从而造成测试自动化脚本维护的成本越来越大。

POM主要有以下优点:

1、把web ui对象仓库从测试脚本分离,业务代码和测试脚本分离。

2、每一个页面对应一个页面类,页面的元素写到这个页面类中。

3、页面类主要包括该页面的元素定位,和这些元素相关的业务操作代码封装的方法。

4、代码复用,从而减少测试脚本代码量。

5、层次清晰,同时支持多个编写自动化脚本开发,例如每个人写哪几个页面,不影响他人。

6、建议页面类和业务逻辑方法都给一个有意义的名称,方便他人快速编写脚本和维护脚本。

24、Selenium中如何保证操作元素的成功率?也就是说如何保证我点击的元素一定是可以点击的?

1、添加元素智能等待时间driver.implicitly_wait(30)

2、try 方式进行 id,name,class,xPath,css selector 不同方式进行定位,如果第一种失败可以自动尝试第二种

3、Selenium 保证元素成功率是通过元素的定位,当然它的定位方法很多,一定能有合适的。但是在自动化工程的实施过程中,高质量的自动化测试不是只有测试人员保证的,需要开发人员规范开发习惯,如给页面元素加上唯一的 name,id 等,这样就能大大地提高元素定位的准确性。当然如果开发人员开发不规范,我们在定位元素的时候尽量使用相对地址定位,这样能减少元素定位受页面变化的影响。只要我们元素定位准确,就能保证每一个操作符合预期结果。

25、如何提高Selenium脚本的执行速度?

Selenium脚本的执行速度受多方面因素的影响,如网速,操作步骤的繁琐程度,页面加载的速度,以及我们在脚本中设置的等待时间,运行脚本的线程数等。所以不能单方面追求运行速度的,要确保稳定性,能稳定地实现回归测试才是关键。

我们可以从以下几个方面来提高速度:

1、减少操作步骤,如经过三四步才能打开我们要测试的页面的话,我们就可以直接通过网址来打开,减少不必要的操作。

2、中断页面加载,如果页面加载的内容过多,我们可以查看一下加载慢的原因,如果加载的内容不影响我们测试,就设置超时时间,中断页面加载。

3、在设置等待时间的时候,可以sleep固定的时间,也可以检测某个元素出现后中断等待也可以提高速度。

4、配置实现多线程,在编写测试用例的时候,一定要实现松耦合,然后在服务器允许的情况下,尽量设置多线程运行,提高执行速度。

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

自动化测试用例的执行策略是要看自动化测试的目的,通常有如下几种策略:

1、自动化测试用例是用来监控的,在此目的下,我们就把自动化测试用例设置成定时执行的,比如每五分钟或是一个小时执行一次,在 Jenkins 上创建一个定时任务即可。

2、必须回归的用例,有些测试用例在产品变动上线之前都需要回归执行,那我们就把测试用例设置成触发式执行,在 Jenkins 上将我们的自动化测试任务绑定到开发的build任务上,当开发人员在测试环境上部署代码的时候,我们的自动化测试用例就会被触发执行。

3、不需要经常执行的测试用例,像全量测试用例,我们没有必要一直回归执行,必竟还是有时间消耗的,有些非主要业务线也不需要时时回归,这类测试用例我们就采用人工执行,在 Jenkins 上创建一个任务,需要执行的时候人工去构建即可。

27、什么是持续集成?

持续集成源于极限编程(XP),是一种软件实践,软件开发过程中集成步骤是一个漫长并且无法预测的过程。集成过程中可能会爆发大量的问题,因此集成过程需要尽可能小而多,实际上持续集成讲的是不断的去做软件的集成工作。持续集成,最简单的形式是包括一个监控版本控制(SVN、Git等)变化的工具,当变化被发觉时,这个工具可以自动的编译并测试你的应用。

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

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

相关文章

2021年中国环境统计年鉴、工业企业污染排放数据库

《中国环境统计年鉴》是国家统计局和生态环境部及其他有关部委共同编辑完成的一本反映我国环境各领域基本情况的年度综合统计资料。收录了上一年年全国各省、自治区、直辖市环境各领域的基本数据和主要年份的全国主要环境统计数据。 内容共分为十二个部分,即:1.自然状况;2.水环…

收下这份实操案例,还怕不会用Jmeter接口测试工具

一、简介 JMeter,一个100%的纯Java桌面应用,由Apache组织的开放源代码项目,它是接口功能、自动化、性 能测试的工具。具有高可扩展性、支持HTTP、HTTPS、TCP、等多种协议,还可以自己编写Java脚本对 协议进行扩展。 官…

vue 浏览器刷新报404,系统正常访问没问题

这个情况是因为vue的路由出问题了。 采用hash模式即可。 详细请了解: vue router 的两种路由模式hash与history的区别_vue hisotry-CSDN博客 vue默认是是hash

微信小程序(一)

WebView app.是全局配置&#xff0c;app.json是全局配置文件&#xff0c;在页面的.json配置文件中的配置会覆盖我们全局的配置 快捷键&#xff1a; .box 敲回车 ----- <view class"box"></view> .row*8 敲回车&#xff1a; .row{$}*8 敲回车 案例1&…

SpringCloud OpenFeign 服务接口调用

一、前言 接下来是开展一系列的 SpringCloud 的学习之旅&#xff0c;从传统的模块之间调用&#xff0c;一步步的升级为 SpringCloud 模块之间的调用&#xff0c;此篇文章为第四篇&#xff0c;即介绍 Feign 和 OpenFeign 服务接口调用。 二、概述 2.1 Feign 是什么 Feign 是一…

Linux运维:深入了解 Linux 目录结构

Linux运维&#xff1a;深入了解 Linux 目录结构 一、 Linux 目录结构与 Windows之间的主要区别二、Linux根目录结构三、常见目录及其作用 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 一、 Linux 目录结构与 Windows之间的主要区别 1、根…

PXE+Kickstart无人值守安装操作系统

什么是PXE&#xff1f; PXE&#xff0c;全名Pre-boot Execution Environment&#xff0c;预启动执行环境&#xff1b; 通过网络接口启动计算机&#xff0c;不依赖本地存储设备&#xff08;如硬盘&#xff09;或本地已安装的操作系统&#xff1b; 由Intel和Systemsoft公司于199…

2007-2021年中国省级知识产权保护指数数据

2007-2021年中国省级知识产权保护指数数据 1、时间&#xff1a;2007-2021年 2、范围&#xff1a;31省市 3、指标&#xff1a;&#xff1a;年份、省份、IPP&#xff08;知识产权保护指数&#xff09; 4、来源&#xff1a;全国知识产权发展状况报告 5、指标解释&#xff1a;…

游戏党们的福利来啦~格行5G随身WiFi,王者玩家的靠谱之选!5G随身wifi品牌推荐第一名!

作为一名资深王者荣耀玩家&#xff0c;我深知网络对于游戏的重要性。那种关键时刻网络卡顿、延迟&#xff0c;导致错失战机、输掉比赛的痛苦&#xff0c;真是让人欲哭无泪。直到我的游戏搭子给我推荐了一款格行5G随身wifi&#xff0c;简直是打开新世界的大门&#xff01; 格行…

Singularity(四)| 自定义容器

Singularity&#xff08;四&#xff09;| 自定义容器 4.1 Singularity Definition 文件 对于可复制的、高质量的容器&#xff0c;我们应该使用定义文件&#xff08;Definition File&#xff09;构建 Singularity 容器 。使用定义文件的方式可以在纯文本文件中描述容器的配置和…

考研数学|汤家凤《1800》vs 张宇《1000》,怎么选?

汤家凤的1800题和张宇的1000题都是备考数学考研的热门选择&#xff0c;但究竟哪个更适合备考呢&#xff1f;下面分享一些见解。 首先&#xff0c;让我们来看看传统习题册存在的一些问题。虽然传统习题册通常会覆盖考试的各个知识点和题型&#xff0c;但其中一些问题在于它们可…

论文阅读:Editing Large Language Models: Problems, Methods, and Opportunities

Editing Large Language Models: Problems, Methods, and Opportunities 论文链接 代码链接 摘要 由于大语言模型&#xff08;LLM&#xff09;中可能存在一些过时的、不适当的和错误的信息&#xff0c;所以有必要纠正模型中的相关信息。如何高效地修改模型中的相关信息而不影…

LeetCode 每日一题 Day 95-101

2917. 找出数组中的 K-or 值 给你一个整数数组 nums 和一个整数 k 。让我们通过扩展标准的按位或来介绍 K-or 操作。在 K-or 操作中&#xff0c;如果在 nums 中&#xff0c;至少存在 k 个元素的第 i 位值为 1 &#xff0c;那么 K-or 中的第 i 位的值是 1 。 返回 nums 的 K-o…

SpringBoot扩展篇:Spring注入 @Autowired @Resource

Spring注入 Autowired & Resource 1. 概述1.1 职责1.2 流程概述 2. Demo3. AutowiredAnnotationBeanPostProcessor注册4. 注册元数据4.1 AutowiredAnnotationBeanPostProcessor#postProcessMergedBeanDefinition4.2 AutowiredAnnotationBeanPostProcessor#findAutowiringMe…

【NR 定位】3GPP NR Positioning 5G定位标准解读(十二)-Multi-RTT定位

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

Hive面经

hive原理 Hive 内部表和外部表的区别Hive 有索引吗运维如何对 Hive 进行调度ORC、Parquet 等列式存储的优点数据建模用的哪些模型&#xff1f;1. 星型模型2. 雪花模型3. 星座模型 为什么要对数据仓库分层&#xff1f;使用过 Hive 解析 JSON 串吗sort by 和 order by 的区别数据…

React 教程

学习主要来源 React 教程 | 菜鸟教程 React 是一个用于构建用户界面的 JAVASCRIPT 库。 React 主要用于构建 UI&#xff0c;很多人认为 React 是 MVC 中的 V&#xff08;视图&#xff09;。 React 起源于 Facebook 的内部项目&#xff0c;用来架设 Instagram 的网站&#xff0…

GSEA -- 学习记录

文章目录 brief统计学原理部分其他注意事项转录组部分单细胞部分 brief 上一篇学习记录写了ORA&#xff0c;其中ORA方法只关心差异表达基因而不关心其上调、下调的方向&#xff0c;也许同一条通路里既有显著高表达的基因&#xff0c;也有显著低表达的基因&#xff0c;因此最后…

2023年第三届中国高校大数据挑战赛第二场赛题C:用户对博物馆评论的情感分析(附上代码与详细视频讲解)

问题重述&#xff1a; 博物馆是公共文化服务体系的重要组成部分。国家文物局发布&#xff0c; 2021 年我国新增备案博物馆 395 家&#xff0c;备案博物馆总数达 6183 家&#xff0c;排名全球前列&#xff1b;5605 家博物馆实现免费开放&#xff0c;占比达 90%以上&#xff1b;…

基于Springboot的高校汉服租赁网站(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的高校汉服租赁网站&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构…