高级面试题
详细介绍框架是什么样的框架?你在其中你是做了哪些事情?
面试题目
- 级别: 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 层提供对浏览器和页面元素的操作方法,页面对象层基于这些方法进行业务逻辑的抽象封装,最终在测试用例层编写具体的测试用例来验证业务逻辑。
做了 3 年的自动化测试,有碰到比较难解决的做问题是什么?
面试题目
- 级别: L1
- 知识模块: App自动化测试
做了3年的自动化测试,有碰到比较难解决的做问题是什么?
公司
- 大众外包
招聘类型
社招
题目解析
面试官考察点:
- 遇到的问题是什么。
- 为什么会出现此问题。
- 如何解决问题。
- 如何规避问题再次出现。
在自动化测试中,常遇到难以解决的问题包括动态数据处理、稳定性保障、测试环境管理等。
-
自动化测试没有达到预期目标,没有解决人力,也没有提高产品质量。
-
自动化测试脚本会频繁报错,但错误原因多半是脚本问题而不是产品质量问题。
-
自动化测试用例缺少有效维护
-
产品功能的不断迭代,自动化用例如果无法及时、有效地跟进这些变化,无效用例会越积越多,无法维护。
-
长时间运行的测试脚本
-
长时间运行的测试脚本可能会因为各种原因导致中断或失败。
-
测试环境的稳定性
-
测试环境可能不稳定,导致测试脚本频繁失败。尽量保持测试环境与生产环境一致,使用容器化技术来保证环境的一致性和可重复性。
答案
在开展自动化测试工作时,我们遇到了一个测试用例维护的问题。由于前期用例量不大,我们对用例管理没有特别重视。然而,随着业务复杂度增加,用例量也随之增多,导致用例运行和维护变得非常困难。为了解决这个问题,我们开始考虑使用 pytest 的一些机制,例如:
- 模块化管理
- 优先级管理
- 持续改进
通过这几方面的措施,逐渐解决了用例维护的问题,尽管在这期间不断地有用例增加,但是因为有了合理的管理机制,能够高效地组织和维护所有测试用例,确保测试工具的顺利进行。
PageObject 设计模式是什么
面试题目
- 什么是 PO(Page Object)设计模式?PO 设计模式遵循的规则是什么?有哪些需要注意的点?
公司
- 某金融公司
招聘类型
- 社招
- 校招
题目解析
点击查看 PageObject 简介
之前的 UI 自动化测试中的主要问题在于:可维护性差,可读性差。页面稍有改动就会导致多条用例需要修改。
所以需要使用 PO 设计模式。PO 设计模式主要是将每个网页抽象成一个页面对象,该对象封装了业务所需元素和行为。
当页面出现变化时,只需更新页面对象的某些属性即可完成对相应用例的更新。这样可以降低维护的成本,并且提高测试的稳定性。
那么,不同的团队成员可以负责不同页面对象的编写和维护,并且对于本身不熟悉代码的成员来讲也可直接基于实现来编写业务用例,这样可以多方面提高团队的工作效率。
注意点
-
使用 PO 设计模式时需要遵循六大原则
-
六大原则即是写代码时容易出错且违背 PO 设计模式的点,需要牢记。
-
回答时需要强调 PO 设计模式怎么提高效率,和传统线性代码的对比。
答案
PO 设计模式,即 Page Object Model,是自动化测试中常用的设计模式。它通过将测试页面的元素和操作封装成对象,实现测试脚本与页面结构的解耦。PO 模式的核心优势包括提高代码的可读性、可维护性和可重用性。具体来说,它分为 Webdriver 封装层、页面对象层、业务逻辑层和测试用例层,分别封装定位元素的方法、对元素的操作以及组合操作完成业务功能。这种模式有效减少了测试脚本的冗余代码,使测试人员能更快速地编写和维护测试脚本。
UI 自动化测试其他解决方式
面试题目
- 级别: L2
- 知识模块: UI自动化测试
UI自动化测试其他解决方式
公司
- 美团外包
招聘类型
社招
题目解析
该问题是面试观想要考察应聘者在 UI 自动化测试方面的深度理解和广度认知。可以从以下几个方向来回答:
- 技术多样性
- 工具和框架的广泛掌握:应聘者是否了解和使用过多种 UI 自动化测试工具和框架,是否能根据不同的项目需求选择合适的工具。
- 新兴技术的掌握:应聘者是否关注并尝试使用新兴的UI自动化测试工具和技术,如Cypress、Playwright等。
- 创新思维和问题解决能力
- 非传统方法:应聘者能否提出一些非传统的 UI 自动化测试方法,例如使用视觉测试工具、无代码测试平台等。
- 混合方法:应聘者是否能够将多种技术和方法结合使用,提出综合性的解决方案,例如结合 API 测试与 UI 测试,使用自动化测试与手动测试结合的策略。
- 实际经验和最佳实践
- 实际项目经验:应聘者是否能分享一些实际项目中的经验和成功案例,说明其在不同场景下选择和应用不同的 UI 自动化测试解决方案。
- 最佳实践:应聘者是否了解应用过 UI 自动化测试中的一些最佳实践,如测试脚本的可维护性、测试数据的管理、结果报告的生成。
- 灵活应变和适应能力
- 适应不同项目需求:应聘者是否能够根据不同项目的具体需求灵活调整其测试策略和方法。
- 应对挑战:应聘者是否能够识别并解决UI自动化测试中的常见挑战,如动态元素处理、测试稳定性、跨浏览器兼容性等。
答案
在 UI 自动化测试中,除了传统的工具和方法,还有许多其他可以提高测试效率和覆盖率的方法,例如使用混合测试方法,将 API 与 UI 测试结合,将自动化与手工测试结合。使用一些云测平台,可以支持提供多种设备和浏览器环境。在自动化测试中嵌入探索性测试,用自动化脚本生成的基础数据和场景进行探索性验证。或者结合一些 AI 优化测试用例选择和测试数据的生成。
UI 自动化测试其他解决方式调研?如何降低维护成本?
面试题目
- 级别: L3
- 知识模块: UI自动化测试
UI自动化测试其他解决方式调研?如何降低维护成本?
公司
- 美团外包
招聘类型
社招
题目解析
在面试过程中,面试官希望考察应聘者在进行自动化测试时是否全面考虑了多种方案,以及选择当前方案的理由和后期维护成本的考虑。优化这部分内容时,应聘者可以从以下几个方面进行阐述:
- 需求分析:
- 业务需求:根据项目的具体需求,明确需要自动化的测试用例范围,如功能测试、回归测试、性能测试等。
- 技术需求:了解项目的技术栈,选择与之兼容的自动化测试工具和框架。
- 多种方案比较:
- 工具选型:比较不同自动化测试工具(如Selenium、Appium、Cypress等)的优缺点,以及它们的社区支持、更新频率和学习成本。
- 框架选型:评估不同自动化测试框架(如JUnit、TestNG、PyTest等)的易用性、可扩展性和与项目技术栈的契合度。
- 测试策略:考虑不同的测试策略,如基于UI的测试、API测试、单元测试等,比较它们的覆盖范围、执行速度和稳定性。
- 选择当前方案的理由:
- 适用性:选择的方案最能满足项目的业务和技术需求,如工具和框架与项目的技术栈高度兼容,能够有效地覆盖关键功能。
- 效率:当前方案在执行速度、测试覆盖率、结果可靠性等方面表现优异,能够快速反馈问题。
- 成本效益:综合考虑工具和框架的学习成本、开发成本和执行成本,选择最具性价比的方案。
- 后期维护成本的考虑:
- 代码质量:采用良好的编码规范和最佳实践,确保测试代码易于维护和扩展。
- 自动化测试框架:选择稳定且有良好社区支持的框架,确保在出现问题时能够快速获得帮助和解决方案。
- 文档和培训:编写详细的测试文档,并对团队成员进行培训,确保每个人都能理解和使用自动化测试方案。
- 持续集成:将自动化测试集成到持续集成(CI)/持续交付(CD)管道中,自动执行测试并报告结果,减少人工干预,提高测试效率。
答案
在最初进行自动化测试方案的选择时,我们经过了比较全面的需求分析,明确了项目的业务和技术需求,并且比较了不同工具和框架的优缺点,例如 Selenium、Cypress、Pytest 和 Unitest,评估它们的实用性、效率和成本效益。
选择当前这个方案的原因是和我们项目技术栈较为贴合,并且能够覆盖到测试范围,对比看来在执行速度和结果可靠性上都值得投入研发,学习成本、开发成本和执行成本方面也具备优势,整体的性价比也比较高。
在后期维护方面,我们考虑了整体的代码框架使用了 PO 设计模式,制定了和项目贴合的一些编码规范,确保测试代码维护和扩展起来相对容易,并且也可以通过简单的培训让团队成员都用起来。后期还将自动化测试代码集成到 CI/CD 中,如果有问题也会及时发现,及时维护,大大减少了人工干预的时间,可以提高我们的测试效率。
UI 自动化测试中大批量的页面变化或者是重构
面试题目
- 级别: L3
- 知识模块: Web自动化测试
UI自动化测试中大批量的页面变化或者是重构
公司
- 美团外包
招聘类型
社招
题目解析
- 本题考察点为考验面试者在遇到问题时的解决能力,以及对问题的分析能力。
-
当 UI 自动化测试遇到大批量页面变化或重构时,测试脚本往往需要进行大规模的调整和更新。为了应对这种情况,可以采取以下方法和策略:
-
自动化测试框架的使用
-
选择合适的自动化测试框架,如 Selenium、Cypress、Appium 等,这些框架通常提供丰富的 API 和工具,可以简化测试脚本的编写和维护。
-
页面对象模型 PageObject
-
页面对象模型是一种设计模型,将页面上的元素和操作封装在类中,这样当页面变化时,只需要更新这些页面对象类,而不需要修改测试脚本。
- 在定位元素时,使用更加健壮的 CSS 选择器和 Xpath,避免使用会频繁变化的属性(如动态 ID)。可以根据元素的层次结构或相对位置进行定位。
-
版本控制和分支策略
-
在页面变化或重构时,可以创建新的分支来处理这些变化。测试脚本的更新也应该在新的分支中进行,以便与开发团队的工作保持同步。
-
持续集成/持续交付
-
将自动化测试集成到 CI/CD 流水线中,确保每次代码变更都能自动运行测试,及时发现问题。
答案
处理大批量页面变化或重构的关键在于设计稳定的定位策略,减少对具体元素属性的依赖。在选择合适自动化框架基础上,使用页面对象模型(Page Object Model,POM)将页面元素和操作封装起来,可以显著减少重复工作,提高测试脚本的可维护性和复用性。同时结合版本管理策略可以更好地处理代码地变化,在有持续集成和持续交付的支持下可以确保及时发现问题。
ui 自动化每次执行测试用例结果不稳定怎么办?
面试题目
- 级别: L1
- 知识模块: App自动化测试
ui自动化每次执行测试用例结果不稳定怎么办?
公司
- 优酷外包
招聘类型
社招
题目解析
-
本题考察面试者对于UI自动化测试框架的实战经验,和对出现问题的分析和解决能力。
-
每次执行测试用例结果不稳定可能是定位不准确、页面加载慢等原因,可以优化定位策略、等待元素加载完全等方式解决
-
UI 自动化测试结果不稳定是一个常见的问题,通常会影响测试的可靠性和准确性,以下是一些常见的原因和解决方案:
-
元素定位失败:页面加载时间不一致,导致元素在脚本执行时还未完全加载。
- 使用显式等待或隐式等待,确保元素已经加载。
-
动态元素:某些元素的属性(如ID、Class)在每次加载时会发生变化。
- 使用相对稳定的属性(如CSS Selector、XPath)进行定位,或与开发团队沟通,确保元素属性稳定。
-
网络延迟:网络连接不稳定,导致页面加载时间不一致。
- 使用重试机制或增加等待时间,并在本地环境下进行更多测试。
-
浏览器差异:不同浏览器的渲染和行为不一致,导致测试结果不同。
- 在不同浏览器中进行跨浏览器测试,确保脚本在所有目标浏览器中都能正常运行。
-
数据依赖:测试用例依赖于特定的数据或状态,而这些数据或状态在每次测试执行时不一致。
- 确保测试数据和状态的一致性,使用Mock数据或数据库清理和初始化。
-
并发执行:多个测试用例并发执行时,可能会相互干扰,导致不稳定。
- 控制并发执行的数量,确保测试环境的隔离性。
-
UI 变化频繁:应用UI频繁更新,导致定位方式失效或操作步骤变化。
- 与开发团队保持沟通,及时更新自动化脚本,使用更健壮的定位方式。
答案
UI 自动化结果不稳定可能是定位不准确、页面加载慢等原因,可以优化定位策略、调整等待时间,并且增加重复执行和结果记录确保自动化测试结果的稳定性和可靠性。