自动化测试面试问答(一)
1、请描述一下自动化测试流程?
1)需求分析:明确自动化测试范围和目标
2)工具选型:选择框架(Pytest/Unittest)、工具(Selenium/Requests)
3)环境搭建:配置测试环境、依赖库
4)用例设计:编写可自动化的测试用例
5)脚本开发:用PO模式编写可维护脚本
6)测试执行:CI集成(Jenkins/GitLab CI)
7)结果分析:日志/报告(Allure)定位问题
8)维护更新:随需求迭代更新脚本
2、你是如何做接口自动化测试的?
# 示例:使用Requests+Pytest import requests import pytest def test_login(): url = "https://api.example.com/login" data = {"user": "admin", "pass": "123456"} res = requests.post(url, json=data) assert res.status_code == 200 assert res.json()["token"] is not None
3、简单介绍一下Requets库?
Python HTTP库:
超时设置/SSL验证安装:pip install requests
4、具体说一说Unittest测试框架?
import unittest class TestMath(unittest.TestCase): def setUp(self): # 前置操作 self.calc = Calculator() def test_add(self): # 测试方法需以test_开头 self.assertEqual(self.calc.add(2,3), 5) def tearDown(self): # 清理资源 del self.calc if __name__ == "__main__": unittest.main()
5、具体说一说Pytest测试框架?
1)无需继承类:函数即用例
2)Fixture机制:灵活管理测试资源
3)参数化:@pytest.mark.parametrize简化数据驱动
4)插件丰富:Allure报告、并发执行(pytest-xdist)
5)断言直观:直接使用‘assert’
6、Unittest 与 Pytest 测试框架的区别?
Unittest vs Pytest
用例写法 | 需继承TestCase | 普通函数 |
前置后置 | setUp/tearDown | Fixture装饰器 |
参数化 | 需用subprocess | 内置parametrize |
报告 | HTMLTestRunner | Allure(更美观) |
社区生态 | 官方库,功能稳定 | 插件丰富,扩展性强 |
7、接口自动化如何做接口关联测试?
1)Token传递:登录接口获取token → 存入全局变量 → 后续请求携带
2)数据传递:创建订单返回order_id → 作为参数传给查询接口
3)实现方式:Pytest的fixture共享数据,封装全局的Session对象管理状态
8、做Web自动化如何处理验证码?
方法一:万能验证码,让测试环境固定验证码
方法二:屏蔽验证码,让开发临时关闭验证功能
方法三:OCR识别,使用Tesseract库识别图片提取验证码
方法四:借助第三方平台,付费API(打码平台)
方法五:Cookie绕过,手动登录后服用Cookie
9、抓取不到元素可能是什么原因?
原因一:定位问题,findelement的路径有问题
原因二:时机问题,没有在等待的时间内等到元素(未等待元素加载)
原因三:结构问题,元素在shadow dom内,或者页面元素包含在iframe内未切换
原因四:状态问题,元素被遮挡,页面未完全渲染(Ajax加载)
10、具体聊一聊自动化测试的作用?
1)提升效率:回归测试速度提升10倍+ 2)保证质量:高频执行避免人为遗漏 3) 降低成本:减少重复人力投入 4)持续反馈:CI/CD快速发现缺陷 5) 覆盖困难场景:压力测试/兼容性测试
不适合UI频繁变更的功能,需平衡自动化投入与收益
11、自动化测试调试思路
调试一些思路:
第一步:看log,看看哪里出错了,
第二步:看截图,看视频,找到是哪里出错
第三步:手工重复步骤,看看用手工操作是否会在相同的地方出错
第四步:检查xpath的路径,在当前页面是否可以正常找到
第五步:用js的高亮元素代码,看看程序是否可以正确找到
第六步:换一种xpath的写法,或者点击原来元素的父元素,或者子元素
第七步:添加等待时间,是否元素没有出现就去操作了,出错后,是需要进行调试的
#测试面经##测试##测试秋招#
整理面试过程中的测试问答,常看常新,多多学习!有些问题是从其他人那里转载而来,会在文章下面注明出处,希望大家多多支持~~