软件测试面试题之自动化测试题大合集(上)

文章末尾给大家准备了大量福

前言

到了招聘季节,小伙伴们都在忙着找工作,今天笔者就和大家来唠唠大厂自动化测试的面试题有哪些,希望可以帮助到各位小伙伴哟。

软件测试面试题之自动化测试题大合集(上)_第1张图片

1 什么是POM,为什么要使用它?

POM是Page Object Model的简称,它是一种设计思想,而不是框架。大概的意思是,把一个一个页面,当做一个对象,页面的元素和元素之间操作方法就是页面对象的属性和行为,所以自然而然就用了类的思想来组织我们的页面。一般一个页面写一个类文件,这个类文件包含该页面的元素定位和业务操作方法

为了我们测试用例写的简单,清晰,我们很多时候在页面对象会封装很多业务操作方法,测试脚本只需要调用相关方法就可以。

2如果页面元素经常发生需求变化,你是如何做?

采用POM思想。好处就是只要改一个页面,我就去修改这个页面对象的元素定位和相关方法,脚本不需要修改。

3 在你做自动化过程中,遇到了什么问题吗?举例下

频繁地变更UI,经常要修改页面对象里面代码

运行用例报错和处理,例如元素不可见,元素找不到这样异常

测试脚本复用,尽可能多代码复用

一些新框架产生的页面元素定位问题,例如ck编辑器,动态表格等

4 举例一下你遇到过那些异常,在selenium自动化测试过程中

ElementNotSelectableException :元素不能选择异常

ElementNotVisibleException :元素不可见异常

NoSuchAttributeException :没有这样属性异常

NoSuchElementException:没有该元素异常

NoSuchFrameException :没有该frame异常

TimeoutException : 超时异常

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

5 如何处理alert弹窗

我们常见的alert弹窗有两种:基于windows弹窗和基于web页面弹窗

webdriver是能够处理alert弹窗的,Selenium提供了Alert这个接口。

相关操作代码如下:

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

alert.accept() // 点击弹窗上确定按钮

alert.dismiss() // 点击弹窗的取消按钮

alert.getText() // 获取弹窗上线上的文本文字内容

alert.sendkeys() // 有些弹窗还支持文本输入,这个可以把要输入字符通过sendkeys方法输入

6 在selenium中如何处理多窗口?

这个多窗口之间跳转处理,在实际selenium自动化测试经常遇到。就是,你点击一个链接,这个链接会在一个新的tab打开,然后你接下来要查找元素在新tab打开的页面,所以这里需要用到swithTo方法。

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

7 你查找元素遇到过在Frame里面吗?你是如何处理Frame里面元素定位的?

有时候我们知道元素定位表达式没有问题,但是还是提示no such element,那么我们就需要考虑这个元素是否在frame中。如果在,我们就需要从topwindow,通过swithcTo.Frame()方法来切换到目标frame中,可以通过frame的name、id和index三种方法来定位frame。

8 如何处理下拉菜单?

通常我们也可以通过Click方法来点击下拉菜单里面的元素,还有一种方法,在Selenium中有一个类叫Select,支持这种下拉菜单交互的操作。

基本使用语法是这样的:

Se=new Select(element)
Se.selectByIndex(index)
Se.selectByvalue(value)
Se.selectByVisibleText(text)

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

close是关闭你当前聚焦的tab页面;

而quit是关闭全部浏览器tab页面,并退出浏览器session;

quit一般用在结束测试之前的操作,close用在执行用例过程中关闭某一个页面的操作

10 什么是imlicitlyWait(隐式等待)

webdriver 会在指定的超时时间范围内不断的查找元素,直到找到元素或超时

11 什么是expliciteWait(显式等待)

通常是我们自定义的一段代码,这段代码用来等待某种条件发生后,再继续执行后续的代码

12 如何实现文件上传?

我们在web页面实现文件上传过程中,可以直接把文件在磁盘完整路径,通过sendKeys方法实现上传

13 如何实现鼠标悬停,键盘事件和拖拽动作?

在Webdriver中,处理键盘事件和鼠标事件,一般使用Actions类提供的方法,包括鼠标悬停,拖拽和组合键输入。

这里介绍几个方法

方法: clickAndHold()

使用场景:找到一个元素,点击鼠标左键,不放手。自己可以点击鼠标不松开试试这个场景。

方法:contentClick()

使用场景:模拟鼠标右键点击,一般右键会带出菜单来。

方法:doubelClick()

使用场景:模拟鼠标双击

方法:dragAndDrop(source,target)

使用场景:模拟从source这个位置,拖拽一个元素到target位置

键盘事件方法:keyDown(keys.ALT), keyUp(keys.SHIFT)

使用场景:点击键盘事件,分为两个动作,一个点击键盘,第二个动作是释放点击(松开)

14 在selenium自动化测试中,你一般完成什么类型的测试?

主要是冒烟测试和回归测试。回归测试主要写一些功能稳定,容易实现的场景,通过自动化手段去实现,节约测试时间。

15 你是如何管理你的测试用例并执行?

通过单元测试框架实现,常见的有unittest、pytest

16 自动化测试报告生成

Allure

17 你会封装自动化测试框架吗?

