ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【面试题】自动化测试面试题

【面试题】自动化测试面试题 1. 说说你对自动化测试的理解哪些场景适合做自动化哪些场景不适合自动化本质用代码替代人工重复执行测试解放人力提升回归效率不是用来替代所有手工测试核心擅长重复工作。✅ 适合自动化版本迭代频繁需要大量回归的核心业务流程重复执行、机械性的校验接口、冒烟、基础UI流程性能、并发、大批量数据校验7×24小时定时校验、CI门禁卡点多环境重复验证❌ 不适合自动化需求频繁变动、页面/接口经常大改脚本维护成本 收益一次性临时测试、探索性测试、新需求首轮功能测试UI视觉校验、主观体验类测试页面美观、交互感受复杂异常场景、偶现问题定位、可用性测试项目周期极短马上就要下线的小需求2. 手工测试和自动化测试的优缺点分别是什么工作中怎么取舍手工测试优点灵活性强善于发现隐性bug、体验类问题快速适配需求变更可做探索测试。缺点重复回归枯燥容易疲劳漏测执行慢无法支撑高频版本。自动化测试优点可重复执行、速度快适合CI门禁稳定用例可长期复用可并发执行。缺点前期投入成本高对需求稳定度有要求很难发现新bug只能发现脚本覆盖的问题脚本需要持续维护。取舍原则新需求第一轮、页面体验、探索测试交给手工稳定核心链路回归交给自动化衡量投入产出比维护成本过高就砍掉自动化用例。3. 自动化测试和 CI/CD 有什么区别CI/CD是持续集成、持续部署的工程流水线是一套流程平台自动化测试是测试手段属于CI/CD里的一个环节。CI代码提交自动构建、执行自动化测试做质量门禁失败阻止合并。CD通过CI校验后自动部署到测试/预发环境。自动化测试是CI的质量卡点没有自动化CI只能做编译打包无法自动校验质量。4. 自动化测试的核心目标是什么降低回归成本版本迭代自动执行核心用例防止老功能回归bug质量门禁代码提交触发提前拦截缺陷缺陷左移提升版本交付速度减少人工回归耗时加快发布节奏保障稳定性定时巡检线上核心接口及时发现故障注意自动化目标不是100%覆盖所有功能高覆盖会带来极高维护成本。5. 什么是断言为什么需要断言断言脚本执行完成后预期结果和实际结果对比校验的代码逻辑。自动化脚本只会执行操作如果没有断言脚本只会跑通流程但无法判断功能是否正确。举例子调用发布文章接口返回200只是请求成功断言文章标题、内容和传入一致才代表业务逻辑正常。没有断言脚本永远显示pass业务出错也发现不了。6. 自动化测试用例的设计原则是什么独立原则每个用例独立不依赖其他用例执行结果自己准备数据自己清理单一职责一条用例只验证一个业务点失败容易定位问题可复用公共操作抽离不要重复写代码稳定可靠减少不稳定定位、等待问题降低flaky用例可维护参数化不要硬编码命名清晰优先级优先P0/P1核心流程非核心场景不盲目写自动化7. 自动化测试脚本是你自己搭的还是用现成的框架基于开源框架二次搭建内部自动化工程。底层pytest、requests、Playwright这些是成熟开源框架直接拿来用但项目框架不是直接开箱即用自己封装http请求、token管理、日志、报告、数据清理、fixture公共前置后置、环境配置、失败重试集成Allure和Jenkins。简单说底层轮子开源业务框架是团队自己搭建。8. 自动化测试的范围和程度应该如何界定先评估ROI投入产出。范围优先覆盖P0/P1核心业务链路高频回归场景次要功能、变动频繁功能不做自动化。程度接口自动化优先接口稳定性高、维护成本低UI自动化只保留主干流程少做细枝末节UI校验。指标约束自动化用例维护成本不能持续上涨flaky不稳定用例要及时修复或剔除。分层接口自动化占大头少量UI冒烟搭配少量性能脚本。9. 如何开展自动化测试框架的构建需求调研确定自动化类型接口/UI、业务范围、技术栈评估接入CI选型接口pytestrequestsUI可选Playwright分层设计配置层、公共工具层、业务API封装层、用例层、报告调度层编写基础能力请求封装、鉴权、断言、日志、数据清理、fixture开发首批核心用例试运行修复不稳定问题接入Jenkins CI流水线配置定时/代码触发执行持续迭代优化优化报告、失败重试、分布式执行定期清理失效用例10. 在自动化方面有什么成熟的方案有没有做过二次开发成熟方案pytest接口自动化 Playwright UI自动化接入JenkinsAllure。二次开发工作封装统一http请求类统一处理token、超时、重试、日志打印自定义fixture自动创建/清理测试数据多账号鉴权管理扩展Allure报告增加响应体、请求头、错误截图开发脚本清理工具批量删除残留脏数据封装数据库操作工具用于数据校验增加用例标签管理支持按模块、优先级选择性执行11. Pytest 的作用域有哪几种fixture 5种作用域从小到大function默认每个测试函数执行前后调用class一个测试类所有用例执行前后调用一次module整个py文件执行前后调用一次session整个测试会话一次pytest执行只运行一次常用于登录package包级别同一个目录下所有用例执行一次高版本pytest支持12. 项目中 Pytest 的用法做了多少测试设计了多少用例面试口述模板你按需微调项目使用pytest做接口自动化搭配requests、allure。大量使用fixture管理前置后置、数据清理pytest.mark.parametrize做参数化mark标签区分P0/P1、模块失败重试插件reruns。我这边主导开发大概200接口自动化用例覆盖核心业务发布、查询、编辑、删除链路接入CI代码合并自动执行冒烟用例每日全量回归。面试可以根据真实项目改数字。13. unittest 和 pytest 框架有什么区别为什么选 pytest 不选 unittest对比unittestpytest用例写法必须继承TestCase用例方法必须以test开头断言只能self.assertEqual写法灵活普通函数/类都可以原生支持python assert可读性强fixturesetup/teardown粒度只有类、方法不够灵活fixture支持5种作用域支持依赖注入复用性强插件生态插件少丰富插件reruns、allure、xdist并发参数化自带参数化繁琐parametrize简洁好用选择pytest原因fixture强大、断言简单、插件丰富、支持并发执行框架扩展性更好适合搭建企业自动化框架。14. Selenium 元素定位的八种方法分别是什么id 定位不到元素怎么办八种定位id、name、class_name、tag_name、link_text、partial_link_text、xpath、css_selector。id定位不到排查思路id是动态id每次刷新变化改用xpath/css选择器元素还没加载完成增加显式等待WebDriverWait元素在iframe里面需要切换iframe页面多窗口没有切换窗口句柄id写错存在空格元素不可见display:none页面存在多个相同id不规范页面15. 怎么处理 UI 测试不稳定、维护成本高的问题UI自动化最大痛点就是flaky不稳定。优先显式等待不要强制sleep等待元素可点击/可见定位器优先css/xpath尽量不要用绝对路径用相对路径用例独立每条用例自己准备数据用完清理减少UI自动化范围只保留核心冒烟链路大量业务交给接口自动化不稳定用例标记定期复盘持续失败的脚本直接下线页面改动及时维护脚本页面增加稳定测试属性data-testid不要依赖样式class失败自动截图、保存页面日志方便定位失败原因16. 接口测试和 UI 测试各自的优缺点是什么为什么接口测试用例比 UI 测试用例多接口测试✅优点稳定、执行快、维护成本低可以深入校验业务逻辑支持并发适合CI门禁❌缺点无法校验前端页面渲染、交互UI测试✅优点模拟真实用户操作校验页面交互、前端展示❌缺点页面改动脚本容易失效执行慢不稳定维护成本高接口用例数量更多原因接口层才是业务逻辑真正实现层大量业务规则、边界、异常都在接口校验UI只需要走主干流程大量参数校验、异常场景不需要前端操作UI脚本维护成本太高不适合写大量用例。17. 什么是 AppiumAppium 的架构和底层原理是什么Appium 是跨平台移动端UI自动化框架支持Android、iOS。底层原理客户端-服务端架构Appium Server中间服务接收脚本http请求Android底层封装UiAutomator2向手机发送指令驱动App操作iOS底层封装XCUITest原理Appium不需要在被测App里植入额外代码是原生测试框架的封装脚本通过JSON Wire协议和Appium Server通信。18. Selenium 和 Appium 有什么区别各自适用于什么场景SeleniumWeb网页自动化驱动浏览器定位网页DOM元素。适用PC Web/H5页面。Appium移动端App自动化原生App、小程序。底层调用手机系统测试能力不是浏览器DOM。19. UI 自动化测试中如何做集群/分布式执行方案Selenium Grid多台机器部署Node节点中心hub分发用例Playwright 分布式pytest-xdist多进程本地并发多机器可以搭配selenium grid云真机平台如Testin直接调用云端手机/浏览器集群执行UI用例。注意分布式执行用例之间必须完全独立不能共享数据。20. Playwright 和 Selenium 有什么区别为什么选择 Playwright对比SeleniumPlaywright等待机制需要手动写显式等待容易不稳定自动等待元素就绪内置智能等待flaky更少浏览器单独驱动需要下载管理driver自带浏览器驱动自动安装能力Web页面Web H5支持网络拦截、mock、截图录屏架构老协议基于现代CDP浏览器协议选择Playwright理由开箱即用、自动等待减少不稳定自带录屏、网络拦截API简洁脚本稳定性远高于Selenium减少维护成本。
返回列表