软件测试2025年面试题汇总

1、请进行自我介绍

背景​:

  • 3年软件测试经验,熟悉功能、接口、自动化测试,主导过电商/金融项目全流程测试。
  • 技术栈:Python + Selenium/Requests(UI/接口自动化)、JMeter(性能)、Postman/Charles(抓包调试)。

核心能力​:

  • 用例设计​:熟练运用等价类、边界值等方法,设计高覆盖率的测试用例。
  • 缺陷挖掘​:擅长定位前后端交互问题(如接口超时、数据不一致)。
  • 效率提升​:通过自动化脚本(Pytest+Allure)减少60%回归测试时间。

项目亮点​:

  • 在XX项目中,通过参数化+数据驱动测试,发现支付模块的并发扣款BUG,提升系统可靠性。

职业态度​:

  • 严谨细致,注重团队协作,持续学习新技术(如CI/CD集成测试)。

结束语​:
希望用我的经验为贵团队的质量保障贡献力量!

(可根据实际经历调整技术栈和项目细节)

2、软件测试的流程有哪些

1. 需求分析

  • 目标​:理解需求文档(PRD/用户故事),明确测试范围。
  • 输出​:测试范围清单、需求疑问点(与产品/开发确认)。

2. 测试计划

  • 内容​:
    • 测试目标、资源分配(人员/工具)。
    • 测试策略(功能/性能/安全测试)。
    • 进度安排(冒烟测试→系统测试→回归测试)。
  • 输出​:《测试计划》文档。

3. 测试设计

  • 方法​:等价类、边界值、判定表等(参考前文)。
  • 输出​:
    • 测试用例(Excel/XMind/TestLink)。
    • 自动化脚本(如Selenium/Pytest)。

4. 测试环境搭建

  • 硬件/软件​:部署测试服务器、数据库、依赖服务。
  • 数据准备​:基础数据(如测试账号)、Mock服务。

5. 测试执行

  • 阶段​:
    • 冒烟测试​:快速验证核心功能是否可测。
    • 系统测试​:全面执行测试用例,记录缺陷(Jira/Bugzilla)。
    • 回归测试​:修复缺陷后验证,确保无副作用。
  • 输出​:测试执行记录、缺陷报告。

6. 缺陷管理

  • 流程​:提交→分配→修复→验证→关闭。
  • 工具​:Jira、禅道、Bugzilla。

7. 测试报告

  • 内容​:
    • 测试覆盖率、通过率、缺陷统计。
    • 剩余风险与建议(如未覆盖场景)。
  • 输出​:《测试总结报告》。

8. 测试收尾

  • 归档​:用例、脚本、文档入库。
  • 复盘​:分析测试效率与缺陷遗漏原因。

不同模型中的测试流程

  • 瀑布模型​:严格按阶段执行(需求→设计→执行→报告)。
  • 敏捷模型​:
    • 每个迭代(Sprint)重复测试流程。
    • 持续测试(CI/CD流水线中自动化验证)。

核心目标​:​尽早发现缺陷,确保质量达标

3、软件测试的设计方法有哪些?

1. 黑盒测试方法

  • 等价类划分​:将输入数据分为有效/无效类(如用户名:合法字符、超长、空值)。
  • 边界值分析​:测试边界及附近值(如输入框允许1~100,测0/1/2/99/100/101)。
  • 判定表​:组合多个输入条件(如登录:用户名对/错 + 密码对/错 → 4种组合)。
  • 因果图​:分析输入与输出的因果关系,生成测试用例。
  • 状态转换​:测试系统状态变化(如订单状态:未支付→已支付→已发货)。
  • 错误推测​:基于经验猜测易错点(如输入特殊字符、重复提交)。

2. 白盒测试方法

  • 语句覆盖​:确保每条代码至少执行一次。
  • 分支覆盖​:覆盖所有if-else分支(如 if (x>0) 测x>0和x≤0)。
  • 路径覆盖​:覆盖所有可能的代码路径(复杂场景下可能不可行)。

3. 基于经验的测试

  • 探索性测试​:边测试边设计用例,适合敏捷快速迭代。
  • ​ checklist测试​:根据常见缺陷列表逐项检查(如兼容性、安全性)。

4. 其他专项方法

  • 数据驱动测试​:通过外部数据(CSV/Excel)批量生成用例。
  • 关键字驱动测试​:用关键字描述操作(如 输入|用户名|admin),实现脚本与数据分离。

