热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

目录前言1、什么项目适合做自动化测试?2、什么是PO模式?3、PO模式的封装原则有哪些?4、Python中*args和**kwa

目录

前言

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学习路线图

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

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

 


推荐阅读
author-avatar
hhxsv5
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有