先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
正文
分析人员
设计人员
开发人员
- 软件测试组
测试经理
测试人员
- 配置管理组
配置经理
CMO(配置管理员)
研发流程
- 瀑布模型
应用的最为广泛的一种模型,也是最容易理解和掌握的模型,然而它的缺陷也是显而易见的。
- 螺旋模型
综合了基本的瀑布式模型和演化/渐增原型方法。
- RUP流程
所有工作流在各个阶段都有体现。
- IPD流程
从整个产品角度出发,不仅仅针对研发。
- 测试阶段怎么划分?
答:
-
测试计划阶段
-
测试设计阶段
-
测试实施阶段
-
测试执行阶段
-
什么是UT,IT,ST?它们有什么区别?
答:
UT:单元测试
IT:集成测试
ST:系统测试
区别:
测试方法 | 考察范围 | 评估标准 | |
单元测试 | 控制流测法 数据流测法 排错测法 分域测法 | 单元内部的数据 结构、逻辑控制 、异常处理等 | 逻辑覆盖率 |
集成测试 | 自顶向下增至测试方法 自底向上增至测试方法 混合增至测试方法 | 接口与接口数据 传递关系, 模块组合后的 整体功能 | 接口覆盖率 |
系统测试 | 恢复测试方法 安全测试方法 强度测试方法 性能测试方法 容量测试方法 正确性测试方法 可靠性测试方法 兼容性测试方法 | 这个系统对需 求的符合度 | 测试用例对需求 规格的覆盖率 |
- 什么是回归测试?为什么要回归测试?回归测试的流程是什么?回归测试的测试策略有哪些?
答:
回归测试是指软件系统被修改或扩充(如系统功能增强或升级)后重新进行的测试,是为了保证对软件所做的修改没有引入新的错误而重新进行的测试。
回归测试目的是验证缺陷得到了正确的修复,同时对系统的变更没有影响以前的功能。
流程:
- 在测试策略制定阶段,制定回归测试策略
- 确定需要回归测试的版本
- 测试版本发布后,按照回归测试策略来执行回归测试
- 回归测试通过,关闭缺陷跟踪单
- 回归测试不通过,缺陷跟踪单返回给开发人员,开发人员重新修改BUG.再次提交给测试人员回归测试
测试策略:
-
完全重复测试:重新执行前期设计的用例,来确认问题修改的真确性和修改的扩散局部影响性
-
选择性重复测试:
-
覆盖修改法:针对被修改的部分,选取或重新构造测试用例验证没有错误再次发生的选择方法
-
周边影响法:该方法包括覆盖修改法,还要分析修改后对扩散的影响
-
指标达成法:先确定一个达成的指标,基于这种要求选择一个最小的测试用例集合
-
画V&V模型?
答:
- 软件质量的定义是什么?影响软件质量的因素是哪些?ISO 2000的八大原则是什么?
答:
定义:一个实体的所有特性,基于这些特性可以满足明显的或隐含的需求。而质量就是实体基于这些特性满足需求的程度
因素:
流程、技术、组织。
流程:一组活动(活动是否都是必须的;活动角色之间的关系)
过程:一组将输入转化为输出的相关联或相互作用的活动。
原则;
-
以顾客为中心:组织依存于其顾客,因此,组织应理解顾客当前的和未来的需求,满足顾客要求并争取赶超顾客期望。
-
领导作用:领导者将本组织的宗旨.方向和内部环境编统一起来,并创造使员工能够充参与实现组织目标的环境。
-
全员参与:各级人员是组织之本,只有他们的充分参与,才能使他们的才干为组织带来最大的收益。
-
过程方法: 将相关的资源和活动作为过程进行管理,可以更高效地得到期望的结果。
-
管理系统方法:针对设定的目标,识别.理解并管理一个由相互关联的过程的过程所组成的体系,有助于提高组织的有效性和效率。
-
持续改进:持续改进是组织的一个永恒的目标。
-
基于事实的决策方法:对数据和信息的逻辑分析或直觉判断是有效决策的基础。
-
互利的供方关系:通过互利的关系,增强组织及其供方创造价值的能力。其中与软件产品产品优其相关有:(一.三.六.七项)
-
CMM/CMMI是什么?它的等级怎么划分?有什么目的?有什么作用?
答:
(1)能力成熟度模型;一种比较流行的软件质量管理体系
(2)划分:初始级;可重复级;已定义级;已管理级;优化级;
(3)目的:评估软件承包商能力
协助软件组织改进过程,提高过程能力
(4)作用:业界的实施标准
业界的一种交流语言
是中国企业获取国际订单的门槛
是向下采购的保障
是降低软件声场风险的有力手段
- 描述软件质量模型中的内容?
答:
功能性:
当软件在指定的条件下使用时,软件产品提供满足明确和隐含需求的功能的能力
- 适合性 Suitability—软件产品为指定的任务和用户目标提供一组合适的功能的能力。
- 准确性 Accuracy—软件产品提供具有所需精确度的正确或相符的结果或效果的能力。
- 互操作性 interoperability—软件产品与一个或更多的规定系统进行交互的能力。
- 保密安全性 security—软件产品保护信息和数据的能力,以使未授权的人员或系统不能阅读或修改这些信息和数据,而不拒绝授权人员或系统对它们的访问。
- 功能性的依从性 functionality compliance—软件产品遵循与功能相关的标准、约定或法规以及类似规定的能力。这些标准要考虑国际标准、国家标准、行业标准、企业内部规范等。
可靠性:
在指定条件下使用时,软件产品维持规定的性能级别的能力
- 成熟性 maturity—软件产品为避免由软件中错误而导致失效的能力。
- 容错性 fault tolerance—在软件出现故障或者违反指定接口的情况下,软件产品维持规定的性能级别的能力。
- 易恢复性 recoverability—在失效发生的情况下,软件产品重建规定的性能级别并恢复受直接影响的数据的能力
- 可靠性的依从性 reliability compliance—软件产品遵循与可靠性相关的标准、约定或法规的能力。
易用性:
在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力
- 易理解性 understandability—软件产品使用户能理解软件是否合适以及如何能将软件用于特定的任务和使用环境的能力。
- 易学性 learnability—软件产品使用户能学习其应用的能力。
- 易操作性 operability—软件产品使用户能操作和控制它的能力。
- 吸引性 attractiveness—软件产品吸引用户的能力
- 易用性的依从性 usability compliance—软件产品遵循与易用性相关的标准、约定、风格指南或法规的能力。这些标准要考虑国际标准、国家标准、行业标准、企业内部规范等,例如企业内部的界面规范。
效率:
在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力
- 时间特性:time behavior—在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间以及吞吐率的能力。即完成用户的某个功能需要的响应时间。
- 资源利用性:resource utilization—在规定条件下,软件产品执行其功能时,使用合适的资源数量和类别的能力。
- 效率依从性:efficiency compliance—软件产品遵循与效率相关的标准或约定的能力。
维护性:
软件产品可被修改的能力。修改可能包括修正、改进软件对环境、需求、和功能规格说明变化的适应
- 易分析性analyzability— 诊断软件产品中缺陷或失效原因的能力。
- 易改变性 changeability—软件产品使指定的修改可以被实现的能力。
- 稳定性 stability—软件产品避免由于软件修改而造成意外结果的能力。
- 易测试性 testability—软件产品使已修改软件能被确认的能力。
- 维护性的依从性 maintainability compliance—软件产品遵循与维护性相关的标准或约定的能力。
可移植性:
软件产品从一种环境迁移到另一种环境可正常使用或满足用户需求的能力
-
适应性adaptability—软件产品无需采用有别于为考虑该软件的目的而准备的活动和手段就可以适应不同的环境的能力。
-
易安装性 installability—软件产品在指定环境中 被安装的能力。
-
共存性 co-existence—软件产品在公共环境中同与其分享公共资源的其它独立软件共存的能力。
-
易替换性 replaceability—软件产品在同样的环境下,替代另一个相同用途的指定软件产品的能力。
-
可移植性的依从性 portability compliance—软件产品遵循与可移植性相关的标准或约定能力。
-
测试的方法有哪些?
答:
白盒测试、黑盒测试、灰盒测试、β测试,α测试、可移植性测试、冒烟测试等
- 什么是白盒测试?
答:
白盒测试是根据被测试程序的内部结构设计测试用例的一类测试,有人也称它为透明盒或者玻璃盒测试,涉及到软件设计的细节。比如单元测试一般采用白盒测试方法,并参考LLD(详细设计)
- 什么是黑盒测试?
答:
黑盒测试又称功能测试、数据驱动测试或者基于规格说明的测试,被测试程序当作黑盒处理,无法了解其内部的构造。比如系统测试一般采用黑盒测试方法,并参考SRS
- 什么是静态测试?
答:
不运行被测试的软件系统,而是采用其他手段和技术对被测试软件进行检测的一种测试技术。例如:代码走读、文档评审、程序分析等都是静态测试的范畴。常用技术有静态分析技术
- 什么是动态测试?
答:
按照预先设计的数据和步骤去运行被测软件系统,从而对被测软件系统进行检测的一种测试技术。常用技术有动态分析技术
- 什么是人工测试?
答:
测试活动(如评审、测试设计、测试执行等)由人来完成,狭义上是指测试执行由人工完成,这是最基本的测试形式
- 什么是自动化测试?
答:
一般是指通过计算机模拟人的测试行为,替代人的测试活动,狭义上是指测试执行由计算机来完成
- 逻辑覆盖关注的内容是哪些?
答:
-
语句覆盖
-
判定覆盖
-
条件覆盖
-
判定—条件覆盖
-
路径覆盖
-
常见的黑盒测试方法有哪些?
答:
-
等价类划分法
-
边界值分析法
-
因果图分析法
-
判定表法
-
正交试验法
-
状态迁移法
-
什么是同行评审?
答:
同行评审:(Peer Review)是一种通过作者的同行来确认缺陷和需要变更区域的检查方法。需要进行同行评审的特定产品在定义项目软件过程的时候被确定并且作为软件开发计划的一部分被安排了进度。根据形式正规的程度分为:
-
- 正规检视
- 技术评审
- 走查
同行评审的对象可以是计划、需求文档、设计图、代码等
- 自动化测试有什么意义?
答:
-
对程序新版本运行前一版本执行的测试,提高回归测试效率
-
可以运行更多更频繁的测试,比如冒烟测试
-
可以执行手工测试困难或不可能做的测试,比如大量的重复操作或者集成测试
-
更好地利用资源,比如测试仪器或者被测对象
-
测试具有一致性和可重复性,即自动化测试的步骤和结果是完全一样的
-
测试的复用性,即自动化测试脚本可以拆分开给其它测试脚本使用
-
可以更快地将软件推向市场,软件发布前进行高效的回归测试,减少软件发布的时间
-
增加软件信任度,通过自动化测试提高了测试效率,可把节约的时间拿出来做更多的测试
-
测试用例的八大要素是什么?
答:
-
测试用例编号
-
测试项目
-
测试标题
-
重要级别
-
预置条件
-
输入
-
操作步骤
-
预期输出
-
什么是缺陷管理?引入的原因有哪些?
答:
是在软件生命周期中获取、管理、沟通任何变更请求的过程。可以确保你的问题如需求或者缺陷被跟踪管理而不丢失
引入原因:
-
开发过程中缺乏有效沟通,或者没有沟通
-
软件负责度越来越高
-
编程中产生的错误
-
需求不断变更
-
项目进度的压力
-
不重视开发文档
-
软件开发工具本身隐藏的问题
-
缺陷的属性有哪些?
答:
-
缺陷发现人;
-
缺陷发现时间;
-
缺陷状态;
-
缺陷严重程度;
-
缺陷所属版本;
-
缺陷修改日期
-
画缺陷管理流程图?
答:
- 如何写缺陷跟踪单?
答:
缺陷跟踪单遵循5W原则;
-
Correct(准确):每个组成部分的描述准确,不会引起误解
-
Clear(清晰):每个组成部分的描述清晰,易于理解
-
Concise(简洁):只包含必不可少的信息,不包括任何多余的内容
-
Complete(完整):包含复现该缺陷的完整步骤和其他本质信息
-
Consistent(一致):按照一致的格式书写全部缺陷报告
-
什么是测试覆盖率?
答:
覆盖率是用来度量测试完整性的一个手段。覆盖率是测试技术有效性的一个度量。
覆盖率=(至少被执行一次的item数)/ item的总数
- 写计算语句覆盖率、判定覆盖率、条件覆盖率、判定-条件覆盖率、路径覆盖率、指令覆盖率等的表达式?
答:
语句覆盖率=(至少被执行一次的语句数量)/(可执行的语句总数)
判定覆盖率=(判定结果被评价的次数)/(判定结果的总数)
条件覆盖率=(条件操作数值至少被评价一次的数量)/(条件操作数值的总数)
分支条件覆盖率=(条件操作数值或判定结果至少被评价一次的数量)/(条件操作数值总数+判定结果总数)
路径覆盖率=(至少被执行到一次的路径数)/(总的路径数)
指令块覆盖=(至少被执行一次的指令块数量)/(系统中指令块总数)
- 什么是系统测试?
答:
系统测试(System Testing)是将已经集成好的软件系统,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行(使用)环境下,对计算机系统进行一系列的测试活动
- 系统测试的目的是什么?
答:
-
通过与系统的需求定义做比较,发现软件与系统定义不符合或与之矛盾的地方;
-
系统测试的测试用例应根据需求分析说明书来设计,并在世界使用环境下运行
-
系统测试的类型有哪些?
答:
功能测试;性能测试;压力测试;容量测试;安全性测试;GUI测试;可用性测试;安装测试;配置测试;异常测试(恢复性测试);备份测试;健壮性测试;文档测试;在线帮助测试;网络测试;稳定性测试
- 系统测试执行的活动有哪些?
答:
-
-
- 系统测试预测试项执行
-
- 系统测试与测试报告写作
- 系统测试用例执行
- 系统测试缺陷记录、修复
- 系统测试日报写作
- 系统测试报告写作
- 系统测试缺陷的回归测试
- 什么是单元测试?目的是什么?
答:
单元测试是对软件基本组成单元进行的测试,如函数(function)或(procedure)或一个类的方法(method)
单元测试的目的在于发现个模块内部可能存在的各种错误,主要是基于白盒测试
-
验证代码是与设计相符合的
-
发现设计和需求中存在的错误
-
发现在编码过程中引入的错误
-
单元测试的关注点?
答:
-
单元接口
-
局部数据结构
-
边界条件
-
独立路径
-
出错处理
-
什么是驱动?什么是桩?
答:
驱动单元(Driver):所测函数的主程序,它接受测试数据,并把数据传送给所测试单元,最后在输出实测结果,当被测试单元能完成相关的功能时,也可以不要驱动单元
桩单元(Stub):用来代替所测试单元调用的子单元
- 单元测试的测试策略是哪些?各有什么优缺点?
答:
- 孤立的测试策略:
优点:该方法是最简单,最容易操作的,可以达到高的结构覆盖率,该方法是纯粹的单元测试
缺点:桩函数和驱动函数工作量很大,效率低.
- 自顶向下的单元测试策略:
优点:可以节省驱动函数的开发工作量,测试效率较高。
缺点:随着被测单元一个一个被加入,测试过程将变得越来越复杂,并且开发和维护的成本将增加。
- 自底向上的单元测试策略:
优点:可以节省桩函数的开发工作量,测试效率较高。
缺点;不是纯粹的单元测试,底层函数的测试质量对上层函数的测试将产生很大影响。
- 什么是集成测试?目的是什么?
答:
集成测试是在单元测试的基础上,将所有函数按照概要设计要求组装成为子系统或系统所进行的测试
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
单元
桩单元(Stub):用来代替所测试单元调用的子单元
- 单元测试的测试策略是哪些?各有什么优缺点?
答:
- 孤立的测试策略:
优点:该方法是最简单,最容易操作的,可以达到高的结构覆盖率,该方法是纯粹的单元测试
缺点:桩函数和驱动函数工作量很大,效率低.
- 自顶向下的单元测试策略:
优点:可以节省驱动函数的开发工作量,测试效率较高。
缺点:随着被测单元一个一个被加入,测试过程将变得越来越复杂,并且开发和维护的成本将增加。
- 自底向上的单元测试策略:
优点:可以节省桩函数的开发工作量,测试效率较高。
缺点;不是纯粹的单元测试,底层函数的测试质量对上层函数的测试将产生很大影响。
- 什么是集成测试?目的是什么?
答:
集成测试是在单元测试的基础上,将所有函数按照概要设计要求组装成为子系统或系统所进行的测试
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-0YmvJB5S-1713610215831)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!