当前位置: 首页 > news >正文

25k的自动化测试面试题,原来都是这样~

目录

前言

1、什么项目适合做自动化测试?

2、什么是 PO 模式?

3、PO 模式的封装原则有哪些?

4、 Python 中 *args 和 **kwargs 的作用?

5、Python 中的垃圾回收机制是什么?

6、Web自动化元素定位

7、关闭浏览器中quit和close的区别

8、举例一下你遇到过那些异常

9 、关闭浏览器中quit和close的区别

10 、如何处理alert弹窗, 在selenium中如何处理多窗口?

结语


前言

小编热衷于收集整理资源,记录踩坑到爬坑的过程。希望能把自己所学,实际工作中使用的技术、学习方法、心得及踩过的一些坑,记录下来。也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己的方法,并应用到实际中。

1、什么项目适合做自动化测试?

关键字:不变的、重复的、规范的

第一点,需求变化不能太频繁;

第二点,项目周期要足够长,如果自动化代码还没有写完,公司就倒闭了,那也不需要自动化了

第三点,脚本可以重复使用:在一些典型的场景,比如说 “冒烟测试、回归测试” 的地方就是经常使用自动化测试;

第四点,被测试的软件是否规范:比如说是不是有需求文档、规范的接口文档、是否有原型图、你的接口设计是不是比较规范;

第五点,手工测试是无法完成的;比如说一个性能测试,不能同时有 一千只手一直做好点点点,自动化测试的成本不是特别高

2、什么是 PO 模式?

PO模式:全称:Page Object Model (译:配只.奥播摘可t.毛豆)简称POM,叫做页面对象,针对页面、UI界面;

PO 思想主要来源于 马丁福勒(marktin Flowwer)在 2004年发表的一篇文章最开始他不叫 PO ,而是叫做 window driver ,后来 selenium 沿用了这种思想,所以改成了 PO;

主要用途:是把一个具体的页面转化为编程语言当中的一个对象,页面特性转化成对象属性,页面操作转化为对象方法;

在自动化测试当中,主要用来实现对页面操作和测试逻辑的一个分离;

3、PO 模式的封装原则有哪些?

selenium 在官方的 wiki 上面给我们提供了六个原则,实际测试过程中可以这么理解:

第一个原则是,公共方法表示页面提供的一个服务,比如我们可以把 登录封装成一个 logo 的方法,把搜索方法封装成一个设施方法,把注册操作封装成一个 register 的方法;

第二个原则是,尽量不要暴露页面的内部;比如说一个HTML的页面还有一个页面的上下结构;

第三个原则是,在 PO 当中一般不做断言,会做到页面逻辑和测试逻辑的分离

第四个原则是,PO 一般里面的方法返回 self 或者是其他的 Page Object 也可以是一个元素属性

第五个原则是,整个 PO 你不需要封装整个页面的行为,用到什么逻辑就封装什么

第六个原则是,对于统一操作,如果出现不同的结果,可以把用不同的方法来表示,比如说登录成功有跳转,登录失败有报错,如果登录还有一种会授权的状况,那么可以封装成三个单独的方法:login success、login error、login invalid

4、 Python 中 *args 和 **kwargs 的作用?

都是不定长,可以解决函数中参数不固定的问题,*args 可以把位置参数转化成元祖;**kwargs 可以把 关键字参数转化成字典;

5、Python 中的垃圾回收机制是什么?

我们常用的Python 解释器 CPython 主要使用了三种垃圾回收机制来完成对这个无效数据的回收以及内存的释放,分别是:引用计数、标记清除 还有 分代回收

6、Web自动化元素定位

Selenium中hidden或者是display = none的元素是否可以定位到?

不能,可以写JavaScript将标签中的hidden先改为0,再定位元素

7、关闭浏览器中quit和close的区别

简单来说,两个都可以实现退出浏览器session功能,close是关闭你当前聚焦的tab页面,而quit是关闭全部浏览器tab页面,并退出浏览器session。知道这两个区别,我们就知道quit一般用在结束测试之前的操作,close用在执行用例过程中关闭某一个页面的操作。

