常见测试面试题集锦(Web篇+Selenium 自动化)

3 篇文章 0 订阅
1 篇文章 0 订阅


#1. 说明一下常用的元素定位方法?你常用的是什么?为什么?Xpath的稳定性体现在什么方面?

 ID/Name  > CSS selector  >  Xpath >   Link > Class Name >  Tag name. (nice to bad)

XPath的稳定性体现在以下几个方面:

  1. 稳定的页面结构:页面结构不随时间、浏览器、网速等因素的变化而变化。

  2. 稳定的元素定位路径:当页面发生一些变化时,相应元素的XPath定位路径应该能够保持不变。

  3. 元素唯一性:XPath定位路径定位的元素,在整个页面都是唯一的,不会与其他元素发生冲突。

  4. 避免依赖于位置:XPath中尽可能避免依赖元素位置进行定位,因为元素位置在页面变化时可能会发生变化,导致定位失败。

#2. 硬等待和隐式等待,显示等待的区别是什么?各自的工作机制是什么?

类型定义优点缺点
硬等待直接是线程等待,只有等待完成后才能运行代码。
隐式等待在创建driver时声明并且只声明一次,声明后在整个WebDriver周期都生效,相当于一个全局变量。隐式等待相当于告诉driver去等待一定时间后再去执行代码操作,即当页面加载完成后,才会执行下一步。只需声明一次,不需要在每个操作步骤声明。设置隐式等待后,对应的影响的不是某一个元素而是整个页面,只有整个页面加载完成后才会执行下一步。
显式等待需要定位某个元素时,但是元素有可能还未加载出来,这时就需要针对具体的元素或者页面进行显式等待条件的判断。针对指定元素或页面生效,不是整个WebDriver周期生效。必须在需要的操作前声明对应的显示等待及其判断条件,如果每个步骤都需要则需要在每个步骤前都声明。
类型使用方式原理适用场景
硬等待Thread.sleep(等待时间)强制线程等待调试代码,临时性添加
隐式等待driver.manage().timeouts().implicitlyWait(等待时间);在时间范围内,轮询查找元素解决找不到元素问题,无法解决交互问题,也无法自定义等待条件
显式等待WebElement wait = new WebDriverWait(driver,最长等待时间).until(条件函数);设定特定的等待条件,轮询操作解决特定条件下的等待问题,比如点击

#3.UI自动化中怎样解决页面跳转后元素不生效?/ 页面元素定位不到怎么办?

在这里插入图片描述

#4.一个元素定位到了,但是点击无效,怎么解决?

在这里插入图片描述

#5. 请你说一说web测试和app测试的不同点

系统架构方面

Web一般都是b/s架构,基于浏览器的
Appc/s架构,必须要有客户端,用户需要安装客户端

web测试只要更新了服务器端,客户端就会同步会更新。App项目则需要客户端和服务器都更新。

性能方面:

Web关注响应时间
App除了响应时间,还需要关心流量、电量、CPU、GPU、Memory这些

兼容方面:

Web基于浏览器的,所以更倾向于浏览器和电脑硬件,电脑系统的方向的兼容
App要看分辨率,屏幕尺寸,还要看设备系统

其他方面:

Web基于浏览器的,不必考虑安装卸载
App客户端的,则必须测试安装、更新、卸载。除了常规的安装、更新、卸载还要考虑到异常场景。包括安装时的中断、弱网、安装后删除安装文件

此外APP还有一些专项测试:如网络、适配性。

#6. 在做测试的时候遇到元素难定位的问题如何解决,如何判断元素在页面上是否存在?

一:通过异常处理来判断元素是否存在,可以使用 try…except… f 未找到元素的时候捕获这个异常
二:通过查找元素列表find_elements() 判断元素是否存在,定义一个方法,如果元素列表大于 0 则元素存在,返回 True, 如果元素列表等于 0 则元素不存在,返回 False
三:显式等待,结合 WebDriverWait 和 expected_conditions 判断(推荐)

#7. Seleium的工作原理是什么?seleium和appium里的PO模式指什么?

Selenium是一款Web应用程序测试工具,并且支持多种Web浏览器(如Chrome、Firefox、IE等),可以通过多种编程语言(如Java、Python、Ruby等)进行编写自动化测试脚本。可用于模拟用户在Web浏览器中的交互操作。其工作原理主要分为以下几个步骤:

  1. 在客户端(Client)完成selenium脚本的编写;
  2. 将脚本传送给selenium服务器;
  3. Selenium服务器使用浏览器驱动(driver)控制浏览器完成各种操作,如输入、点击、滚动等;
  4. 检查对应的页面是否符合预期。

PO模式(PageObject模式)是指将Web页面抽象为一个个对象,每个对象对应着程序中的一个PageObject类,其中包含了该页面页面元素、对应的操作方法等。PO模式可以提高自动化测试代码的可维护性和可读性,解耦页面元素和测试脚本之间的关联。

而Appium是一款移动应用自动化测试工具,其工作原理类似Selenium,但是它是专门用于测试移动应用程序。和Selenium一样,Appium可以通过控制模拟器或真实设备进行完整的移动应用测试。

在Appium中同样可以使用PO模式进行测试脚本编写,将页面抽象为PageObject类,包含了页面元素和对应的操作方法。这样可以提高测试代码的可维护性和可读性,减少代码冗余,当应用程序界面变化时,只需要修改PageObject类即可。

