软件测试基础面试问答(二)
1、什么是功能测试?能举个例子吗?
功能测试是对软件的每个功能进行验证,确保其行为与需求规格一致,其主要目的是发现与需求不符合的缺陷和错误,例如在用户注册功能中测试的输入有效数据和无效数据,确保应用程序按预期反应。功能测试一般采用黑盒测试,测试方法有:等价类划分、边界值分析、决策表测试,因果图法,判定表分析法等。
2、功能测试与性能测试有什么明显的区别?
- 功能测试:确保软件“做对的事”(功能正确性)。
- 性能测试:确保软件“把事情做好”(效率、稳定性)
维度 | 功能测试 | 性能测试 | |
测试目标不同 | 核心目标 | 验证软件功能是否按需求正常工作。 | 验证软件在特定条件下的性能表现(如速度、稳定性)。 |
典型问题 | “功能是否实现?” (如登录是否成功) | “功能是否足够快/稳定?” (如1000用户同时登录是 | |
关注点不同 | 验证内容 | -输入输出的正确性 | -响应时间 |
-业务流程是否符合预期 | -吞吐量(TPS) | ||
-用户界面交互 | -资源占用(CPU/内存) | ||
-系统稳定性(如高负载下是否崩溃) | |||
测试场景 | -正常流程(如成功支付) | -负载测试(模拟正常用户量) | |
-异常流程(如错误密码) | -压力测试(极限用户量) | ||
-耐久测试(长时间运行) | |||
测试方法不同 | 测试类型 | 黑盒测试为主(无需了解代码) | 灰盒或白盒测试(需监控系统内部资源) |
执行方式 | 手动或自动化(如Selenium) | 通常需自动化工具(如JMeter) | |
数据需求 | 少量测试数据(覆盖功能场景即可) | 大量模拟数据(如生成100万用户请求) | |
工具与技术差异 | 常用工具 | - Selenium | - JMeter |
- Cypress | - LoadRunner | ||
- Postman(API) | - Gatling | ||
指标衡量 | -通过/失败(功能是否通过) | -响应时间(如≤2秒) | |
-错误率(如<0.1%) | |||
实际案例对比 | 测试内容 | -用户能否成功添加商品到购物车 | - 1000用户同时支付时,服务器响应时间是否≤3秒 |
-支付流程是否跳转正确 | -数据库在高并发下是否死锁 | ||
结果分析差异 | 输出结果 | -缺陷报告(如“登录按钮无响应”) | -性能报告(如“CPU使用率峰值90%”) |
优化方向 | -修复代码逻辑或UI交互 | -优化数据库查询、缓存、服务器配置 |
3、功能测试中,如果功能实现与需求有偏差的情况下怎么办?
- 首先明确偏差的类型和严重程度,去回溯需求,查看当前的功能实现是否是因为需求变动发生改变;
- 如果不是需求发生变动,则需要复现问题并记录,核对需求,与产品经理/BA确认:明确需求原始意图,与开发团队讨论:确认是缺陷还是设计变更
- 修正:
- 开发错误:根据讨论结果,提Bug,按流程做修改,指派给开发人员修复。
- 需求文档错误:发起需求变更流程(如更新PRD文档并通知所有干系人)。
- 隐性需求缺失:发起需求补充评审,评估是否需要新增功能或优化。
- 测试用例错误:修正测试用例并重新执行测试。
4、黑盒测试是什么?有什么具体的场景?
黑盒测试是一种软件测试方法,测试人员在不了解系统内部代码、结构和实现细节的情况下,仅基于输入和输出来验证软件功能是否符合需求。
黑盒测试的常见类型:
- 功能测试(Functional Testing)验证软件功能是否符合需求(如登录、支付、搜索等)。示例:测试电商网站的“加入购物车”功能是否正常。
黑盒测试的常用技术:
- 等价类划分(Equivalence Partitioning)将输入数据分为有效类和无效类,减少测试用例数量。示例:测试“年龄输入框(18-60岁)”:有效类:20(合法年龄)无效类:10(太小)、70(太大)
- 边界值分析(Boundary Value Analysis)测试输入范围的边界值(如最小值、最大值、临界值)。示例:测试“密码长度(6-12位)”:边界值:5位(无效)、6位(有效)、12位(有效)、13位(无效)
- 决策表测试(Decision Table Testing)适用于多条件组合的业务规则测试。示例:电商优惠券规则(满100减20,仅限VIP用户):90否不减免150是减免20
- 状态转换测试(State Transition Testing)测试系统在不同状态间的转换(如登录状态→注销状态)。示例:ATM机“插卡→输入密码→取款→退卡”流程测试。
- 错误推测法(Error Guessing)基于经验猜测可能出错的场景(如输入特殊字符、空提交等)。示例:在用户名输入框中输入admin'--(测试SQL注入漏洞)。
黑盒测试工具:
- 功能测试:Selenium、Cypress、Katalon Studio
- API测试:Postman、SoapUI
- 兼容性测试:BrowserStack、Sauce Labs
- 自动化测试框架:Robot Framework、TestNG
实际应用场景:
- 电商网站:测试购物车、支付流程、优惠券计算是否正常。
- 银行系统:验证转账、查询余额等关键功能是否符合业务规则。
- 移动App:检查注册、登录、推送通知等用户体验是否流畅。
5、黑盒测试测试输入时没有得到输出,请问原因是什么?怎么排除?
原因:输入未被正确处理, 后端未返回响应,网络或环境问题,安全策略拦截
排除:确认输入数据,观察网络请求,模拟接口调用,检查依赖服务,对比其他输入
问题类型 | 解决方案 |
前端未发请求 | 修复JS代码,确保事件绑定正确;添加输入校验提示。 |
接口无响应 | 后端补充异常处理,确保所有分支返回响应(如{ "code": 500, "error": "描述" })。 |
数据无结果 | 明确返回空数据提示(如HTTP 200 + { "data": null })。 |
安全拦截 | 设计友好的拦截提示(如“输入包含非法字符”)。 |
环境问题 | 重启服务、修复网络配置或联系运维。 |
整理面试过程中的测试问答,常看常新,多多学习!有些问题是从其他人那里转载而来,会在文章下面注明出处,希望大家多多支持~~