8、举例一下你遇到过那些异常

在selenium自动化测试过程中

通过这个问题,大概知道你写过多少脚本。写脚本过程最常见的异常就是,这个元素无法找到。

常见的selenium有以下这些:

ElementNotSelectableException :元素不能选择异常

ElementNotVisibleException :元素不可见异常

NoSuchAttributeException :没有这样属性异常

NoSuchElementException:没有该元素异常

NoSuchFrameException :没有该frame异常

TimeoutException : 超时异常

Element not visible at this point :在当前点元素不可见

9 、关闭浏览器中quit和close的区别

简单来说,两个都可以实现退出浏览器session功能,close是关闭你当前聚焦的tab页面,而quit是关闭全部浏览器tab页面,并退出浏览器session。知道这两个区别,我们就知道quit一般用在结束测试之前的操作,close用在执行用例过程中关闭某一个页面的操作。

10 、如何处理alert弹窗, 在selenium中如何处理多窗口?

webdriver是能够处理alert弹窗的,Selenium提供了Alert这个接口。相关操作代码如下:

// 切换到Alert
Alert alert = driver.switchTo().alert();

你点击一个链接,这个链接会在一个新的tab打开,然后你接下来要查找元素在新tab打开的页面,所以这里需要用到swithTo方法。

需要获取当前浏览器多窗口句柄,然后根据判断跳转新句柄还是旧句柄

结语

感谢每一个认真阅读我文章的人!!!

如果下面这些资料用得到的话可以直接拿走:

1、自学开发或者测试必备的完整项目源码与环境

2、测试工作中所有模板(测试计划、测试用例、测试报告等)

3、软件测试经典面试题

4、Python/Java自动化测试实战.pdf

5、Jmeter/postman接口测试全套视频获取

6、Python学习路线图

重点:配套学习资料和视频教学

那么在这里我也精心准备了上述大纲的详细资料包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。需要的朋友

 

相关文章:

  • 猿创征文|我的焚膏继晷之路
  • Linux (Ubuntu)磁盘管理与文件压缩解压(入门必看)
  • CentOS上安装Docker
  • 一文搞定IDEA中SpringBoot项目环境的热部署
  • Java运算符
  • HIS -- 医院信息管理系统业务流程
  • 【精讲】后台项目 采用vue2框架 完整版内含详细注释 1
  • UVA 10271 佳佳的筷子 Chopsticks [DP的基本运用]
  • 【计算机视觉】尺度不变特征变换(SIFT)
  • 计算机网络基础概念
  • Scala系列一:变量和数据类型
  • ROS从入门到精通3-4:urdf集成Gazebo联合仿真
  • 2、操作系统基本原理
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • [Java]快速入门二叉树,手撕相关面试题
  • 分享一款快速APP功能测试工具
  • 【node学习】协程
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 【知识碎片】第三方登录弹窗效果
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Apache Spark Streaming 使用实例
  • If…else
  • JavaWeb(学习笔记二)
  • Java小白进阶笔记(3)-初级面向对象
  • React16时代,该用什么姿势写 React ?
  • 力扣(LeetCode)21
  • 聊聊flink的TableFactory
  • 排序算法之--选择排序
  • 前端知识点整理(待续)
  • 前端自动化解决方案
  • 如何解决微信端直接跳WAP端
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • 通过npm或yarn自动生成vue组件
  • 小程序 setData 学问多
  • 小程序测试方案初探
  • ​渐进式Web应用PWA的未来
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #NOIP 2014#Day.2 T3 解方程
  • #pragma multi_compile #pragma shader_feature
  • #在线报价接单​再坚持一下 明天是真的周六.出现货 实单来谈
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (九十四)函数和二维数组
  • (力扣)1314.矩阵区域和
  • (牛客腾讯思维编程题)编码编码分组打印下标题目分析
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • (三)终结任务
  • (一) storm的集群安装与配置
  • (转)Linux下编译安装log4cxx
  • (转)setTimeout 和 setInterval 的区别
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .NET 4.0中使用内存映射文件实现进程通讯
  • .Net 8.0 新的变化
  • .net Application的目录