#8. 如何清除自动化测试产生的大量数据?

  1. 手动清理
    手动清理通常是通过数据库管理工具或者编写 SQL 脚本进行清理。优点是可以针对性地清理数据,缺点是需要手动操作,费时费力,并且容易出现误操作。

  2. 脚本清理
    脚本清理通常是针对特定的测试场景编写脚本,在测试执行完后进行清理。优点是可以自动化执行,缺点是需要编写脚本,并且需要针对不同的测试场景编写不同的脚本。

  3. 数据库备份和恢复
    数据库备份和恢复通常是在测试前备份数据库,测试后恢复数据库。优点是可以确保测试数据的完整性,并且可以快速恢复系统状态,缺点是需要额外的硬件资源和时间成本。

  4. 使用框架自带功能(推荐)
    一般的测试框架都会自带数据清理的功能,例如 Selenum 测试框架中提供了 tearDown 方法,可以在每次测试结束时清理测试数据。使用框架自带功能的好处是可以省去编写脚本的时间,缺点是可能需要对框架进行深入的了解。

#9. 批量执行自动化测试怎么知道几条成功,命令行会怎么显示 ?

  1. 通常情况下,测试框架通常会在测试执行过程中输出一些**日志**和报告,里面包含测试执行的总数,以及执行成功和失败的测试用例的数量。在命令行中通常会显示相关的测试结果摘要信息,包括总测试数、通过数、失败数、跳过数等。

  2. 此外,测试框架通常还会在测试执行结束后生成详细的**测试报告**,报告中会包含执行成功与执行失败的测试用例的详细信息,如测试用例名称、测试用例执行时间、测试用例执行结果等,以方便后续测试结果的分析与补救工作。

#10. selenium需要下载驱动,浏览器版本如何查看

正确的浏览器驱动是selenium自动化测试必不可少的,而且需要保证驱动和浏览器的版本对应。以下是几种常见浏览器的版本查看方法:

  1. Google Chrome:
    在Chrome浏览器的地址栏中输入chrome://version/,可以查看到当前的Chrome浏览器版本号。

  2. Firefox:
    在Firefox浏览器的地址栏中输入about:support,可以进入Firefox的帮助界面,在其中找到”Firefox版本“一栏,即可查看Firefox浏览器的版本号。

  3. Edge:
    在Edge浏览器的地址栏中输入edge://settings/help,即可查看Edge浏览器的版本号。

  4. Safari:
    点击Safari菜单中的“关于Safari”,即可查看Safari浏览器的版本号。

了解浏览器的版本号之后,就可以下载对应浏览器版本的驱动并在测试代码中加载使用了。需要注意的是,选择的驱动要和当时测试的浏览器版本相匹配,否则会无法启动浏览器并进行自动化测试。

#11. UI自动化测试有哪些缺点?如何改进?

UI自动化测试虽然能够有效地提高测试效率和测试覆盖率,但也存在以下几个缺点:

  1. 需要维护大量代码:自动化测试代码需要定期更新、维护和调整,需要消耗大量的时间和精力,尤其是当被测应用程序有改动时,需要重新编写或修改测试代码。

  2. 不稳定性:由于UI自动化测试依赖于系统环境、测试工具和应用程序自身的状态,而这些状态往往是动态变化的,所以自动化测试的稳定性不如手工测试。

  3. 容易受到外部因素影响:UI自动化测试需要依赖于外部环境和数据状态,比如程序的运行环境、网络状态、数据状态等,这些因素可能会影响测试的结果,导致测试出现错误。

  4. 测试结果难以分析:由于UI自动化测试需要和应用程序进行交互,所以在测试过程中产生的测试数据和日志比手工测试更多,很难进行有效的分析和处理,尤其是测试结果不符合预期时。

为了改进UI自动化测试的缺点,可以采取以下一些措施:

  1. 编写可重用的测试代码,减少测试代码的重复性

  2. 减少测试UI界面的使用。例如,可以通过API层面对系统进行测试,而避免直接操作UI界面。

  3. 使用较为稳定的测试工具和框架,减少测试的不稳定性。例如可以使用Selenium WebDriver等成熟的测试工具。

  4. 维护良好的测试数据,尽量使用统一的数据源进行测试,防止数据的不一致性导致测试结果偏差。

总之,UI自动化测试虽然具有一定的局限性,但是通过合理的技巧和方法,能够有效提高测试效率和测试覆盖率,以更好的帮助开发团队提高开发质量。

#12.Xpath&CSS接触过多少?

Xpath和CSS,这两种语言在自动化测试中都扮演着重要的角色。

Xpath是一种XML文档路径语言,用于定位XML文档中的节点。在Selenium自动化测试中,Xpath通常用于定位HTML文档中的某个元素,例如在Selenium测试中使用driver.findElement(By.xpath())方法。

CSS(层叠样式表)是一种用于定义HTML文档外观的样式表语言。在Selenium自动化测试中,CSS通常用于定位某个元素,并定义其外观和样式。如 driver.find_element_by_css_selector(‘.class_name’)
CSS selector 语法更加简洁,搜索(采用样式定位)速度快于XPath(采用自上而下的遍历搜索)

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值