面试中关于自动化测试的认识

目录

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

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

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

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

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

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

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

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

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

十、什么是POM?

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

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

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


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

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

自动化测试的优势:

  • 减少回归测试成本

  • 减少兼容性测试成本

  • 提高测试反馈速度

  • 提高测试覆盖率

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

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

适合做的项目:

  • 项目周期长且相对稳定

  • 需要做频繁的冒烟测试

  • 需要经常做回归测试

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

不适合做的项目:

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

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

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

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

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

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

  • 测试环境的准备与搭建

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

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

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

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

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

  • 良好的脚本注释

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

  • 对异常进行处理

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

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

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

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

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

自动化测试投入产出比:

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

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


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

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

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

  • 项目流程不规范,项目变动频繁导致自动化用例维护成本高。

如何解决:深入理解用户需求,规范开发流程,自动化用例先覆盖已经稳定的功能。

  • 对自动化期望太高。

如何解决:自动化也是一个逐步完善的过程,不可能一下子完全代替手工。

  • 有些自动化工程师的技术能力偏弱。

如何解决:提升编程能力、提升自动化工具使用能力、对新人进行培训等。

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

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

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

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

十、什么是POM?

POM中文字母意思是页面对象模型,POM是一种最近几年非常流行的自动化测试模型,或者说思想。

POM不是一个框架,是一个解决问题的思想。采用POM的目的是为了解决前端中UI变化频繁,从而造成测试自动化脚本维护的成本越来越大。

POM主要有以下优点:

  • 把Web UI对象仓库从测试脚本分离,业务代码和测试脚本分离;

  • 每一个页面对应一个页面类,页面的元素写到这个页面类中;

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

  • 代码复用,从而减少测试脚本代码量;

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

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


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

  • 添加元素智能等待时间driver.implicitly_wait()。

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

Selenium保证元素成功率是通过元素的定位,当然它的定位方法很多,一定能有合适的。

但是在自动化工程的实施过程中,高质量的自动化测试不是只有测试人员保证的,需要开发人员规范开发习惯,如给页面元素加上唯一的name、id等,这样就能大大地提高元素定位的准确性。

当然如果开发人员开发不规范,我们在定位元素的时候尽量使用相对地址定位,这样能减少元素定位受页面变化的影响。只要我们元素定位准确,就能保证每一个操作符合预期结果。

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

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

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

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

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

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

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


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

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

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

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

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

     


以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以评论区,留言【777】直接拿走就好了

各位想获取资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~

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

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

相关文章

怎么给pdf文件加密?pdf文档如何加密

在数字化时代,保护个人和机密信息的重要性越来越受到关注。PDF(Portable Document Format)是一种广泛使用的文件格式,用于共享和存储各种类型的文档。然而,由于其易于编辑和复制的特性,保护PDF文件中的敏感…

xss跨站脚本攻击总结

XSS(跨站脚本攻击) 跨站脚本攻击(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets )CSS的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当…

css基本样式的使用

1、高度和宽度 .c1{height: 300px;width: 500px; }注意事项: 宽度,支持百分比行内标签,默认无效块级标签,默认有效(即使右侧空白,也不给你占用) 块级和行内标签 css样式 标签: di…

我在VScode学Java(Java方法method)

