软件测试面试挂科的复盘与知识梳理

1、如何查询表中的第x到y条记录?

  SELECT * FROM table_name LIMIT [offset], [count]; (这个有有印象没把握当时没说)

     SELECT * FROM table_name  LIMIT [count] OFFSET [count];

2、请介绍一个你测过的项目,越详细越好

(介绍项目我一般都不太介绍的好,可能记忆太差了,做完后项目的细节不太记得住,不过后来我有说背不出项目细节,有好心人提醒我现在的项目介绍不是介绍项目,是要你介绍你在当时的炫技/成果)

补充一个小伙伴提供得参考模板(啊……我觉得对我还是有难度,你们有帮助得可以试试):

开始讲项目,之后讲技术选型,之后讲理论基础概念、设计分层,具体操作细节,实际操作中的问题分析和解决,结论

3、自动化的角色,搭建自动化用了哪些包

(这里也没记得几个说,英语不太好……问接口请求担心把request和response的英文搞混,java以前开发的时候2个都会有写,知道是请求,面试的时候应该是说对了)

pytest
pytest-html
pytest-xdist
pytest-rerunfailures
pytest-base_url
allure-pytest
pytest-result-log
pytest-order
redis
pyyaml
deepdiff
jsonpath
pymysql

4、写一个装饰器

(当时没答上来,之前的博客文章里其实有写,不过基础的没常复习巩固也是自己的问题)

# Python 普通装饰器
def my_decorator(func):
    def wrapper(*args, **kwargs):
        print("执行前操作")
        result = func(*args, **kwargs)
        print("执行后操作")
        return result
    return wrapper

@my_decorator
def my_function():
    print("函数执行")

另外补充下:装饰器本质上是Python的一个语法糖,它允许我们在不修改原函数代码的情况下,为函数增加新功能。它的核心是一个‘高阶函数’,接收一个函数作为参数,并返回一个新函数。
比如在Pytest中,我们常用的 @pytest.fixture 就是一个装饰器,它能把一个普通函数标记为一个夹具,用来提供测试数据或准备测试环境。(害专业术语还是要背啊……仅看得懂,可以差不多ai下语法规则写,在面试的时候不够……)