如何选择方法?​

  • 功能测试​:等价类 + 边界值 + 判定表(覆盖输入组合)。
  • 复杂逻辑​:状态转换 + 因果图(如订单流程)。
  • 代码级验证​:分支覆盖 + 路径覆盖(单元测试)。
  • 快速验证​:探索性测试 + checklist(时间紧张时)。

示例​:
测试登录功能:

  1. 等价类​:有效用户名(字母)、无效用户名(特殊字符)。
  2. 边界值​:用户名长度(最小1字符,最大20字符)。
  3. 判定表​:组合用户名对/错 + 密码对/错 → 验证提示信息。

核心目标​:​用最少用例覆盖最多场景,高效发现缺陷

4、Selenium是如何进行自动化测试的?(你是如何用selenium进行自动化测试的?)

1. 环境搭建

pip install selenium pytest pytest-html webdriver-manager

2. 编写测试脚本

示例:登录测试

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化浏览器(自动管理驱动)
driver = webdriver.Chrome()

# 打开页面并操作
driver.get("https://example.com/login")
driver.find_element(By.ID, "username").send_keys("admin")
driver.find_element(By.ID, "password").send_keys("123456")
driver.find_element(By.XPATH, "//button[text()='登录']").click()

# 显式等待 + 断言
try:
    WebDriverWait(driver, 10).until(
        EC.text_to_be_present_in_element((By.ID, "welcome"), "admin")
    )
    print("✅ 登录成功")
except Exception as e:
    print(f"❌ 登录失败: {e}")
    driver.save_screenshot("login_fail.png")

# 关闭浏览器
driver.quit()

3. 关键技巧

  • 元素定位​:优先用 ID/name,复杂元素用 XPath/CSS
  • 等待策略​:
    # 显式等待(推荐)
    WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "button")))
    
    # 隐式等待(全局生效)
    driver.implicitly_wait(5)
  • Page Object模式​:分离页面对象和测试逻辑
    # pages/login_page.py
    class LoginPage:
        def __init__(self, driver):
            self.driver = driver
            self.username = (By.ID, "username")
        
        def input_username(self, text):
            self.driver.find_element(*self.username).send_keys(text)
    
    # tests/test_login.py
    def test_login():
        page = LoginPage(driver)
        page.input_username("admin")

4. 执行与报告

# 运行测试并生成HTML报告
pytest test_login.py --html=report.html

# 多浏览器测试(需配置Selenium Grid)
pytest test_login.py --browser=firefox

5. 常见问题解决

  • 元素找不到​:检查是否在iframe中,或增加等待时间
  • 跨域限制​:使用 driver.execute_script("return localStorage.token") 绕过
  • 验证码处理​:临时屏蔽测试环境验证码,或调用OCR服务

核心流程​:
定位 → 操作 → 断言 → 报告
适用场景​:Web UI回归测试、兼容性测试、数据驱动测试(结合CSV/Excel)

5、Fiddler工具在软件测试中有什么作用(你在软件测试中是如何使用fiddler这个工具的?)

Fiddler 是一款网络调试代理工具,主要用于监控、分析和调试客户端与服务器之间的HTTP/HTTPS通信。它通过充当中间人(Man-in-the-Middle)的角色,捕获所有经过的请求和响应数据,帮助开发者排查问题、优化性能或分析协议。

Fiddler 的核心功能:

  1. 抓包监控​:捕获所有HTTP/HTTPS请求和响应,包括Web、移动端、桌面应用等;支持查看请求头、响应体、状态码、Cookies等详细信息。

  2. 性能分析​:统计请求耗时、传输数据大小,识别慢请求;提供瀑布流视图(Timeline)分析加载顺序。

  3. 请求篡改与调试​:修改请求参数(如URL、Header、Body)并重发(AutoResponder或断点功能);模拟弱网环境(Rules > Performance > Simulate Modem Speed)。

  4. HTTPS解密​:配置解密HTTPS流量(需安装Fiddler根证书)。

  5. 自动化与扩展​:支持脚本(FiddlerScript)扩展功能,或与其他工具(如Postman)联动。

Fiddler在软件测试中的作用:

  1. 接口测试​:抓取API请求/响应,验证参数、状态码、返回数据是否正确;检查接口是否符合文档规范(如字段类型、格式)。

  2. 性能测试​:分析请求耗时、资源大小,定位慢接口或冗余请求;模拟弱网(Rules > Performance)测试超时或延迟场景。

  3. 安全测试​:检测敏感信息(Token、密码)是否明文传输;拦截修改请求,测试服务端对异常数据的处理(如SQL注入)。

  4. Mock测试​:使用AutoResponder拦截请求,返回本地Mock数据(如异常响应)。

  5. 前后端联调​:捕获前端发送的实际数据,对比是否与后端预期一致。

