高级面试题
详细介绍框架是什么样的框架?你在其中你是做了哪些事情?
面试题目
- 级别: L1
- 知识模块: App自动化测试
详细介绍框架是什么样的框架?你在其中你是做了哪些事情?
公司
- 大众外包
招聘类型
社招
题目解析
自动化测试框架是一套指导原则、工具和实践的集合,用于在软件开发过程中自动执行测试,自动化测试框架旨在提高测试过程的效率和可靠性,减少手动测试的时间和错误。一个典型的自动化测试框架包括以下功能:
- 测试执行:自动运行预先编写的测试用例。
- 报告生成:生成测试报告,提供测试结果的详细信息。
- 数据驱动:支持数据驱动测试,通过外部数据源进行多次测试。
在这种框架中,测试过程可以标准化和自动化,从而提高测试效率和准确性,减少手动干预和错误。
面试者在自动化测试中的角色和任务的内容可以参考如下内容:
- 需求分析:了解和分析测试需求,确定需要自动化的测试用例。
- 框架设计与实现:设计并实现适合项目的自动化测试框架,选择合适的工具和技术栈。
- 测试脚本编写:编写和维护测试脚本,确保覆盖所有关键功能和场景。
- 测试数据管理:设计并管理数据,确保测试的可重复性和覆盖率。
- 测试执行与报告:执行自动化测试,分析测试结果,并生成报告。通过持续集成工具实现自动化测试定时执行和结果报告。
- 缺陷管理:记录和跟踪发现的缺陷,与开发团队合作修复问题,并进行回归测试。
- 性能优化:优化测试脚本和框架,提高测试执行的效率和稳定性。
- 培训与协作:培训团队成员使用自动化测试工具和框架,促进跨职能团队的协作
答案
框架是自动化测试框架,包括测试执行、报告生成、数据驱动等功能。我负责的工作主要有,参与设计测试框架,编写测试脚本,执行并且监控测试,并且将其集成到持续集成系统当中。在框架和集成基本完成后,会根据项目的进展和变化,持续维护和优化测试脚本和框架。
自动化测试如何处理验证码
面试题目
- 如果你在面试过程中,被面试官问到:说一下自动化测试如何处理验证码,你会如何回答呢
公司
- 某金融公司
招聘类型
- 社招
- 校招
答案
自动化测试中处理验证码的方法,可以分为产品上线前与产品上线后两种情况,也就是测试环境和生产环境。对于上线前,要处理验证码有两种解决办法给大家提供两种思路:
- 第一、让开发帮忙设置个万能验证码,比如 1234。但是一定要注意只能是测试环境生效,生产环境要删掉。
- 第二、可以将我们的一个或者多个帐号添加到白名单,白名单的用户可以直接跳过验证。
那如果产品上线后,我们也有方法能跳过登录,这里给大家推荐两种方法
-
第一、使用 cookie 跳过,使用抓包工具,或者通过代码将登录的 cookie 信息保存下来,因为 cookie 里保存了用户的登录信息,在 cookie 有效期内执行用例,就可以跳过登录了。
-
第二、可以使用验证码自动识别技术,也就是图像识别技术,比如 Java 可以使用 Test4J,Python 可以使用 tesseract-ocr ,需要注意的时候图像识别对于有的字符可能识别率没有那么高,比如有可能 C 会被识别为 O。
自动化的这个东西有涉及到动态验证码的校验吗?
面试题目
- 级别: L1
- 知识模块: App自动化测试
自动化的这个东西有涉及到动态验证码的校验吗?有登录或者什么的涉及到要动态校验,动态校验的。或者是图片校验的怎么去处理的?
公司
- 大众外包
招聘类型
社招
题目解析
- 本题考察面试者对于动态验证码的了解程度,以及对动态验证码的处理方式。
- 在自动化测试中处理动态验证码(如图形验证码、短信验证码等)是一个常见的问题,解决方案:
- 禁用验证码
- 使用测试专用验证码
- 后端接口绕过
- 破解算法模拟验证码的生产
- 使用OCR技术
- 短信验证码拦截
答案
当面对动态验证码校验时,可以优先考虑与开发团队沟通,探讨是否能在测试环境中暂时禁用验证码或采用专用的静态验证码。如果禁用不可行,再考虑利用OCR识别技术或破解算法来自动化处理验证码,此外还有可以通过后端接口绕过验证码。
自动化什么时候跑(执行),不做集成吗
面试题目
- 级别: L1
- 知识模块: 自动化测试
自动化什么时候跑(执行),不做集成吗
公司
- 字节外包
招聘类型
社招
题目解析
-
本题主要考察面试者对自动化策略、实际以及集成测试的理解和掌握。
-
自动化测试的时机主要取决于项目的具体需求和团队的实际情况。一般来说,自动化测试的执行时机可以考虑以下几点:
- 需求稳定:当项目的需求相对稳定,不再频繁变更时,是引入自动化测试的好时机。因为自动化测试脚本的编写和维护需要一定的成本,如果需求频繁变动,会导致测试脚本的频繁修改,降低测试效率。
- 测试周期长:对于需要频繁执行回归测试的项目,引入自动化测试可以大幅提高测试效率。自动化测试可以替代大量的手工操作,使测试人员能够专注于更复杂的测试任务。
- 适合自动化场景:对于某些特定的测试项目,如需要在多种平台重复执行相同测试的场景,或者某些测试项目通过手工测试无法实现或成本过高的情况,适合引入自动化测试。
-
集成测试是自动化测试中的一个重要环节,用于验证不同模块或组件之间的交互是否正常,整个系统是否能够按照设计要求正常运行。集成测试通常在单元测试之后进行,确保各个模块的功能正常后,再进行模块之间的集成测试。
答案
自动化测试通常在需求稳定、测试周期长且适合自动化的场景下执行,以提高测试效率和准确性。集成测试是自动化测试的重要环节,用于验证模块间的交互和系统的整体功能。因此,在自动化测试策略中,我们会充分考虑集成测试,确保系统的稳定性和兼容性。
自动化 po 设计模式有哪些模块
面试题目
- 级别: L1
- 知识模块: 自动化测试
自动化 po 设计模式有哪些模块
公司
- 字节外包
招聘类型
社招
题目解析
-
本题面试官考察点为 PO 设计模式的相关知识
-
主要分三层:
- Base 层:封装 Webdriver 的基础功能,如初始化浏览器、元素定位、点击、输入、获取文本、截图等常用方法。这一层是整个自动化框架的基础,提供了对浏览器和页面元素的基本操作接口。
- 页面对象层:将具体页面的业务操作封装为方法,这些方法可以是单一操作或一系列操作的组合。页面对象层是对具体业务页面的抽象,包含页面元素的定位和操作。
- 测试用例层:编写具体的测试用例,调用页面对象层的方法,使用测试框架(如 unittest、pytest 等)对业务逻辑进行封装和测试。
-
三者的关系:
- Base 层:提供最基础的浏览器操作和页面元素操作方法,是整个框架的基础。
- 页面对象层:继承 Base 层,封装页面的具体业务操作,将页面元素和操作抽象为对象。
- 测试用例层:调用页面对象层的方法,编写具体的测试用例,验证业务逻辑。
答案
PO 设计模式可以分为 Base 层、页面对象层和测试用例层。Base 层提供对浏览器和页面元素的操作方法,页面对象层基于这些方法进行业务逻辑的抽象封装,最终在测试用例层编写具体的测试用例来验证业务逻辑。
PageObject 设计模式是什么
面试题目
- 什么是 PO(Page Object)设计模式?PO 设计模式遵循的规则是什么?有哪些需要注意的点?
公司
- 某金融公司
招聘类型
- 社招
- 校招
题目解析
点击查看 PageObject 简介
之前的 UI 自动化测试中的主要问题在于:可维护性差,可读性差。页面稍有改动就会导致多条用例需要修改。
所以需要使用 PO 设计模式。PO 设计模式主要是将每个网页抽象成一个页面对象,该对象封装了业务所需元素和行为。
当页面出现变化时,只需更新页面对象的某些属性即可完成对相应用例的更新。这样可以降低维护的成本,并且提高测试的稳定性。
那么,不同的团队成员可以负责不同页面对象的编写和维护,并且对于本身不熟悉代码的成员来讲也可直接基于实现来编写业务用例,这样可以多方面提高团队的工作效率。
注意点
-
使用 PO 设计模式时需要遵循六大原则
-
六大原则即是写代码时容易出错且违背 PO 设计模式的点,需要牢记。
-
回答时需要强调 PO 设计模式怎么提高效率,和传统线性代码的对比。
答案
PO 设计模式,即 Page Object Model,是自动化测试中常用的设计模式。它通过将测试页面的元素和操作封装成对象,实现测试脚本与页面结构的解耦。PO 模式的核心优势包括提高代码的可读性、可维护性和可重用性。具体来说,它分为 Webdriver 封装层、页面对象层、业务逻辑层和测试用例层,分别封装定位元素的方法、对元素的操作以及组合操作完成业务功能。这种模式有效减少了测试脚本的冗余代码,使测试人员能更快速地编写和维护测试脚本。
UI 自动化测试中大批量的页面变化或者是重构
面试题目
- 级别: L3
- 知识模块: Web自动化测试
UI自动化测试中大批量的页面变化或者是重构
公司
- 美团外包
招聘类型
社招
题目解析
- 本题考察点为考验面试者在遇到问题时的解决能力,以及对问题的分析能力。
-
当 UI 自动化测试遇到大批量页面变化或重构时,测试脚本往往需要进行大规模的调整和更新。为了应对这种情况,可以采取以下方法和策略:
-
自动化测试框架的使用
-
选择合适的自动化测试框架,如 Selenium、Cypress、Appium 等,这些框架通常提供丰富的 API 和工具,可以简化测试脚本的编写和维护。
-
页面对象模型 PageObject
-
页面对象模型是一种设计模型,将页面上的元素和操作封装在类中,这样当页面变化时,只需要更新这些页面对象类,而不需要修改测试脚本。
- 在定位元素时,使用更加健壮的 CSS 选择器和 Xpath,避免使用会频繁变化的属性(如动态 ID)。可以根据元素的层次结构或相对位置进行定位。
-
版本控制和分支策略
-
在页面变化或重构时,可以创建新的分支来处理这些变化。测试脚本的更新也应该在新的分支中进行,以便与开发团队的工作保持同步。
-
持续集成/持续交付
-
将自动化测试集成到 CI/CD 流水线中,确保每次代码变更都能自动运行测试,及时发现问题。
答案
处理大批量页面变化或重构的关键在于设计稳定的定位策略,减少对具体元素属性的依赖。在选择合适自动化框架基础上,使用页面对象模型(Page Object Model,POM)将页面元素和操作封装起来,可以显著减少重复工作,提高测试脚本的可维护性和复用性。同时结合版本管理策略可以更好地处理代码地变化,在有持续集成和持续交付的支持下可以确保及时发现问题。