5、conftest这个也问了,具体怎么问的不记得了

     (当时我当时应该是回答了类似作用域,现在联系4和5题来看可能是考官希望我自己说出Fixture或者还是希望继续提醒我可以想起装饰器……

conftest.py 是Pytest的共享配置中心,主要用来全局管理Fixture和插件。

比如可以在里面写这些:

import pytest

# @pytest.fixture(scope='package')
@pytest.fixture
def f():
    print("前置操作,用例执行之前,自动执行")  # 前置操作,用例执行之前,自动执行
    yield "返回值,供用例使用"  # 返回值,供用例使用
    print("后置操作,用例执行之后,自动执行")  # 后置操作,用例执行之后,自动执行

fixture 的 scope 管‘执行次数’,conftest 管‘可见范围’;conftest 是 fixture 的‘全局仓库’,能让单个文件的 fixture 变成跨文件可用,且不改变 fixture 本身的 scope 规则。

6、项目哪里用到了Redis?Redis的作用?测试Redis要关注什么?

(在我描述的上一个项目里面我并没有深入到Redis这块,导致可能回答的不太好,不过我有提到别的项目中有接触到的相关Redis的部分,当时的确没想这么多,我知道理论知识,但是实际遇到的可能就是部分……哎,事后回想可能他要的答案是跟7有关的性能这块?)

【作用】

高性能:内存操作,读写速度极快
丰富数据结构:支持多种数据类型的原子操作
持久化:数据可持久化到磁盘
高可用:支持主从复制、哨兵模式、集群模式
原子性:单个操作是原子的,支持事务
发布订阅:支持消息广播
Lua脚本:支持复杂逻辑的原子执行

【测试 Redis 时需要关注】

功能正确性:数据操作、事务、过期策略
性能表现:读写延迟、并发处理、吞吐量
可靠性:持久化、故障恢复、数据一致性
容量管理:内存使用、Key数量、数据清理
安全性:认证授权、命令权限、网络安全
集成测试:与应用的正确交互
监控告警:关键指标监控、异常检测

7、也问了性能,和关注的指标

(这块我应该回答的也不太好,性能这个我就做过简单的报告和验收交付的那种,具体规划硬件服务器啥的没搞过。之后回答的也不是很好,开始提到了中位数、90%、99%,开始说了是响应时间,再次问慌了想着难道是响应……)

打开我的jmeter再看了下,结合服务器那边要看的指标有:

CPU使用率、内存使用率、磁盘I/O、网络I/O、吞吐率TPS(QPS\RPS)、并发用户数、点击率、平均值、中位数、百分位数(90%、95%、99%)、最大值、最小值、异常、吞吐量、接收、发送


今天又是一次面试机会,感觉可能又挂了,除了项目得介绍,还记得得问题有:


8、pytest得特性

没回答出来(这题死的一点不冤,真的一点没头绪),面试结束之后问了下ai(看完答案,能认识一些,但是并不知道他叫特性,全得也背不出)

一、基础特性

特性类别特性名称语法示例功能描述应用场景
测试发现自动发现-自动识别 test_*.py*_test.py 文件零配置启动测试
类方法发现TestClass.test_method()识别类中的测试方法面向对象测试
断言系统原生断言assert expr使用 Python 原生 assert 语句所有测试断言
智能重写-失败时显示详细上下文信息调试和问题定位
异常断言pytest.raises(ValueError)验证代码抛出指定异常异常流程测试
标记系统跳过测试@pytest.mark.skip无条件跳过测试未实现功能
条件跳过@pytest.mark.skipif条件满足时跳过版本依赖测试
预期失败@pytest.mark.xfail标记预期失败的测试已知缺陷管理
参数化@pytest.mark.parametrize为测试提供多组参数数据驱动测试

二、Fixture 系统

特性类别特性名称语法示例功能描述应用场景
基础 Fixture函数作用域scope='function'每个测试函数执行一次默认作用域
类作用域scope='class'每个测试类执行一次类级别共享
模块作用域scope='module'每个模块执行一次模块级别共享
包作用域scope='package'每个包执行一次包级别共享
会话作用域scope='session'整个测试会话一次全局共享资源
高级 Fixture自动使用autouse=True自动应用于所有测试全局设置/清理
参数化 Fixture-Fixture 接收参数动态资源配置
Fixture 工厂返回函数而非值延迟创建或动态生成复杂对象创建
依赖管理Fixture 依赖def test(fixture1, fixture2)Fixture 间依赖注入资源组合
Yield Fixtureyield resource支持 setup/teardown资源生命周期
最终化器request.addfinalizer注册清理函数复杂清理逻辑

三、参数化测试

特性类别特性名称语法示例功能描述应用场景
基础参数化单参数parametrize("input", values)单个参数多值测试简单数据驱动
多参数parametrize("a,b", values)多个参数组合测试组合测试场景
嵌套参数化多个装饰器多个参数化装饰器叠加多维参数组合
高级参数化动态参数使用函数生成参数运行时生成测试数据动态测试场景
ID 自定义ids=lambda val: str(val)自定义测试用例显示名提升报告可读性
间接参数indirect=True参数传递给 FixtureFixture 参数化
参数化类类装饰器整个类参数化类级别数据驱动

四、插件与扩展

插件类别插件名称主要功能应用场景官方/第三方
执行优化pytest-xdist并行和分布式测试加速测试执行官方
pytest-repeat重复执行测试排查偶现问题第三方
pytest-rerunfailures失败重试处理不稳定测试第三方
覆盖率分析pytest-cov代码覆盖率统计质量门禁第三方
pytest-mutagen变异测试测试有效性评估第三方
报告生成pytest-htmlHTML 测试报告非技术人员查看第三方
pytest-allureAllure 报告集成企业级报告第三方
pytest-json-reportJSON 格式报告CI/CD 集成第三方
框架集成pytest-djangoDjango 集成测试Django 项目第三方
pytest-flaskFlask 集成测试Flask 项目第三方
pytest-asyncio异步测试支持asyncio 项目第三方
数据与 Mockpytest-mockMock 和 Patch 集成单元测试第三方
pytest-datadir测试数据文件管理文件数据测试第三方
pytest-freezegun时间模拟时间相关测试第三方

五、配置与钩子

配置类别配置项配置示例功能描述应用场景
配置文件pytest.ini[pytest] 段主配置文件项目级配置
pyproject.toml[tool.pytest.ini_options]现代配置格式新项目推荐
setup.cfg[tool:pytest] 段兼容性配置传统项目
命令行选项详细程度-v-vv-q控制输出详细程度调试/简洁输出
回溯信息--tb=style控制失败回溯格式错误信息定制
测试选择-k expression关键字选择测试快速运行子集
标记过滤-m marker按标记过滤测试分类执行
钩子函数配置钩子pytest_configure配置初始化后调用全局初始化
收集钩子pytest_collection_modifyitems修改收集的测试项测试过滤/排序
执行钩子pytest_runtest_*测试执行各个阶段执行监控
报告钩子pytest_terminal_summary终端报告生成自定义报告

六、企业级特性

特性类别特性名称功能描述技术价值业务价值
并发执行多进程并行-n auto 或指定数量充分利用多核 CPU缩短测试时间
分布式测试--dist=each多机分布式执行超大规模测试
负载均衡自动分配测试任务优化资源利用成本优化
测试质量失败优先--ff--lf优先运行上次失败的测试快速反馈
测试排序--order-dependencies控制测试执行顺序复杂流程测试
超时控制--timeout=300设置测试超时时间防止死循环
集成能力CI/CD 集成Jenkins, GitLab CI 等自动化流水线集成DevOps 实践
监控集成Prometheus, Grafana测试指标监控质量趋势分析
告警系统测试失败自动通知及时问题响应生产保障

七、性能特性

性能维度优化特性实现方式性能提升适用场景
启动速度惰性导入延迟加载测试模块减少初始内存占用大型测试套件
缓存机制.pytest_cache 目录避免重复计算增量测试
执行速度测试分片按模块/目录分组执行并行化基础分布式测试
智能跳过条件判断提前跳过减少无效执行环境依赖测试
内存优化资源复用Fixture 作用域管理减少重复创建资源密集型测试
及时清理yield 和 finalizer避免内存泄漏长期运行测试

八、兼容性与标准

兼容维度支持特性说明版本要求迁移路径
Python 版本3.5+完全支持PyTest ≥ 5.0向下兼容
2.7有限支持PyTest ≤ 4.6建议升级
测试框架unittest完全兼容所有版本无缝迁移
doctest集成支持所有版本直接运行
nose兼容模式所有版本逐步迁移
操作系统Windows完全支持所有版本平台无关
Linux完全支持所有版本平台无关
macOS完全支持所有版本平台无关

九、开发体验特性

体验维度特性名称功能描述开发者价值示例
调试支持PDB 集成--pdb 失败时进入调试快速问题定位交互式调试
输出捕获控制 stdout/stderr 输出清洁的测试输出日志管理
详细追踪--trace 跟踪执行流程理解测试执行流程分析
报告体验色彩输出终端彩色输出直观结果展示红/绿高亮
进度显示实时显示测试进度执行状态感知进度条
耗时统计显示测试执行时间性能分析慢速测试识别
IDE 集成VS Code官方扩展支持编辑器内测试一键运行
PyCharm深度集成专业 IDE 支持图形化界面
JupyterNotebook 支持交互式测试数据科学

十、安全与维护

安全维度特性/实践描述安全等级实施建议
代码安全依赖检查定期安全漏洞扫描自动化扫描
权限控制测试环境访问控制最小权限原则
数据隔离测试数据与生产隔离环境分离
维护保障向后兼容主要版本保持兼容平滑升级
长期支持LTS 版本维护生产环境使用
社区支持活跃的 Issue 处理及时更新
质量保障测试覆盖强制覆盖率要求CI 门禁
代码审查测试代码同行评审流程化
文档完整完整的 API 文档持续更新

特性使用统计(2023年调研数据)

特性类别使用率满意度学习曲线团队采用建议
基础断言100%9.5/10必须掌握
Fixture 系统85%9.2/10核心技能
参数化测试78%9.0/10推荐掌握
标记系统92%8.8/10必须掌握
插件扩展65%8.5/10中高按需学习
钩子函数28%8.0/10高级主题
并行执行45%8.7/10性能优化时采用

*数据来源:2023年 Python 开发者调查(n=2,500+)*

总结:PyTest 核心价值矩阵

价值维度具体体现对开发者的价值对企业的价值
生产力简洁的 API,自动发现减少样板代码,专注业务逻辑提升开发效率,缩短交付周期
可维护性模块化 Fixture,清晰结构易于理解和修改测试代码降低维护成本,提高代码质量
可扩展性插件架构,钩子系统满足定制化需求适应业务变化,技术债务可控
可靠性稳定执行,完善错误处理信任测试结果保障产品质量,减少线上事故
协作性标准化输出,集成友好团队协作顺畅促进 DevOps 文化,提升协作效率

看着这么多特性本来感觉记不住想放弃了,突发奇想跟ai说了下记不住这么多哎有没有什么好办法让我也能说上几句……ai给了个「3+2」饼干记忆,感觉好像我又能努力下说几句了:

  • 3 个核心:极简用例(原生断言)、Fixture(模块化夹具)、参数化(数据驱动);
  • 2 个进阶:丰富插件、灵活执行控制(并行 / 跳过 / 重试);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值