• 13
  • 16
分享

自动化测试是什么?自动化测试学什么?自动化测试面试题及答案?–看完后吊打面试官!

一、前言

最近有童鞋和我抱怨,说网上很难搜到那些全面又合适的自动化测试面试题,这里根据我个人的经验以及收集整理的:

你没看错,不慌,慢慢来。

先从什么是自动化测试开始说起哈!

二、什么是自动化测试?

什么是自动化测试?

当我第一次知道自动化测试的时候,除了知道“自动化”这三个有些高大上的称呼之外,我对自动化测试一无所知,正如谈恋爱一样,找女朋友之前要知道她是谁。

自动测试就是把以人为驱动的测试转化为机器执行的一种过程,它是一种以程序测试程序的过程。嗦嘎!那么…

三、自动化测试需要学什么技能?

这是我以前在知乎写的,可以详细的了解2020年自动化测试攻城狮需要学什么技能了!

四、2020年全网最全的自动化测试面试题和答案,原来干货都在这里

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

这个问得最多,甚至有很多公司直接写在招聘要求中!

当然可以,自动化框架主要的核心框架就是分层+PO模式:分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层。然后再加上日志处理模块,ini配置文件读取模块,unittest+ddt数据驱动模块,jenkins持续集成模式组成。

2、如何把自动化测试在公司中实施并推广起来的?

  • 项目组调研选择自动化工具并开会演示demo案例,我们主要是演示selenium和robotframework两种;

  • 搭建自动化测试框架,在项目中逐步开展自动化;

  • 把该项目的自动化流程、框架固化成文档;

  • 推广到公司的其它项目组应用。

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

  • 编写自动化测试计划;

  • 设计自动化测试用例;

  • 编写自动化测试框架和脚本;

  • 调试并维护脚本;

  • 无人值守测试;

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

4、自动化测试用例如何编写?以下答案二选一即可:

  • 用例是自动化测试工程师自己设计的,一般刚开始已基本业务流程为主(登录–完成一个业务–退出);

  • 从系统测试用例中进行筛选或由业务工程师提供。

5、上一个项目中自动化测试的执行策略?

上一个项目中是定时执行的,设置的执行时间是晚上12点,执行完毕后会自动发送邮件通知

6、自动化测试发现BUG多吗?

不多,因为之前项目组是把已经测试通过的基本功能再进行自动化脚本编写和在后续版本执行自动化测试,它主要是保证已经测试通过的功能在新版本更新后没有问题。

7、你觉得自动化测试的价值在哪里?你们公司为什么要做自动化测试?

引用自动化测试之后,能代替大量繁琐的回归测试工作,把业务测试人员解放出来,既而让业务测试人员把精力集中在复杂的业务功能模块上,自动化测试一般是对稳定下来的功能进行自动化,保证不会因为产品的更新导致之前稳定下来的功能出现BUG

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

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

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

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

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

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

  • 自动化测试偶尔出现过误报;

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

  • 自动化测试代码维护比较麻烦;

  • 自动化测试进行数据库对比数据。

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

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

  • python+selenium+unittest+htmltestrunner;

  • python+selenium+pytest+allure;

  • robotframework+Selenium2Library。

11、在selenium自动化测试中,你一般完成什么类型的测试?自动化覆盖率?

主要是冒烟测试和回归测试。回归测试主要写一些功能稳定的场景,通过自动化手段去实现,节约测试时间。因为自动化测试用例也是在不断的更新和迭代,没有刻意去统计,大概在30%-40%左右!

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

这个其实就是利用javaScript去修改当前元素的边框样式来到达高亮显示的效果,

13、如果一个元素无法定位,你一般会考虑哪些方面的原因?

  • 页面加载元素过慢,加等待时间;

  • 页面有frame框架页,需要先跳转入frame框架再定位;

  • 可能该元素是动态元素,定位方式要优化,可以使用部分元素定位或通过父节点或兄弟节点定位;

  • 可能识别了元素,但是不能操作,比如元素不可用,不可写等。需要使用js先把前置的操作完成。

14、元素定位方法你熟悉的有哪些?

id name classname link_text css xpath

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

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

然后再操作页面元素,

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

16、遇到alert弹出窗如何处理?

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

然后再通过accept点击确定按钮,通过dismiss点击取消难,通过text()获得弹出窗口的文本。

17、如何处理多窗口?

这个多窗口之间跳转处理,我们在项目中也经常遇到。就是,当你点击一个链接,这个链接会在一个新的tab打开,然后你接下来要在新tab打开的页面查找元素,

  • 我们在点击链接前使用driver.current_window_handle获得当前窗口句柄;

  • 再点击链接。点击后通过driver.window_handles获得所有窗口的句柄;

  • 然后再循环找到新窗口的句柄,然后再通过driver.switch_to.window()方法跳转到新的窗口。

18、怎么验证元素是enable/disabled/checked状态?

定位元素后:分别通过isEnabled(),isSelected(),isDisplayed()三个方法进行判断。

19、 如何处理下拉菜单?

在Selenium中有一个叫Select的类,这个类支持对下拉菜单进行操作。使用方法如下:

  • 定位元素;

  • 把定位的元素转化成Select对象;

sel = Select(定位的元素对象)

  • 通过下标或者值或者文本选中下拉框。

sel.select_by_index(index);
sel.select_by_value(value);
sel.select_by_visible_text(text);

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

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

21、举例一下说明一下你遇到过那些异常

常见的selenium异常有这些:

NoSuchElementException:没有该元素异常
TimeoutException : 超时异常
ElementNotVisibleException :元素不可见异常
NoSuchAttributeException :没有这样属性异常
NoSuchFrameException :没有该frame异常

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

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

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