测试中的典型操作:

  • 抓包过滤​:通过Filters聚焦测试目标(如指定域名)。
  • 篡改请求​:断点修改参数(如删除必填字段)测试容错性。
  • 重放请求​:右键Replay多次发送,验证接口幂等性。

示例​:测试支付接口时,修改金额为负数,检查服务端是否拦截非法参数。

6、Postman你是如何使用的?
  1. 构建请求​:设置方法(GET/POST等)、URL、Headers(如Content-Type)、参数(Query/Body)。
  2. 发送验证​:检查状态码(如200)、响应数据(JSON字段)、响应时间。
  3. 自动化测试​:用Tests写JS断言(如pm.test("Status 200", () => pm.response.to.have.status(200));)。
  4. 变量管理​:用环境变量({{base_url}})或脚本动态存储(如pm.environment.set("token", response.token))。
  5. 批量执行​:用Collection RunnerNewman​(CI/CD)运行测试集。

核心​:模拟请求 → 验证结果 → 自动化断言 → 批量测试。

7、你是如何用JMeter进行性能测试的?
  1. 创建测试计划​:添加 ​线程组​(设置并发用户数、循环次数);配置 ​HTTP 请求​(URL、方法、参数、Headers)。

  2. 参数化与动态数据​:使用 ​CSV 文件​ 或 ​随机变量​ 模拟不同用户输入。

  3. 添加监听器​:​查看结果树​(调试用)、聚合报告​(关键指标)、图形结果​(趋势分析)。

  4. 设置断言​:验证响应状态码、内容(如 200 OK 或特定文本)。

  5. 分布式压测(可选)​​:多台机器协同加压(Master-Slave 模式)。

  6. 分析结果​:关注 ​TPS(吞吐量)、响应时间、错误率,优化瓶颈。

核心流程​:模拟并发 → 监控性能 → 分析报告 → 优化系统。

8、缺陷跟踪的一般流程是什么?
  1. 提交缺陷​:测试人员发现 Bug,记录详细信息(复现步骤、环境、截图/日志)。
  2. 分配缺陷​:负责人(如开发经理)确认并指派给对应开发人员。
  3. 修复缺陷​:开发人员复现并修复,更新状态为“已修复”。
  4. 回归测试​:测试人员验证修复结果,确认通过则关闭,否则重新激活。
  5. 闭环管理​:统计缺陷数据(如修复率、周期),优化流程。

核心​:​发现 → 记录 → 修复 → 验证 → 改进

9、你是如何使用XMind进行管理测试用例的?
  1. 层级设计​:中心主题​:产品/模块名称(如“登录功能”);分支主题​:按功能拆分(如“账号输入”、“密码校验”);​子用例​:具体测试点(如“输入空密码提示错误”)。

  2. 标记分类​:用 ​图标/颜色​ 区分优先级(P0/P1/P2)、状态(通过/失败/阻塞)。

  3. 附加信息​:​备注​:补充前置条件、测试数据。​附件​:链接需求文档或截图。

  4. 协作与导出​:共享脑图给团队评审,导出为Excel/PDF执行。

核心​:​结构化梳理 → 可视化标记 → 团队同步

10、pytest/unittest框架能做些什么?

1、核心功能

  • 用例编写​:结构化组织测试函数/类(test_*.py)。
  • 断言验证​:assert(pytest)或 self.assertEqual()(unittest)。
  • 测试发现​:自动识别并运行用例(按模块/标记筛选)。

2. 高级能力

  • 夹具(Fixture)​​:pytest 的 @pytest.fixture 管理预处理(如数据库连接)。
  • 参数化​:@pytest.mark.parametrize 批量测试多组数据。
  • Mock/Stub​:unittest.mock 模拟外部依赖(如API调用)。

3. 扩展支持

  • 报告生成​:HTML/Allure 报告(pytest)。
  • 插件生态​:pytest 支持覆盖率(pytest-cov)、并发(pytest-xdist)。

