当前位置:网站首页>自动化测试常见的面试题
自动化测试常见的面试题
2022-06-23 03:48:00 【fish_study_csdn】
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方法。
需要获取当前浏览器多窗口句柄,然后根据判断跳转新句柄还是旧句柄
边栏推荐
- PTA:7-37 学号解析
- Questions about SQL statements
- [从零开始学习FPGA编程-40]:进阶篇 - 设计-竞争与风险Risk或冒险
- mysql如何删除表的一行数据
- Implementation of VGA protocol based on FPGA
- Mysql, field problem
- 靜態查找錶和靜態查找錶
- Code refactoring Guide
- Similar to RZ / SZ, trzsz supporting TMUX has released a new version
- 8 key indicators to measure technology debt in 2022
猜你喜欢

【深度学习】深度学习推理框架 TensorRT MNN OpenVINO ONNXRuntime

flutter系列之:flutter中的Wrap

会话和守护进程

众昂矿业:新能源新材料产业链对萤石需求大增

Imitation 360 desktop suspended ball plug-in

浅析2022年物联网现状

AI 视频云 VS 窄带高清,谁是视频时代的宠儿

JD cloud distributed database stardb won the "stability practice pioneer" of China Academy of information technology

Particle animation background login page particles js

摆烂LuoGu刷题记
随机推荐
基于FPGA的VGA协议实现
PTA:6-71 时钟模拟
redis 精讲系列介绍八 - 淘汰策略
虫子 日期类 上 太子语言
京东云分布式数据库StarDB荣获中国信通院 “稳定性实践先锋”
How to solve the problem that the web page fails to log in after the easycvr service is started?
粒子动画背景登录页面particles.js
PTA: Simulation Implementation of 7-86 set (function template)
Pytoch --- pytoch customizes the dataset
Introduction to deep learning
Imitation 360 desktop suspended ball plug-in
浅析2022年物联网现状
PTA:7-85 数据的间距问题(重载+函数模板)
Online text filter less than specified length tool
Software development in 2022: five realities CIOs should know
svg d3. JS generate tree tree view
深度学习 简介
[Shangshui Shuo series] day three - preview4
在word里,如何让页码从指定页开始编号
Redis启动有问题