首页 > 其他分享 >自动化测试面试点

自动化测试面试点

时间:2024-08-12 11:54:38浏览次数:13  
标签:浏览器 元素 面试 线程 测试 自动化 页面

1. 封装自动化测试框架

  po页面对象层,用例层,元素定位层,测试数据层。   ----PO页面对象层(用例层从页面层调用操作方法,写成用例)

  其他的是:日志处理模块,ini配置文件读取模块,unittest+ddt数据驱动模块,jenkins持续集成

  ---

  PO是Page Object 模式的简称,它是一种设计思想,意思是,把一个页面,当做一个对象,页面的元素和元素之间操作方法就是页面对象的属性和行为,

  PO模式一般使用三层架构,分别为:基础封装层BasePage,PO页面对象层,TestCase测试用例层。

  basepage封装常用的操作:1.等待元素可见 2.查找元素  3.点击 输入 4.获取文本,获取属性

2. 降低自动化维护成本

  选择比较稳定的接口和内容做自动化测试

  接口不写死参数,调用页面获取参数,实现各个环境版本都能执行

3. 保证脚本的有效性

  把一个 页面要用到的元素和操作,封装到一个页面类中,如果一个元素定位发生改变,只要修改这个页面的元素属性

  场景独立,所有的步骤不封装在一起

  测试用例之间,减少耦合度

  python+selenium+pytest+allure

 4. 如果一个元素无法定位,思考点   页面加载元素过慢,加等待时间   页面有frame框架,需要先跳入框架再定位,-----先用driver.switch_to.frame()跳转进去frame,然后再操作页面元素,操作完后使用driver.swith_to.default_content()跳转出来   如果是动态元素,要通过父节点兄弟节点来定位   可能识别的元素,但是不可用不能编辑,需要完成元素的前置操作或条件 5.  获得alert弹出窗口的文本   driver.switch_to.alert方法先跳转到alert弹出窗口,然后再通过accept点击确定按钮,通过dismiss点击取消难,通过text()获得弹出窗口的文本。 6. 处理多窗口   多窗口:当你点击一个链接,这个链接会在一个新的tab打开,然后你接下来要在新tab打开的页面查找元素,

  1.我们在点击链接前使用driver.current_window_handle获得新窗口句柄。

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

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

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

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

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

  首先要分析当前网页试用日历插件的前端代码,看看能不能通过元素定位,点击日期实现,

  如果不能,可能需要借助javascript。还有些日历控件一个文本输入框,可以直接sendKeys()方法来实现传入一个时间的数据。

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

  常见的selenium异常有这些:

  NoSuchElementException:没有该元素异常

  TimeoutException : 超时异常

  ElementNotVisibleException :元素不可见异常

  NoSuchAttributeException :没有这样属性异常

  NoSuchFrameException :没有该frame异常

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

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

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

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

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

  封装一个方法,分别传入一个浏览器的字符串,如果传入IE就使用IE,如果传入FireFox就使用FireFox,如果传入Chrome就使用Chrome浏览器,

  并且使用什么浏览器可以在总的ini配置文件中进行配置。需要注意的是每个浏览器使用的驱动不一样。

 

15、什么是进程、线程、协程?

  进程是独立的程序执行的过程

  线程是程序执行中一个顺序控制流程,是程序执行流的最小单元

  协程是比线程更加轻量级的存在,

  进程与线程的区别:

  · 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;

  · 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;

  · 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段、数据集、堆等)及一些进程级的资源(如打开文件和信号),某进程内的线程在其它进程不可见;

  · 调度和切换:线程上下文切换比进程上下文切换要快得多。

  协程的特点:

  · 线程的切换由操作系统负责调度,协程由用户自己进行调度,因此减少了上下文切换,提高了效率。

  · 线程的默认Stack大小是1M,而协程更轻量,接近1K。因此可以在相同的内存中开启更多的协程。

  · 由于在同一个线程上,因此可以避免竞争关系而使用锁。

  · 适用于被阻塞的,且需要大量并发的场景。但不适用于大量计算的多线程,遇到此种情况,更好是用线程去解决。

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

  1.编写自动化测试计划

  2.设计自动化测试用例

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

  4.调试并维护脚本

  5.无人值守测试

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

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

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

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

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

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

  引用自动化测试之后,能代替大量繁琐的回归测试工作,把业务测试人员解放出来,既而让业务测试人员把精力集中在复杂的业务功能模块上,

  自动化测试一般是对稳定下来的功能进行自动化,保证不会因为产品的更新导致之前稳定下来的功能出现BUG

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

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

  误报原因一般是:

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

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

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

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

  因为自动化测试用例也是在不断的更新和迭代,没有刻意去统计,大概在30%-40%左右!

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

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

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

  id name classname link_text css xpath

