范文资料网>人事资料>招聘与面试>《自动化测试面试题及答案

自动化测试面试题及答案

时间:2023-07-26 13:40:01 招聘与面试 我要投稿
  • 相关推荐

自动化测试面试题及答案

  自动化技术是一门综合性技术,自动化和控制论、信息论、系统工程、计算机技术、电子学、液压气压技术、自动控制等都有着十分密切的关系,以下是小编为你整理的自动化测试面试题及答案,希望能帮到你。

自动化测试面试题及答案

  自动化测试面试题

  1. 你比较熟悉那种自动化测试工具?

  2. 你在你以前工作中是如何使用自动化测试工具的?

  3. 介绍一下你在利用自动化测试工具的过程中遇到的一些问题

  4. 你是如何计划自动化测试的?

  5. 自动化测试能提高测试效率吗?

  6. 什么是data-driven automoation(数据启动自动化)?

  7. 测试自动化的主要特征有哪些?

  8. 自动化测试可以代替手工测试吗?

  9.自动化测试的好处是什么?

  10. 自动化测试容易出现的误区有哪些?

  11. 介绍一下测试自动化的常见问题?

  12. 你知道哪些测试自动化的脚本技术?

  13. 测试用例的设计可以自动化吗?

  自动化测试面试题及答案1

  一、第一个最常被问到的问题:你最熟悉的元素定位方式有哪些?

  id :根据 id 来获取元素,返回单个元素, id 值一般是唯一的;

  name :根据元素的 name 属性定位;

  tagName :根据元素的标签名定位;

  className :根据元素的样式 class 值定位;

  linkText :根据超链接的文本值定位;

  partialLinkText :根据超链接的部分文本值定位;

  cssSelector : css 选择器定位;

  xpath :通过元素的路径来定位;

  优先级最高: ID

  优先级其次: name

  优先级再次: CSS selector

  优先级再次: Xpath

  二、如果一个元素无法定位,你一般会考虑哪些因素呢?

  这个在我们实际自动化测试过程中也会经常遇到,那一般可以从以下几个方面去考虑:

  1、元素定位的方式有误,可以检查元素定位的方法是否正确

  2、页面元素加载过慢,需要添加等待时间

  3、页面中有框架面,需要先切换到正确的frame框架再进行定位

  三、如果一个元素无法定位,你一般会考虑哪些因素呢?

  这个在我们实际自动化测试过程中也会经常遇到,那一般可以从以下几个方面去考虑:

  1、元素定位的方式有误,可以检查元素定位的方法是否正确

  2、页面元素加载过慢,需要添加等待时间

  3、页面中有框架面,需要先切换到正确的frame框架再进行定位

  四、说一说你知道的自动化测试框架

  1、RobotFramework

  2、Pytest

  3、Unittest

  4、PyUnit

  五、自动化测试中有几种等待方式,它们之间有什么区别吗?

  1、强制等待

  time.sleep(3):这种等待方式,意味着必须要等待3秒才可以执行后续的代码。这种形式不够灵活,有可能页面3秒之内已经加载完了,但是还是需要等待3秒才能进行下一步操作。

  2、隐式等待

  Imlicitlywait:这种形式的等待会在时间内不断查找元素,找到后就可以停止等待。但是这种形式需要等待整个页面加载完成才能进行下一步操作。

  3、显式等待

  WebDriverWait:这种形式的等待,是针对某个元素进行等待,这个元素只要加载完成就可以执行后续的代码了。这种形式比较灵活。

  六、什么是PO模式,它有哪三层?三者的关系是怎样的?

  PO模式是一种自动化测试设计思想,是把一个页面看成一个对象,页面的元素看成对象的属性和行为。PO模式一般有三层:

  基础层:封装一些最基础的方法

  页面对象层:元素定位,页面操作等

  测试用例层:业务逻辑,数据驱动

  这三层的关系:

  页面对象层继承基础层,测试用例层调用页面对象层

  自动化测试面试题及答案2

  1.Selenium是否支持桌面应用软件的自动化测试。

  Selenium不支持桌面软件的自动化测试,Selenium是根据网页元素的属性才定位元素,而其他桌面软件自动化测试工具是根据桌面元素的位置来定位元素,当然现在也有根据桌面元素的属性来定位的。

  2.Selenium是否支持用例的执行的引擎。

  引擎好比就是一个发动机。Selenium是没有关于测试用例和测试套件管理和执行的模块。我们需要借助第三方单元测试框架来实现用例管理和用例的执行。例如Java中有Junit或者testNG,Python中有unittest单元测试框架。

  3.Seleinum是否有读取excel文件的库

  没有,这里需要用到第三方工具。例如Apache POI插件。

  4.Selenium有哪些组件?

  最早的有Selenium IDE,IDE只支持安装在fiefox上一个插件,支持录制自动化脚本。还有remote RC,和Grid 和webdriver。我们一般最重要的就是使用webdriver。

  5.Selenium有什么限制或者缺陷

  除了基于web的软件和mobile的程序,selenium不支持桌面软件自动化测试。软件测试报告,和用例管理只能依赖第三方插件,例如Junit/TestNG和unittest。由于它是免费的软件,所以没有供应商去提供支持和服务,有问题,只能求助selenium社区。还有一个就是,selenium入门门槛可能有点高,需要具备一定编程语言基础的才能玩转。

  6.在selenium中,有哪些不同定位元素方法

  ID/className/Name/LinkText/PartialLinkText/Xpath/CSS selector

  7.什么是imlicitlyWait(隐式等待)

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

  8.什么是expliciteWait(显式等待)

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

  9.什么是线程等待(硬式等待)

  如Thread.sleep(2000),webdriver线程强制休眠2秒钟,2秒过后,再执行后续的代码。

  10.什么是pollingEvery

  这个是设置个一段时间就去做一件事,例如下面设置隔一秒就去查找元素一次。

  WebDriverWait wait = new WebDriverWait(driver,30);

  wait.pollingEvery(1, TimeUnit.SECONDS);

  driver.findElement(By.xpath(“xxxx”));

  11.你写的测试脚本能在不同浏览器上运行吗,支持跨浏览器平台吗

  是的,我写的测试用例能在IE,火狐和谷歌这三种浏览器上运行。主要是在windows平台上运行脚本,所以mac的safari浏览器暂时没有写过。主要实现这个跨浏览器的思想就是,把浏览器类型写到配置文件,代码里写if语句去判断配置文件的浏览器的类型,来决定用什么浏览器去执行测试用例。

  12.什么是POM,为什么要使用它

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

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

  还有一个可能和这个问题相关的面试题,如果页面元素经常发生需求变化,你是如何做,答案就是采用POM思想。好处就是只要该一个页面,我就去修改这个页面对象的元素定位和相关方法,脚本不需要修改。

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

  这个问题,不管是自动化还是任何工作,都会被问到。主要想知道你是如何解决问题的,从而推断你问题分析和解决的能力。

  当然有遇到问题和挑战,主要有以下几点:

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

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

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

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

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

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

  常见的selenium有以下这些:

  ElementNotSelectableException :元素不能选择异常

  ElementNotVisibleException :元素不可见异常

  NoSuchAttributeException :没有这样属性异常

  NoSuchElementException:没有该元素异常

  NoSuchFrameException :没有该frame异常

  TimeoutException : 超时异常

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

  15 如何处理alert弹窗

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

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

  // 切换到Alert

  Alert alert = driver.switchTo().alert();

  // 点击弹窗上确定按钮

  alert.accept();

  // 点击弹窗的取消按钮

  alert.dismiss()

  // 获取弹窗上线上的文本文字内容

  alert.getText();

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

  alert.sendkeys();

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

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

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

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

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

  18 怎么验证勾选框是enable/disabled/ checked/Unchecked/ displayed/ not displayed?

  通过以下方法来验证元素是enable 还是disable

  boolean enabled = driver.findElement(By.xpath(“元素定位表达式”)).isEnabled();

  通过以下方法来验证元素是select/check

  boolean checked = driver.findElement(By.xpath(“元素定位表达式”)).isSelected();

  通过以下方法来验证元素是dispalyed还是not display

  boolean displayed = driver.findElement(By.xpath(“元素定位表达式”)).isDisplayed();

  19 如何处理下拉菜单?

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

  基本使用语法是这样的:

  Select Se=new Select(element);

  Se.selectByIndex(index);

  Se.selectByvalue(value);

  Se.selectByVisibleText(text);

  20 在日历这种web 表单你是如何处理的?

  首先要分析当前网页试用日历插件的前端代码,看看能不能通过元素定位,点击日期实现,如果不能,可能需要借助javascript。还有些日历控件一个文本输入框,可以直接sendKeys()方法来实现传入一个时间的数据。

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

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

  22 什么是页面加载超时

  Selenium中有一个 Page Load wait的方法,有时候,我们执行脚本的速度太快,但是网页程序还有一部分页面没有完全加载出来,就会遇到元素不可见或者元素找不到的异常。为了解决问题,让脚本流畅的运行,我们可以通过设置页面加载超时时间。具体代码是这个:driver.manage().timeouts().pageLoadTimeout(10,TimeUnit.SECONDS);

  这行作用就是,如果页面加载超过10秒还没有完成,就抛出页面加载超时的异常。

  23.什么是JavaScript Executor,你什么时候会用到这个?

  JavaScript Executor是一个接口,给driver对象提供一个执行javaScript并访问和修改前端元素属性和值。

  还是有比较多的场景,我们可能或者需要借助javaScript来实现:

  1.元素通过现有定位表达式不能够实现点击

  2.前端页面试用了ck-editor这个插件

  3.处理时间日期插件(可能)

  4.生成一个alert弹窗

  5.拖拽滚动条

  基本语法:

  JavascriptExecutor js =(JavascriptExecutor) driver;

  js.executeScript(Script,Arguments);

  24.在Selenium中如何实现截图,如何实现用例执行失败才截图

  在Selenium中提供了一个TakeScreenShot这么一个接口,这个接口提供了一个getScreenshotAs()方法可以实现全屏截图。然后我们通过java中的FileUtils来实现把这个截图拷贝到保存截图的路径。

  代码举例:

  File src=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);

  try {

  // 拷贝到我们实际保存图片的路径

  FileUtils.copyFile(src,new File(“C:/selenium/error.png”));

  }

  catch (IOException e)

  {

  System.out.println(e.getMessage());

  }

  如果要实现执行用例发现失败就自动截图,那么我们需要把这个截图方法进行封装。然后在测试代码中的catch代码块去调用这个截图方法。这个我们在POM的框架中一般是把截图方法封装到BasePage这个文件中。

  25.在Selenium中如何实现拖拽滚动条?

  在Selenium中通过元素定位会自动帮你拖拽到对应位置,所以是没有自带的scoll方法。但是这个是有限制,例如当前页面高度太长,默认是页上半部分,你定位的元素在页尾,这个时候可能就会报元素不可见的异常。我们就需要利用javaScript来实现拖拽页面滚动条。

  我们一般可以两个方法去拖拽,一个是根据拖拽的坐标(像素单位),另外一个是根据拖拽到一个参考元素附件。

  代码举例(根据元素坐标拖拽):

  JavascriptExecutor jse= (JavascriptExecutor)driver;

  jse.executeScript(“window.scrollBy(0,250)”, “”);

  26.如何实现文件上传?

  我们在web页面实现文件上传过程中,可以直接把文件在磁盘完整路径,通过sendKeys方法实现上传。如果这种方法不能实现上传,我们就可能需要借助第三方工具,我用过一个第三方工具叫autoIT.

  还有一个方法是利用robot类

  27.如何处理“不受信任的证书”的问题?

  例如,在登录12306网站的时候,如果你没有下载和安装过这个网站的根证书,那么你就会遇到打开12306网站提示证书不受信任的拦截页面。

  下面举例火狐和谷歌上处理这个问题的基本代码

  火狐:

  // 创建firefoxprofile

  FirefoxProfile profile=new FirefoxProfile();

  // 点击继续浏览不安全的网站

  profile.setAcceptUntrustedCertificates(true);

  // 使用带条件的profile去创建一个driver对象

  WebDriver driver=new FirefoxDriver(profile);

  Chrome:

  // 创建类DesiredCapabilities的对象

  DesiredCapabilities cap=DesiredCapabilities.chrome();

  // 设置ACCEPT_SSL_CERTS 变量值为true

  cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);

  // 新建一个带capability的chromedriver对象

  WebDriver driver=new ChromeDriver(cap);

  28.什么是Firefox Profile?

  Profile是一组文件,主要用来记录用户在火狐浏览器上的私人信息,例如书签,密码,用户首选项,下载文件夹保存路径等。简单来说,你打开火狐浏览器输入about://config,这个页面有些设置选项是可以通过profile来实现修改的。

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

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

  这里介绍几个方法

  方法:clickAndHold()

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

  方法:contentClick()

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

  方法:doubelClick()

  使用场景:模拟鼠标双击

  方法:dragAndDrop(source,target)

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

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

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

  30.在执行脚本过程,如何实现当前元素高亮显示?

  这个其实就是利用javaScript去修改当前元素的背景颜色来到达高亮显示的效果,

  31.如何获取页面标题,悬浮文本和错误文本,并验证?

  标题,我们可以通过driver.getTitle()方法来得到一个字符串,然后使用字符串的containts方法或者equals方法去进行断言。

  悬浮文本(tooltip),一般是利用Actions类,然后鼠标悬停方法,然后通过getText()方法来得到这个tooltip字符串。

  错误信息,直接把这个错误字段先进行定位,然后通过getText()方法拿到错误文本,主要的断言有包含,相等,不相等,不包含,以什么开头等。

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

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

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

  写用例和管理并执行用例,我们都需要借助单元测试框架来实现,如果是Java语言一般有junit和TestNG,如果是python,常见的有unittest。

  就你实际情况,说一下。例如我使用TestNG比较多,需要配置testng.xml文件来实现测试用例的执行。有时候需要配置多个testng.xml去实现不同的任务场景。再展开,可能问你一下testng框架的知识点。例如,方法依赖,用例执行优先级,数据源驱动等。

【自动化测试面试题及答案】相关文章:

银行测试面试题及答案04-16

性能测试面试题及答案04-19

软件测试面试题目04-23

苹果面试题及答案04-07

经典算法面试题及答案04-19

经典面试题目及答案04-22

面试题目及答案04-23

新西兰面试题的答案04-15

薪酬面试题及答案04-15