在Selenium中提供了一个get_screenshot_as_file()的方法来截图的,一般结合try/except捕获异常时使用,进行错误截图。

24、如何实现文件上传?

定位元素后,直接使用send_keys()方法设置就行,参数为需要上传的文件的路径。

25、自动化中有哪三类等待?他们有什么特点?

  • 线程等待(强制等待)如time.sleep(2):线程强制休眠2秒钟,2秒过后,再执行后续的代码。建议少用。

  • imlicitlyWait(隐式等待)会在指定的时间范围内不断的查找元素,直到找到元素或超时,特点是必须等待整个页面加载完成。

  • WebDriverWait(显式等待)通常是我们自定义的一个函数代码,这段代码用来等待某个元素加载完成,再继续执行后续的代码

26、你写的测试脚本能在不同浏览器上运行吗?

当然可以,我写的用例可以在在IE,火狐和谷歌这三种浏览器上运行。实现的思路是封装一个方法,分别传入一个浏览器的字符串,如果传入IE就使用IE,如果传入FireFox就使用FireFox,如果传入Chrome就使用Chrome浏览器,并且使用什么浏览器可以在总的ini配置文件中进行配置。需要注意的是每个浏览器使用的驱动不一样。

27、什么是PO模式,为什么要使用它

PO是Page Object 模式的简称,它是一种设计思想,意思是,把一个页面,当做一个对象,页面的元素和元素之间操作方法就是页面对象的属性和行为,PO模式一般使用三层架构,分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层。


作者:测试工程师成长之路

原文链接:https://blog.csdn.net/u013851294/article/details/105765668#comments_15824065

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   摘要:随着金融行业信息化程度的不断提高,银行业务系统面临着前所未有的复杂性和安全性挑战。为了确保系统稳定运行,银行必须在软件开发生命周期中实施严格的测试流程。本文将探讨如何基于Jacoco框架进行二次开发,从而实现银行交易的精准测试工作。通过这种方式,不仅可以提高测试可信度和测试充分性、还能协助定位缺陷、识别冗余代码,进而保证金融服务的质量与安全。  一、背景介绍  在银行业务核心系统中,程序类型分为两类,联机交易和批量交易。联机交易一般都是供其他系统或者柜面前台调用的接口,批量交易则往往是日间或者日终银行跑批用的,用来集中处理账务加工、计提结息、账务核对、监管报送等内容。银行系统对于测试...
            0 0 260
            分享
          •   投资公司摩根大通(JP Morgan)的分析师认为,苹果公司在中国的iPhone销量正在加速下滑,但其"服务"业务在这一市场逐渐被接受可能会改变这种状况。摩根大通(JP Morgan)利用 Counterpoint Research 关于 2024 年前六周的数据告诉投资者,iPhone 在中国的销量降幅大于竞争对手,尽管下降速度并没有到值得恐慌的底部,但这预示着苹果公司在中国命运的逆转。  在最新数据显示 2024 年前六周的情况之前,在中国市场的表现似乎已经好转,大的下滑趋势却并未停止。但摩根大通认为,从长远来看,中国市场将会复苏。  特别是,分析师预计苹果将从其服...
            0 0 867
            分享
          • 接口测试包含单接口测试和多接口测试,通过组合多个接口实现一组功能的验证称为多接口测试,单接口重在单个接口多种请求组合的响应断言,多接口重在组合不同接口,实现流程的串联和验证。多接口测试涉及到接口之间参数的传递,比如AB两个接口协同完成一个功能,A接口的响应要作为B接口的输入,此处就需要用到Jmeter的关联功能。本文提供两个接口的串联示例,展示如何应用Jmeter实现多接口的参数传递。关联就是把应用中动态变化的数据获取到,将它保存为参数,提供给后面需要用到的地方进行使用,通过关联可以实现多接口之间的参数传递。Jmeter常用两种关联组件:正则表达式提取器JsonExtractor接口示例接口A...
            14 14 1617
            分享
          • 今年九月初找工作才开始走上软件测试的道路,下面的是我找软件测试这份工作之前通过阅读软件测评师教程做的笔记。因为是为找工作中的笔试和面试准备的,所以都是一些重点的罗列,希望能帮到正在找软件测试工作的应届生们。1、软件测试的目的是发现软件中存在的错误,提高软件质量,降低软件项目的风险。2、软件测试只能证明软件存在错误,而不能证明软件没有错误。测试的目的只是把软件的错误控制在一个可以进行产品交付/发布的程度上,可以交付/发布产品并不是没有错误的产品。3、软件测试不可能无休止的进行下去。随着测试时间的延伸,发现错误的成本会越来越大,这就需要测试有度,而这个度并不能由项目计划实际判断,而是要根据测试发现...
            11 12 2246
            分享
          •   1、大数据入库测试背景  在大数据时代,数据已经成为企业的重要资产。为了确保数据的准确性和可靠性,数据入库测试成为了不可或缺的一环。大数据入库测试是在确保数据质量得前提下进行的,它包括了对数据的验证、处理以及存储的一系列检查工作。本文主要聚焦源系统测试部门收到开发人员提供的数据文件后,进行数据一致性测试过程中的简化操作。这里的数据一致性是指上传到大数据平台中的数据与从外部写入前的数据保持一致,即写入数据与读出数据始终是一致的。数据一致性能够表明大数据平台可保证数据的完整性,不会导致数据丢失或数据错误。  2、大数据平台入库测试重点  在大数据平台入库测试中,测试人员收到开发人员给的数据之后...
            0 0 626
            分享
      • 51testing软件测试圈微信