25、如何处理下拉菜单?

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

  1.定位元素

  2.把定位的元素转化成Select对象。

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

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

  sel.select_by_index(index);

  sel.select_by_value(value);

  sel.select_by_visible_text(text);

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

  简单来说,两个都可以实现退出浏览器session功能,close是关闭你当前聚焦的tab页面,而quit是关闭全部浏览器tab页面,并退出浏览器session。

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

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

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

28、如何实现文件上传?

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

29、 如何分层自动化测试?

  · UI自动化回归

  · 接口自动化

  · 单元测试-白盒测试

 

 

 

 

标签:浏览器,元素,面试,线程,测试,自动化,页面
From: https://www.cnblogs.com/chuting/p/18354685

相关文章

  • 高级.NET Core分布式事务相关的面试题
    以下是一些高级.NETCore分布式事务相关的面试题,这些问题涵盖了概念、实际应用以及最佳实践,可以帮助评估候选人在分布式事务方面的理解和实际操作能力。1.分布式事务的基本概念与.NETCore支持什么是分布式事务?它与本地事务有何不同?.NETCore中有哪些常用的分布式事务解决方......
  • 关于异步编程和多线程的高级.NET Core面试题
    以下是一些关于异步编程和多线程的高级.NETCore面试题。这些问题涵盖了从基础概念到复杂应用的各个方面,可以帮助评估候选人在异步编程和多线程开发方面的能力。1.异步编程基础在.NETCore中,异步编程的基本原理是什么?async和await关键字的作用是什么?如何在.NETCore中使用......
  • Java自动化测试框架-08 - TestNG之并行性和超时篇 (详细教程)
    一、并行性和超时您可以指示TestNG以各种方式在单独的线程中运行测试。可以通过在suite标签中使用parallel属性来让测试方法运行在不同的线程中。这个属性可以带有如下这样的值:二、并行套件(suites)如果您正在运行多个套件文件(例如“ javaorg.testng.TestNGtestng1.xml......
  • 面经精选:数据库高频面试十问
    1.InnoDB和MyISAM存储引擎的区别?MySQL默认的存储引擎是InnoDB,它采用B+Tree作为索引的数据结构。在创建表时,InnoDB存储引擎默认会创建一个主键索引,也就是聚簇索引,其它索引都属于二级索引。MySQL的MyISAM存储引擎支持多种索引数据结构,比如B+树索引、R树索引、Full-Tex......
  • 车载网络测试实操源码_使用CAPL脚本对CAN总线上的错误帧进行实时监控
    系列文章目录车载网络测试实操源码_使用CAPL脚本解析hex、S19、vbf文件车载网络测试实操源码_使用CAPL脚本对CAN报文的Counter、CRC、周期、错误帧进行实时监控车载网络测试实操源码_使用CAPL脚本模拟发送符合协议要求(Counter和CRC)的CAN报文车载网络测试实操源码_使用......
  • API安全与等保测评:接口安全测试技术与工具选择
    关键技术点:1.认证与授权:检查API是否实施了强大的身份验证机制,如OAuth2.0、JWT,并验证授权逻辑是否严谨。2.输入验证:测试API对用户输入的处理,确保有效防止SQL注入、跨站脚本(XSS)等攻击。3.数据加密:评估传输层安全(TLS)配置以及敏感数据在存储和传输时的加密策略。4.速率限......
  • 大模型备案流程最详细说明【评估测试题+附件】
    2024年3月1日,我国通过了《生成式人工智能服务安全基本要求》(以下简称《AIGC安全要求》),这是目前我国第一部有关AIGC服务安全性方面的技术性指导文件,对语料安全、模型安全、安全措施、词库/题库要求、安全评估等方面提出了具体规范和要求。(一)适用主体《AIGC安全要求》的适用主......
  • 【Linux】项目自动化构建工具-make/Makefile(入门初使用)
    make/Makefile1.什么是make/makefile?为什么要使用?2.如何使用make/makefile(1)makefile基础框架1.规则2.规则的实现(2)如何与make搭配使用?3.文件的时间戳4.常用语法补充语法一:.PHNOY文件名语法二:$@与$^语法三:makefile里面可以定义变量参考文章:爱编程的大丙......
  • LinkedList模拟栈数据结构的集合,并测试
    packagecom.shujia.day13;importjava.util.LinkedList;/*LinkedList请用LinkedList模拟栈数据结构的集合,并测试栈:先进后出题目的要求是:自己创建一个类,将LinkedList作为成员变量,将来创建自己的类对象,使用自己的方法,但是底层用的是LinkedList中的方法......
  • python+opencv+selenium自动化登录邮箱并解决滑动验证的问题
    本文主要讲解基于Python、OpenCV和Selenium的自动化登录邮箱并解决滑动验证问题。在这个过程中,我们需要特别注意页面元素的准确定位以及文本框和验证码的frame嵌套问题。感兴趣的朋友们一起来学习吧,让我们一起探索解决这个挑战的方法。前言大家在进行自动化登录时可能都......