自动化框架主要的核心框架就是分层+PO模式:

分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层。然后再加上日志处理模块,ini配置文件读取模块,unittest+ddt数据驱动模块,jenkins持续集成模式组成。

18 自动化测试有误报过bug吗?产生误报怎么办?

有误报过,有时候自动化测试报告中显示发现了bug,实际去通过手工测试去确认又不存在该bug。

误报原因一般是:

1.元素定位不稳定,需要尽量提高脚本的稳定性;

2.开发更新了页面但是测试没有及时更新维护!

19 自动化测试过程中,你遇到了哪些问题,是如何解决的?

1.频繁地变更页面,经常要修改页面对象类里面的代码

2.自动化测试偶尔出现过误报

3.自动化测试结果出现覆盖的情况:Jenkins根据时间建立文件夹

4.自动化测试代码维护比较麻烦

5.自动化测试进行数据库对比数据

20 在上一家公司做自动化测试用的什么框架?

可以说出以下自己擅长的一种:

1.python+selenium+unittest+htmltestrunner

2.python+selenium+pytest+allure

3.robotframework+Selenium2Library

21 遇到frame框架页面怎么处理?

先用driver.switch_to.frame()跳转进去frame,

然后再操作页面元素,

操作完后使用driver.swith_to.default_content()跳转出来

22 遇到alert弹出窗如何处理?

使用driver.switch_to.alert()方法先跳转到alert弹出窗口

然后再通过accept点击确定按钮;

通过dismiss点击取消难;

通过text获得弹出窗口的文本;

23 什么是断言

断言assert 用于代码中验证实际结果符合预期结果,如果测试用例失败,则抛出异常并且提供断言日志

24 如何提高selenium脚本的执行速度

1、优化等待时间,使用WebDriverWait智能等待代替强制等待sleep和隐式等待imlicitlyWait

2、减少不必要的操作

3、在服务器允许的情况下,使用多线程实现并发执行测试用例

25 怎么对含有验证码的功能进行自动化测试

图像识,难度大,效果不好不推荐

屏蔽验证码,邀请开发处理,在测试环境,预发和正式环境恢复

26 自动化测试分为哪几类

UI自动化:又分为web和和app自动化

接口自动化

27 自动化测试的使用场景?

需求稳定,不会频繁变更。

研发和测试周期长,需要频繁执行回归测试。

需要在多种平台上重复运行相同测试的场景。

某些测试项目,通过手工测试无法实现,或者手工成本太高。

被测软件的开发较为规范,能够保证系统的可测试行

28 请描述一下自动化测试流程?

1.编写自动化测试计划

2.设计自动化测试用例

3.编写自动化测试框架和脚本

4.调试并维护脚本

5.无人值守测试

6.后期脚本维护(添加用例、开发更新版本)

29 一个接口的响应在下一个接口中怎么用?(一个请求依赖另一个请求的返回结果)

cookie 全局变量 反射

存储到excel表,需要时再取

框架里边的期望结果: 查库 依赖用户成功之后

30 web和app自动化有什么不同?

1 启动差别

app端:在执行用例的时候,一部安卓手机同一时刻只能打开一个apk包进行操作

web端:在web端,通过Python多线程(或多进程)同时开启几个浏览器,让selenium对多个浏览器进行操作;

2 安装检查

app端:需要先检查软件是否安装才能进行测试

web端:不需要安装,在浏览器中输入url就可以测试。

3 页面元素操作

app端:需要保证不可见的元素显示在手机页面才能对它进行操作。

web端:如果遇到需要下拉才能加载的页面,可以用js操作滚动条。

4 元素定位

app端:部分定位方式不支持,比如css_selector和link_text

web端:name,id,class_name,css,xpath、link_text、partrail_link_text、tag_name

5 启动方式

app端:需要制定desired_caps内容,因为里面包含了设备信息等。

web端:通过启动webdriver不同的浏览器类,获取driver,如webdriver.Chrome(),也可以模拟手机端加载wap页面做wap页面的测试。

31 unitest和pytest框架讲解以及使用的是哪个一个为什么不用另一个?

较unittest,pytest有以下优点

自动发现测试模块、测试方法

断言使用asert+表达式

可以设置会话级、模块级、类级、函数级的fixtures、数据准备+清理工作

有丰富的插件库,目前在300个以上。

总结

今天的文章就到这里了哟,喜欢的小伙伴记得点赞收藏评论加关注哟。

软件测试面试题之自动化测试题大合集(上)_第2张图片

 最后我给大家留下了大量的福利需要的小伙伴可以私信关键字“资料”获取哟。

项目实战

app项目,银行项目,医药项目,电商,金融

软件测试面试题之自动化测试题大合集(上)_第3张图片

全套软件测试自动化测试教学视频

软件测试面试题之自动化测试题大合集(上)_第4张图片

​300G教程资料下载【视频教程+PPT+项目源码】

软件测试面试题之自动化测试题大合集(上)_第5张图片

​全套软件测试自动化测试大厂面经

软件测试面试题之自动化测试题大合集(上)_第6张图片

​python自动化测试++全套模板+性能测试

软件测试面试题之自动化测试题大合集(上)_第7张图片

你可能感兴趣的:(软件测试,自动化测试)