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

目录

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

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

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

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

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

六、自动化测试可以达到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.mfbz.cn/a/39371.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C#图片处理

查找图片所在位置 原理:使用OpenCvSharp对比查找小图片在大图片上的位置 private static System.Drawing.Point Find(Mat BackGround, Mat Identify, double threshold 0.8) {using (Mat res new Mat(BackGround.Rows - Identify.Rows 1, BackGround.Cols - Iden…

WEB:shrine

背景知识 了解Flask SSIT模板注入 题目 进行代码审计 import flask import osapp flask.Flask(__name__) /*创建了flask包下的Flask类的对象,name是一个适用于多数情况的快捷方式。有了这个参数,Flask才知道在哪里可以找到模板和静态文件*/app.confi…

【Fiddler】Fiddler实现mock测试(模拟接口数据)

软件接口测试过程中,经常会遇后端接口还没有开发完成,领导就让先介入测试,然后缩短项目时间,有的人肯定会懵,接口还没开发好,怎么介入测试,其实这就涉及到了我们要说的mock了。 一、mock原理 m…

小程序:页面跳转闪屏

自己的笔记,随手记录。扛精走开。 1、问题描述 进入页面,是一个组件,通过路由传参判断是由哪个页面进入,不同的页面拿的已选值不一样,需要回显值,在编辑数据。此时会出现一个问题,A页面中进来…

微信小程序——字符串截取

indexOf() : 判断一个字符是否在字符串 中 存在,如果存在返回该元素或字符第一次出现 的 位置 的 索引,不存在返回-1。 lastIndexOf() : 返回一个指定的字符串值最后出现的位置,在一个字符串中的指定位置从后向前搜索。…

【NLP】多头注意力概念(02)

接上文: 【NLP】多头注意力概念(01) 五、计算注意力 将 Q、K 和 V 拆分为它们的头部后,现在可以计算 Q 和 K 的缩放点积。上面的等式表明,第一步是执行张量乘法。但是,必须先转置 K。 展望未来,每个张量的seq_length形状将通过其各自的张量来识别,以确保清晰…

⚡【C语言趣味教程】(3) 浮点类型:单精度浮点数 | 双精度浮点型 | IEEE754 标准 | 介绍雷神之锤 III 源码中的平方根倒数速算法 | 浮点数类型的表达方式

🔗 《C语言趣味教程》👈 猛戳订阅!!! ​—— 热门专栏《维生素C语言》的重制版 —— 💭 写在前面:这是一套 C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅&#…

Linux Ubuntu安装RabbitMQ服务

文章目录 前言1.安装erlang 语言2.安装rabbitMQ3. 内网穿透3.1 安装cpolar内网穿透(支持一键自动安装脚本)3.2 创建HTTP隧道 4. 公网远程连接5.固定公网TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 RabbitMQ是一个在 AMQP(高级消息队列协议)基…

使用qemu创建ubuntu-base文件系统,并安装PM相关内核模块

目录 一、配置镜像二、使用qemu模拟nvdimm(安装PM相关内核模块)运行记录 遇到的一些问题1、ext4文件系统损坏问题:系统启动时,遇到ext4的报错信息解决办法:2、内核模块未成功加载3、qemu报错4、主机终端无法正常打开5、…

【Spring 】执行流程解析:了解Bean的作用域及生命周期

哈喽,哈喽,大家好~ 我是你们的老朋友:保护小周ღ 今天给大家带来的是 Spring 项目的执行流程解析 和 Bean 对象的6 种作用域以及生命周期,本文将为大家讲解,一起来看看叭~ 本期收录于博主的专栏:JavaEE_保…

数据库应用:MySQL高级语句(一)

目录 一、理论 1.常用查询 2.函数 3.进阶查询 二、实验 1.普通查询 2.函数 3.进阶查询 三、问题 1.MySQL || 运算符不生效 四、总结 一、理论 1.常用查询 常用查询包括:增、删、改、查; 对 MySQL 数据库的查询,除了基本的查询外…

网络安全能力成熟度模型介绍

一、概述 经过多年网络安全工作,一直缺乏网络安全的整体视角,网络安全的全貌到底是什么,一直挺迷惑的。目前网络安全的分类和厂家非常多,而且每年还会冒出来不少新的产品。但这些产品感觉还是像盲人摸象,只看到网络安…

09_SPI-Flash 页写实验

09_SPI-Flash 页写实验 1. 实验目标2. 操作时序3. 模块框图3.1 顶层模块3.2 页写模块 4. 波形图5. RTL5.1 flash_pp_ctrl5.2 spi_flash_pp 6. Testbench6.1 tb_flash_pp_ctrl6.2 tb_spi_flash_pp 1. 实验目标 使用页写指令,向 Flash 中写入 N 字节数据,…

Linux查看某进程所部署的目录路径

1.首先查看系统中正在跑的进程都有什么 ps -ef 2.然后通过抓取你要看的进程名,比如哪些服务 ps -ef | grep xxxxx(服务名) Linux在启动一个进程时,系统会在 /proc 下创建一个以PID命名的文件夹; 在该文件夹下会有我们的进程的信息&#…

高时空分辨率、高精度一体化预测技术之风、光、水能源自动化预测教程

详情点击链接:高时空分辨率、高精度一体化预测技术之风、光、水能源自动化预测 第一:预测平台及安装 一、高精度气象预测基础 综合气象观测数值模拟模式; 全球预测模式、中尺度数值模式; 二、自动化预测平台 Linux系统 Crontab…

redis 相关

redis相关面试题 redis支持哪几种数据形式? String,hash,set,zset,list redis主要消费什么物理资源? 内存,key-value的形式, redis 具有快速和数据持久化的特征,如果不将数据放在内存中,磁盘 I/O 速度为严…

PWM呼吸灯+流水灯设计

完成任务: 在流水灯基础上加入pwm呼吸灯设计,关于pwm呼吸灯设计可以看博主上一篇博客PWM呼吸灯设计 ,开发板上灯每两秒进行一次切换,每一个的亮灭间隔为一秒。 代码参考: module pwm_led_change(input wire …

element-ui select数据回显显示数字的问题 el-select校验失效出现阿拉伯数字问题

初始化参数 return {fields: [{"title":"景区","id":0},{"title":"酒店","id":1}],evaluates: [{"title":"好评","id":0},{"title":"中评","id":1…

Spring Data JPA使用规则和审计的学习

一、引入依赖 完整的pom文件如下所示: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http…

css3的新特性

动画效果 过渡 transition 鼠标放上去瞬间变大 过渡是变大的过程慢慢变化 第一个参数&#xff1a;对哪些值进行过渡。all为hover中所有&#xff0c;也可以指定属性 第二个参数&#xff1a;让动画过渡多长时间。要添加单位&#xff08;s秒&#xff09; 第三个参数&#xff1…
最新文章