​ 我的个人博客主页:如果’真能转义1️⃣说1️⃣的博客主页 关于Java基本语法学习---->可以参考我的这篇博客:《我在VScode学Java》 关于Java数组学习、JVM中的堆和栈—>可以参考我的这篇文章我在VScode学Java(Java一维数组、二维数组、JVM中的堆…

Android JNI线程的同步 (十三)

🔥 Android Studio 版本 🔥 🔥 了解线程同步的两个变量 🔥 pthread_mutex_t 互斥锁 线程的互斥: 目前存在两个线程 , 线程A和线程B, 只允许只有一个资源对临界资源进程操作 (大概意思就是 : A线程 进入操作临界资源的时候 , 那么 B线程 就要进行等待 . 等到 A线程…

Spark(22):SparkStreaming之DStream创建

目录 0. 相关文章链接 1. RDD队列 1.1. 用法及说明 1.2. 案例实操 2. 自定义数据源 2.1. 用法和说明 2.2. 案例实操 3. Kafka数据源 3.1. 版本选型 3.2. Kafka 0-8 Receiver 模式(当前3.x版本不适用) 3.3. Kafka 0-8 Direct 模式(…

离线安装docker

目录 1、下载docker 安装包 2、上传docker 到服务器目录/opt/ 3、解压docker-19.03.9.tgz 4、解压的docker文件夹全部移动至/usr/bin目录 5、将docker注册为系统服务 6、重启生效 6.1、重新加载配置文件 6.2、启动Docker服务 6.3、查看启动状态 6.4、 设置docker为开…

CS 144 Lab Two -- TCPReceiver

CS 144 Lab Two -- TCPReceiver TCPReceiver 简述索引转换TCPReceiver 实现 测试 对应课程视频: 【计算机网络】 斯坦福大学CS144课程 Lab Two 对应的PDF: Lab Checkpoint 2: the TCP receiver TCPReceiver 简述 在 Lab2,我们将实现一个 TCPReceiver,用…

如何在Ubuntu上安装OpenneBula

OpenNebula是一个开源云计算平台,允许我们在完全虚拟化云中组合和管理VMware和KVM虚拟机 第1步:安装MariaDB数据库服务器 OpenNebula还需要一个数据库服务器来存储其内容。 安装MariaDB: 1 2 sudo apt update sudo apt install mariadb-s…

mac idea 常用快捷键

mac idea 常用快捷键 代码生成: Command N:在代码编辑界面生成setter、getter等代码。当光标在左侧的工程结构时,使用Command N可以创建新的类、包等。 删除和复制: Command Delete:删除当前行。Command D&#…

SringCloud集成Redis工具类

1、pom文件 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>2、redis工具类 Service(value "redisService") Slf4j public class RedisServi…

【深度学习笔记】训练 / 验证 / 测试集

本专栏是网易云课堂人工智能课程《神经网络与深度学习》的学习笔记&#xff0c;视频由网易云课堂与 deeplearning.ai 联合出品&#xff0c;主讲人是吴恩达 Andrew Ng 教授。感兴趣的网友可以观看网易云课堂的视频进行深入学习&#xff0c;视频的链接如下&#xff1a; 神经网络和…

Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面

Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面 虽然说IE6除了部分要求苛刻的需求以外已经被可以不考虑了&#xff0c;但是WIN7自带的浏览器IE8还是需要支持的。 本文这个方法主要的优点&#xff0c;个人觉得就是准备少&#xff0c;不需要上网寻找大量的图片做素材&…

CSS ::file-selector-button伪元素修改input上传文件按钮的样式

默认样式 修改后的样式 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdev…

CNN学习记录

目录 CNN基础知识——卷积(Convolution)、填充(Padding)、步长(Stride): 卷积的三种模式:full, same, valid:

【MySQL】查询进阶

查询进阶 数据库约束约束类型NULL , DEFAULT , UNIQUE 约束主键约束外键约束 聚合查询聚合函数group by子句HAVING 联合查询内连接外连接自连接子查询单行子查询多行子查询 数据库约束 约束类型 NOT NULL #表示某行不能储存空值 UNIQUE #保证每一行必须有唯一的值 DEFAULT #规…

CSS科技感四角边框

实现效果:使用before和after就可以实现,代码量不多,长度颜色都可以自己调整 <!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><style>*{margin:0;padding:0;}html,body{…

PostgreSQL MVCC的弊端

数据库有很多种&#xff08;截至 2023 年 4 月有 897 个&#xff09;。面对如此多的数据库&#xff0c;很难知道该选择什么&#xff01;但有一个有趣的现象&#xff0c;互联网集体决定新应用程序的默认选择。在 2000 年代&#xff0c;传统观点选择 MySQL 是因为像 Google 和 Fa…

vue3+vite+pinia+vue-router+ol项目创建及配置

一、vite (一)、定义 vite官网 (二)、操作步骤 注意&#xff1a;两种方式创建目录结构一致 方式一&#xff1a;vite创建脚手架命令&#xff1a; 命令行&#xff1a;npm create vitelatest 然后选择 方式二&#xff1a;命令行直接声明带上vue 二、pinia (一)、定义 定义&#xf…

快速批量改名文件!随机字母命名,让文件名更有创意!

想要让文件名更加有创意和个性化吗&#xff1f;不妨尝试使用随机字母来批量改名文件&#xff01;无论是照片、文档还是其他文件&#xff0c;只需要简单的几个步骤&#xff0c;您就可以为它们赋予一个独特的随机字母命名。这不仅可以帮助您整理文件&#xff0c;还能增加一些乐趣…