以下内容来自 面试鸭,个人汇总笔记:
目录
[1. 软件生命周期各阶段有哪些?常见软件生命周期模型有哪些?](#1. 软件生命周期各阶段有哪些?常见软件生命周期模型有哪些?)
[2. 软件测试与软件开发之间的关系是什么?](#2. 软件测试与软件开发之间的关系是什么?)
[3. 测试计划编写的六大要素是什么?](#3. 测试计划编写的六大要素是什么?)
[4. 列举所知道的软件测试种类,并至少详细说明五种?](#4. 列举所知道的软件测试种类,并至少详细说明五种?)
[5. 黑盒、白盒、灰盒测试的区别和联系是什么?](#5. 黑盒、白盒、灰盒测试的区别和联系是什么?)
[6. 黑盒测试常用的测试方法有哪些?举几个具体的例子](#6. 黑盒测试常用的测试方法有哪些?举几个具体的例子)
[7. 白盒测试常用的测试方法有哪些?举几个具体的例子](#7. 白盒测试常用的测试方法有哪些?举几个具体的例子)
[8. 简述黑盒测试和白盒测试的主要优缺点?](#8. 简述黑盒测试和白盒测试的主要优缺点?)
[9. 在没有产品说明书和需求文档的情况下,如何进行黑盒测试?](#9. 在没有产品说明书和需求文档的情况下,如何进行黑盒测试?)
[10. Beta测试和Alpha测试的主要区别是什么?](#10. Beta测试和Alpha测试的主要区别是什么?)
[11. 测试结束的标准是什么?](#11. 测试结束的标准是什么?)
[12. 什么是冒烟测试?什么情况下进行冒烟测试?](#12. 什么是冒烟测试?什么情况下进行冒烟测试?)
[13. 自动化测试中的 PO 模式是什么?](#13. 自动化测试中的 PO 模式是什么?)
[14. 测试用例的基本要素包括哪些?](#14. 测试用例的基本要素包括哪些?)
[15. 高质量的缺陷记录应该具备哪些内容?提交Bug时需要注意哪些问题?](#15. 高质量的缺陷记录应该具备哪些内容?提交Bug时需要注意哪些问题?)
[16. Bug的管理流程是什么?Bug的生命周期有哪些?](#16. Bug的管理流程是什么?Bug的生命周期有哪些?)
[17. Bug的级别有哪些?如何判断Bug的级别?](#17. Bug的级别有哪些?如何判断Bug的级别?)
[18. 在测试中,如何判断是前端Bug还是后端Bug?](#18. 在测试中,如何判断是前端Bug还是后端Bug?)
[21. 测试中可能遇到哪些风险?如何解决?](#21. 测试中可能遇到哪些风险?如何解决?)
[22. 白盒测试的具体方法有哪些?如何实施?](#22. 白盒测试的具体方法有哪些?如何实施?)
[23. 软件测试中,BDD和TDD分别是什么?](#23. 软件测试中,BDD和TDD分别是什么?)
[24. 什么是TPS、QPS?](#24. 什么是TPS、QPS?)
1. 软件生命周期各阶段有哪些?常见软件生命周期模型有哪些?
1)需求分析阶段:
2)设计阶段
3)编码阶段:
4)测试阶段
5)安装和部署阶段
6)维护阶段
7)退役阶段
1)瀑布模型:2)螺旋模型:
3)迭代模型:
4)敏捷模型;
5)V模型:
6)W模型:
2. 软件测试与软件开发之间的关系是什么?
软件测试与软件开发之间的关系式相互依赖,相辅相成的,开发负责"做",测试负责"查"。两个环节协同合作共同保证软件产品的质量。
开发人员需要了解测试的需求,写出可测试的代码;测试人员也需要理解开发的逻辑,设计出有效的测试用例。
3. 测试计划编写的六大要素是什么?
1)测试目标
2)测试范围
3)测试策略
4)资源需求
5)时间安排
6)风险管理与应对策略
4. 列举所知道的软件测试种类,并至少详细说明五种?
1)单元测试:最小粒度的测试,主要检查单个模块或函数是否按照预期工作;
2)集成测试:不同模块组合在一起形成子系统后进行的测试,验证模块之间的接口和交互是否工作正常;
3)系统测试:在整个系统集成完成后进行的全面测试;
4)验收测试:由最终用户或客户进行的测试,确认软件产品是否符合用户的需求和业务场景;
5)回归测试:在对软件进行修改或改进后,验证新版本是否引入新的错误,保证之前修复的问题不会再出现。
5. 黑盒、白盒、灰盒测试的区别和联系是什么?
黑盒测试:针对产品的输入输出进行测试,不关注内部的实现细节,目标是验证系统功能是否与规格要求的一致,常见测试手法包括等价类划分、边界值分析等;
白盒测试:基于系统内部的逻辑结构来进行测试,目的在于代码的覆盖,包括分支覆盖、路径覆盖、条件覆盖等,确保代码的执行路径没有隐藏的错误;
灰盒测试:介于黑盒测试和白盒测试之间的一种测试方法,测试者拥有部分内部结构信息,可以结合两者优点,在提高测试覆盖率的同时又不完全依赖于内部实现。
6. 黑盒测试常用的测试方法有哪些?举几个具体的例子
1)等价类划分:将输入数据划分为不同的等价类,选取代表性的数据进行测试;
2)边界值分析:针对输入或输出范围的边界进行测试;
3)决策表测试:使用决策表设计测试用例,确保覆盖所有可能的情况和组合;
4)因果图:处理输入条件和输出结果之间的依赖关系,再转化为决策表生成测试用例;
5)状态迁移测试:测试不同状态之间的转移情况,使用户带有状态机的系统。
7. 白盒测试常用的测试方法有哪些?举几个具体的例子
1)路径覆盖:需要尝试覆盖所有可能的路径(if/else)
2)语句覆盖:强调执行代码中的每条语句至少一次;
3)分支覆盖:关注条件语句中的每一个分支(true/false)都被执行到;
4)条件覆盖:不仅要考虑条件语句的整体结果,还要独立考虑每个布尔表达式的true和false。
8. 简述黑盒测试和白盒测试的主要优缺点?
1)黑盒测试
优点:不需要了解内部实现细节和代码结构,测试不同阶段可以由不同人员完成,降低测试难度;测试用例基于软件需求和功能设计,可以很好从用户角度验证系统功能是否满足预期。
缺点:不了解内部结构,可能难以覆盖所有代码路径,存在测试盲点;生成高覆盖率的测试用例较为困难,需要全面的需求文档和功能说明。
2)白盒测试
优点:了解代码的内部结构,能发现隐藏在代码内部的缺陷,包括逻辑错误,边界情况,以及不常见的特殊输入条件。
缺点:需要测试者具备较高的编程能力,学习成本高;一旦代码发生变化,测试用例需要经常更新,维护代价大。
9. 在没有产品说明书和需求文档的情况下,如何进行黑盒测试?
1)基于直觉和尝试
2)探索性测试
3)实际使用场景分析
4)项目团队沟通
5)历史数据
10. Beta测试和Alpha测试的主要区别是什么?
Alpha测试通常在开发环境(即内部环境)中进行,主要由内部员工,开发团队和少量受信任的用户进行测试,如内测;
Beta测试则是在实际用户环境中测试,通常由外部的真实用户进行测试,如公测。
11. 测试结束的标准是什么?
1)所有计划内的测试用例都执行完毕;
2)所有严重和优先级高的漏洞已进行修复并通过了回归测试;
3)质量达标,如Bug率,性能指标等;
4)代码的测试覆盖率达到要求;
5)时间和资源已经消耗很多,进一步测试投入性价比不高;
6)风险评估后未发现会对业务功能产生重大影响的问题;
7)项目经理或产品主导方给予正式的发布标准。
12. 什么是冒烟测试?什么情况下进行冒烟测试?
冒烟测试用于确认软件的关键功能是否能正常工作,快速检查系统最基本、最关键的功能能否如预期运行,并判断软件是否可以进行更深入的测试。
通常在以下情况下进行:
1)新版本发布后:初步验证新版本的稳定性和基本功嗯的正确性;
2)大规模代码更改后确保这些更改没有破坏关键功能;
3)集成测试前:确认系统在集成之前的核心功能正常工作,使接下来的测试可以顺利进行。
13. 自动化测试中的 PO 模式是什么?
全称 Page Object,是一个设计模式,用于在自动化测试中将页面元素和操作抽象为对象,让测试代码更加清晰、可维护和可重用。核心思想是将每一个页面或页面的一部分封装成一个类,该类包含页面元素和可以对这些元素执行的操作。
14. 测试用例的基本要素包括哪些?
1)测试用例编号:唯一标识;
2)测试用例名称:简洁明了描述测试用例的目标;
3)测试目的:明确测试用例要验证什么;
4)前置条件:描述执行测试用例前必须满足的条件和环境;
5)测试步骤:确保测试人员按照步骤复现测试;
6)预期结果:执行测试后期望结果是什么;
7)实际结果:执行测试后实际结果是什么;
8)备注:补充说明注意事项。
15. 高质量的缺陷记录应该具备哪些内容?提交Bug时需要注意哪些问题?
1)缺陷编号:唯一标识;
2)缺陷标题:简明扼要准确描述缺陷;
3)缺陷描述:详细描述缺陷情况,包括出现的问题,期望结果,实际结果等;
4)重现步骤:清晰详细列出出现缺陷的每一步,确保任何人都能重现该缺陷;
5)环境信息:操作系统,浏览器版本,硬件配置等辅助信息,帮助开发人员理解定位问题;
6)截图和日志:提供必要截图、日志文件等辅助信息,帮助开发人员理解定位问题;
7)优先级和严重性:指明该缺陷的紧急程度和对系统的影响程度。
1)信息完整性:填写所有必要信息,如环境信息、重现步骤等;2)准确性和清晰度:描述问题清晰准确,避免语焉不详;
3)关联性:若该缺陷与其他任务相关,应当注明,便于综合管理解决问题;
4)养成良好习惯:遵从标准模版记录Bug,保持一致性。
16. Bug的管理流程是什么?Bug的生命周期有哪些?
1)报告Bug:由测试人员或用户发现并提交Bug,记录Bug的描述,重现步骤,预期结果,实际结果等;
2)审核Bug:项目经理或开发团队进行评审,确认Bug是否有效,并指派优先级;
3)修复Bug:开发人员针对Bug进行修复;
4)验证Bug:测试人员重新测试以确认Bug是否被修复;
5)关闭Bug:如果Bug已被修复且验证通过,则将状态改为关闭。
1)新建 New:刚发现并记录下来的Bug;2)已确认 Confirmed:被审核确认的Bug;
3)已指派 Assigned:Bug被分配给某个开发人员或团队进行修复;
4)进行中 In Progress:正在修复Bug;
5)已修复 Resolved:已经修复了Bug;
6)已验证 Verified:测试人员确认Bug已修复并验证通过;
7)已关闭 Closed:Bug彻底解决。
17. Bug的级别有哪些?如何判断Bug的级别?
1)低级(Low):Bug对系统功能几乎没有影响,不会显著影响用户体验,如错别字,图标问题等;
2)中级(Medium):Bug对某些功能有一定影响,导致不可用,用户可能会注意到,但不影响主要功能;
3)高级(High):Bug对主功能造成较大影响,用户体验严重受损,导致部分用户流失,如支付流程失败;
4)紧急(Critical):Bug对整个系统有重大影响,导致系统崩溃或主功能瘫痪,影响全体用户使用,必须立即修复。
18. 在测试中,如何判断是前端Bug还是后端Bug?
1)查看Bug表现:首先观察Bug发生的位置和表现形式,如果在页面展示,用户交互等方面出现问题,通常是前端Bug,如果是数据处理,数据传输,业务逻辑等方面出现问题,通常是后端Bug;
2)检查日志输出:日志信息可以帮助我们快速定位问题根源,如果前端控制台有错误,通常是前端Bug,如果是服务器日志有异常,通常是后端Bug;
3)分布调试:前后端分开调试,通过接口工具(如Postman)直接请求后端接口,如果接口正常返回,则问题在前端,如果接口返回异常或错误,则问题在后端;
4)版本对比:如果系统有多个版本环境(如开发环境、测试环境、生产环境),对比不同环境下的表现,如果只有某个版本出问题,则可能与版本更新有关,是单侧变动引入的Bug;
5)使用断言:针对特定的Bug编写断言,分别测试前后端各自的功能模块,验证独立模块的工作情况,逐步排查问题。
19.测试报告通常包括哪些内容?
1)测试概述:测试的目的,范围,目标,背景信息等;
2)测试环境:测试使用的硬件、软件、网络环境及其配置;
3)测试方法:单元测试、集成测试、系统测试、回归测试等;
4)测试案例:所有执行的测试用例及其详细信息,包括预期结果和实际结果;
5)缺陷报告:详细记录测试过程中发现的所有缺陷,包括缺陷的描述,类别,严重程度等;
6)测试结果分析:说明测试是否达到了预期目标,有哪些问题需要解决;
7)结论与建议;给出最终结论,并提出建议或解决方案。
- 有哪些生成自动化测试报告的方式?
1)测试框架自带的报告功能:如 Jmeter 中的 JUnit,提供内置报告生成功能;
2)第三方报告生成工具
3)自定义脚本
21. 测试中可能遇到哪些风险?如何解决?
1)需求变更
2)时间压力
3)环境问题
4)人员问题
5)工具和技术问题
6)沟通问题
22. 白盒测试的具体方法有哪些?如何实施?
1)语句覆盖:测试每一条语句至少被执行一次;
2)分支覆盖:每个条件分支(如 if-else 语句)至少被执行一次;
3)路径覆盖:测试每一条独立的路径,确保所有可能的逻辑路径都被执行;
4)条件覆盖:确保每个条件表达式的所有可能布尔值都至少被一次覆盖;
5)多条件覆盖:确保每种组合的条件表达式的结果都至少被一次覆盖;
6)路径覆盖与路径测试:通过遍历代码所有独立路径,确保覆盖所有可能的执行路径。
23. 软件测试中,BDD和TDD分别是什么?
1)BDD(Behavior-Driven Development,行为驱动开发):以行为为中心的开发方法,不仅关注代码层面,还关注系统的行为和用户需求。通常使用自然语言来描述测试用例,旨在通过明确描述用户行为来推动开发和测试活动。
2)TDD(Test-Driven Development,测试驱动开发):以测试为中心的开发方法,开发者首先编写失败的测试用例,然后编写刚好能通过测试的最少量的代码,接着优化和重构代码,确保所有测试通过,强调的是测试先行,代码随后。
24. 什么是TPS、QPS?
1)TPS(Transaction Per Second):系统每秒能够处理的事务数量;
2)QPS(Queries Per Second):系统每秒能够处理的查询数量。