适用场景​:

  • 单元测试​(函数/类验证)
  • 接口/集成测试​(结合 requests 等库)
  • web UI自动化​(搭配 selenium

核心价值​:​高效编写 + 灵活扩展 + 自动化执行

11、Mysql增删改查的的命令是怎么样的?

1. 基本操作

  • 增(INSERT)​​:插入数据
    INSERT INTO 表名 (字段1, 字段2) VALUES ('值1', '值2');
  • 删(DELETE)​​:删除数据
    DELETE FROM 表名 WHERE 条件;  -- 例如:WHERE id = 1;
  • 改(UPDATE)​​:更新数据
    UPDATE 表名 SET 字段1='新值' WHERE 条件;  -- 例如:WHERE name = '张三';
  • 查(SELECT)​​:查询数据
    SELECT * FROM 表名 WHERE 条件;  -- 例如:WHERE age > 18;

2. 组合查询

  • 多条件查询(AND/OR)​
    SELECT * FROM 表名 WHERE 条件1 AND 条件2;  -- 例如:WHERE age > 18 AND gender = '男';
  • 模糊查询(LIKE)​
    SELECT * FROM 表名 WHERE 字段 LIKE '%关键字%';  -- 例如:WHERE name LIKE '%张%';
  • 排序(ORDER BY)​
    SELECT * FROM 表名 ORDER BY 字段 ASC/DESC;  -- 例如:ORDER BY age DESC(降序);
  • 分组统计(GROUP BY + 聚合函数)​
    SELECT 字段, COUNT(*) FROM 表名 GROUP BY 字段;  -- 例如:GROUP BY city;
  • 分页(LIMIT)​
    SELECT * FROM 表名 LIMIT 偏移量, 条数;  -- 例如:LIMIT 0, 10(第1页10条);

3. 多表联查(JOIN)​

  • 内连接(INNER JOIN)​
    SELECT * FROM 表1 INNER JOIN 表2 ON 表1.字段 = 表2.字段;
  • 左连接(LEFT JOIN)​
    SELECT * FROM 表1 LEFT JOIN 表2 ON 表1.字段 = 表2.字段;

核心用途​:

  • 增删改查(CRUD)​​ → 数据管理
  • 组合查询​ → 复杂数据分析
12、Linux系统基本操作有哪些?你是如何在liunx上搭建测试环境的?

1. 基础命令

  • 文件操作
    ls           # 查看目录  
    cd /path     # 切换目录  
    mkdir dir    # 创建文件夹  
    rm -rf dir   # 删除文件夹(强制)  
    cp src dst   # 复制文件  
    mv src dst   # 移动/重命名  
  • 权限管理
    chmod 755 file  # 修改权限(rwx)  
    chown user:group file  # 修改所有者  
  • 进程/网络
    ps -ef       # 查看进程  
    kill -9 PID  # 强制终止进程  
    ifconfig     # 查看IP(或 ip a)  
    netstat -tuln # 查看端口  
    
  • 内存​ → free -h / top
  • CPU​ → top / vmstat
  • 磁盘​ → df -h / iostat
  • 网络​ → nload / iftop
  • 查看日志文件

    # 实时查看日志(Ctrl+C 退出)  
    tail -f /var/log/syslog          # Ubuntu/Debian 系统日志  
    tail -f /var/log/messages        # CentOS/RHEL 系统日志  
    
    # 查看最近 N 行日志  
    tail -n 100 /var/log/nginx/error.log  # 查看 Nginx 错误日志最后 100 行  
    
    # 关键词过滤日志  
    grep "error" /var/log/syslog      # 筛选含 "error" 的日志  
    journalctl -u nginx --since "1 hour ago"  # 查看 Nginx 最近 1 小时日志(systemd 系统)  

2. 搭建测试环境

  • 安装依赖
    apt-get update && apt-get install -y python3 git docker  # Ubuntu/Debian  
    yum install -y python3 git docker      # CentOS/RHEL  
  • 部署服务
    • 数据库(MySQL)​
      docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql:5.7  
    • Web服务(Nginx)​
      apt-get install -y nginx && systemctl start nginx  
  • 运行测试
    git clone https://github.com/test-project.git  
    cd test-project && pytest tests/  
  • 核心流程​:
    装依赖 → 启服务 → 跑测试
    (结合Docker可快速隔离环境)

13、结合你最近做的项目,说说看你是怎么设计测试用例的?

测试用例设计方法(结合真实项目)​

1. 需求分析

  • 明确测试范围​:根据PRD/用户故事拆解功能模块(如电商项目的「支付功能」)。
  • 识别边界场景​:例如支付金额为0、超限、并发支付等。

2. 用例设计策略

  • 功能测试​:
    • 正常流程​:支付成功(金额正确+库存充足)。
    • 异常流程​:支付失败(余额不足、网络超时)。
  • 接口测试​(Postman):
    • 参数校验:必填字段缺失、非法字符(如金额为负数)。
    • 幂等性:重复支付仅扣款一次。
  • 性能测试​(JMeter):
    • 模拟100用户并发支付,检查响应时间≤1秒。

3. 数据驱动

  • 参数化​:用CSV文件管理测试数据(如不同支付方式:微信/支付宝/银行卡)。
  • 组合覆盖​:
    支付方式 × 金额范围 × 用户类型(新/老)  

4. 非功能覆盖

  • 兼容性​:多端测试(H5/App/小程序)。
  • 安全测试​:支付接口防SQL注入、XSS。

5. 用例管理

  • XMind脑图​:结构化梳理用例层级(模块→子功能→场景)。
  • Excel/TestLink​:标注优先级(P0核心功能优先执行)。

实际案例​:

  • 优惠券使用​:设计组合用例(过期券/无效券/叠加使用),发现「券叠加计算Bug」。

核心原则​:
覆盖核心流程 → 挖掘边界场景 → 数据驱动验证 → 分层覆盖(功能/性能/安全)

猜你喜欢

  • 主角所处的村庄该怎么写—村庄环境描写模板(网络小说适用)

    ​村庄环境描写模板(网络小说适用)​​​1. 先定基调(1句话确立风格)​​ ​玄幻​: "黑石村常年笼罩在灰雾里,村口那棵枯死的槐树上挂满褪色的符纸,风一吹便簌簌作响,像亡魂的絮语。" ​种田​: "青溪村依山傍水,稻田如棋盘

  • 软件测试2025模拟面试

    1、请进行自我介绍背景​: 3年软件测试经验,熟悉功能、接口、自动化测试,主导过电商/金融项目全流程测试。 技术栈:Python + Selenium/Requests(UI/接口自动化)、JMeter(性能)、Postman/Charles(抓包调试)。​核心能力​: ​用例

  • 耳鸣会不会和耳朵堵了,耳屎太多有关联?

    会的,而且关联非常密切!这是一个非常常见和直接的关联。 简单来说:​耳屎过多(医学上称“耵聍栓塞”)是导致耳鸣最常见的原因之一,而且它引起的耳鸣,是少数几种可以通过简单处理彻底消除的类型之一。​​ 详细解释

  • 太操心的人是不是寿命都不长?

    这是一个非常深刻且普遍的问题。答案是:​不一定,但长期、过度的操心(慢性压力)确实会显著增加多种疾病的风险,从而可能缩短寿命。​​ 我们可以把它看作一个概率和健康管理的问题。关键在于“操心”的程度、持

  • 一般网络小说写周围的环境怎么写?

    在写网络小说时,环境描写是烘托氛围、塑造世界观的重要手段。以下是简洁实用的技巧和示例:​1. 自然环境(最常用)​​ ​要素​:天气、光线、植被、地形 ​示例​: "血月悬空,枯树林在风中发出呜咽般的声响,腐叶下的泥沼咕

  • 鱼罐头真的没有防腐剂吗?我想买鱼罐头,但还是担心不良企业向罐头里添加防腐剂等科技狠活

    这是一个非常好的问题,也是很多消费者共同的顾虑。您的担忧很常见,但好消息是:在这个问题上,您可以放宽心。 ​正规、合法生产的鱼罐头,确实可以做到不添加任何防腐剂。​​核心原理:商业无菌 + 密封 罐头的核心技术,是一种

  • Bitwarden我可以安装在自己的云服务器上,然后用手机电脑都可以访问,对吧

    完全正确!这正是Bitwarden最强大、最核心的亮点之一!​​ 您的想法非常棒,也是很多高级用户和安全专家的选择。这被称为 ​​“自托管”​​ 部署模式,它为您提供了终极的数据控制权。 自托管(Self-Hosted)是什

  • 如何买到真正“零添加”的安心鱼罐头?

    虽然可以无防腐剂,但企业为了风味、口感、品相,可能会添加其他物质。如果您想追求最纯粹的,请按以下步骤挑选:1、​看产品类型​:选择 ​​“水浸”​​ 或 ​​“矿泉水浸”​​ 的,添加剂通常最少。

  • Bitwarden我要自托管,详细说说怎么操作及相关的命令,以及手机电脑连接使用教程

    好的,为您提供一份详细的、基于 ​Vaultwarden​ 的 Bitwarden 自托管教程。Vaultwarden 是当前最流行、最轻量的自托管方案,完美兼容官方客户端。第一部分:服务器端部署(在您的云服务器上操作)前提条件 一台云服务器​(如

  • 自己组装一个台式电脑,到底难不难?

    自己组装一台台式电脑,就像在玩乐高积木,但多了一份对知识的尊重和对成功的期待。​说难不难,说易不易,关键在“准备”二字。​​对于新手来说,它是一场有趣的挑战,而不是一项可怕的任务。核心可以概括为:​​&ldq