-
前言:【文章末尾给大家留下了大量的福利】
- 什么是测试?
答:
(美国电器和电子工程师协会)IEEE提出的软件工程标准术语,使用人工和自动手段来运行或测试某个系统的过程,目的在于检验它是否满足规定的需求或是弄清预期结果与实 际结果之间的差别。
简单定义:找出软件中的BUG
- 为什么要测试?
答:
在软件开发过程中容易出现缺乏有效沟通,软件复杂,编程错误,需求不断变更,时间的压力,缺乏文档的代码,软件开发工具和人员的自大等原因引发的错误,通过测试能够找出其中的错误,解决错误,从而提高软件的质量
- 软件的生命周期分为哪几个阶段?具体的内容是什么?
答:
计划
工作内容
- 确定软件开发总目标;
- 给出软件的功能、性能、可靠性以及接口等方面的设想;
- 研究完成该项目的可行性,探讨问题解决方案;
- 对可供开发使用的资源、成本、可取得的效益和开发进度作出估计;
- 制定完成开发任务的实施计划。
需求分析
工作内容
对开发的软件进行详细的定义,由需求分析人员和用户共同讨论决定,哪些需求是可以满足的,并且给予确切的描述,写出软件需求说明书SRS (Software Requirement Specification)。
设计
工作内容
设计是软件工程的技术核心,这个阶段需要完成设计说明书
- 概要设计(HLD),在设计阶段把各项需求转换成相应的体系结构,每一部分是功能明确的模块;
- 详细设计(LLD),对每个模块要完成的工作进行具体的描述。
编码
工作内容
把软件设计转换成计算机可以接受的程序,即写成以某个程序设计语言表示的源程序清单,建立数据库。
测试
工作内容
测试是检验软件是否符合客户需求,达到质量要求,一般由独立的小组执行,测试工作分为:
单元测试;集成测试;系统测试
运行和维护
工作内容
这个阶段将软件交付用户投入正式使用,以后便进入维护阶段,可能有多种原因需要对它进行修改,如软件错误、系统软件升级、增强软件功能、提高性能等。
- 研发团队的组织构架与流程是什么?
答:
组织架构
开发经理
分析人员
设计人员
开发人员
测试经理
测试人员
配置经理
CMO(配置管理员)
研发流程
应用的最为广泛的一种模型,也是最容易理解和掌握的模型,然而它的缺陷也是显而易见的。
综合了基本的瀑布式模型和演化/渐增原型方法。
所有工作流在各个阶段都有体现。
从整个产品角度出发,不仅仅针对研发。
- 测试阶段怎么划分?
答:
- 测试计划阶段
- 测试设计阶段
- 测试实施阶段
- 测试执行阶段
- 什么是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):用来代替所测试单元调用的子单元
- 单元测试的测试策略是哪些?各有什么优缺点?
答:
优点:该方法是最简单,最容易操作的,可以达到高的结构覆盖率,该方法是纯粹的单元测试
缺点:桩函数和驱动函数工作量很大,效率低.
优点:可以节省驱动函数的开发工作量,测试效率较高。
缺点:随着被测单元一个一个被加入,测试过程将变得越来越复杂,并且开发和维护的成本将增加。
优点:可以节省桩函数的开发工作量,测试效率较高。
缺点;不是纯粹的单元测试,底层函数的测试质量对上层函数的测试将产生很大影响。
- 什么是集成测试?目的是什么?
答:
集成测试是在单元测试的基础上,将所有函数按照概要设计要求组装成为子系统或系统所进行的测试
集成测试的目的是确保各组件组合在一起后能够按既定意图写作运行,并确保增量的行为正确。验证软件的组建对HLD的符合程度。集成测试属于灰盒测试。
- 验证接口是否与设计相符合的
- 发现设计和需求中存在的错误
- 集成测试的关注点是什么?
答:
单元间的接口:
- 在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;
- 全局数据结构是否有问题,会不会被一场修改;
集成后的功能
- 各个子功能组合起来,能否达到预期要求得父功能;
- 一个模块的功能是否会对另一个模块的功能产生不利的影响;
- 单个模块的误差积累起来,是否会放大,从而达到不可接受的程度
- 集成测试的测试策略是哪些?各有什么优缺点?
答:
优点:
- 大爆炸集成可以迅速完成集成测试,并且只要极少数的驱动和桩模块设计,它需要的测试用例也是最少的;
- 该方法比较简单、易行;
- 多个测试人员可以并行工作,对人力、物力资源利用率较高
缺点:
- 这种一次性组装方式试图在辅助模块的协助下,在模块单元测试的基础上,将所测模块连接起来进行测试,但是由于程序中不可避免地存在模块间接口,全局数据结构等方面的问题,所以一次试运行成功的可能性并不很大;
- 在发现错误时,其问题定位和修改都较困难;
- 即使被测系统能够一次性集成,但还是会有许多接口错误很容易躲过测试而进入到系统测试范围内
优点:
- 自顶向下的集成方式在测试过程中较早地验证了主要的控制和判断点;
- 如果选择按深度方向组装的方式,可以首先实现和验证一个完整的软件功能;
- 功能可行性较早得到证实,还能够给开发者和用户带来成功的信心;
- 最多只需一个驱动,减少了驱动器开发的费用;
- 支持故障隔离
缺陷:
- 桩的开发和维护是本策略的最大成本;
- 底层组件行为的验证被推迟了;
- 随着底层组件的不断增加,整个系统越来越复杂,导致底层组件的测试不充分,尤其是那些被重用的组件
优点:
- 允许对底层组件行为的早期验证,可以在任意一个叶子节点已经就绪的情况下进行集成测试;
- 在工作的最初可能会并行进行集成,在这一点上比使用自顶向下的策略效率高;
- 减少了桩的工作量,毕竟在集成测试中,桩的工作量远比驱动的工作量要大得多,但是为了模拟一些中断或异常,可能还是需要设计一定的桩
缺点:
- 驱动的开发工作量也是很庞大的;
- 对高层的验证被推迟到了最后,设计上的错误不能被及时发现,尤其对那些控制结构在整个体系中非常关键
优点:
集合了自顶向下和自底向上两种策略的优点
缺点:
中间层在被集成测试中不充分
优点:
具有三明治集成的优点,更适合于大型复杂项目的集成
缺点:
- 必须对系统的结果和相互依存性进行仔细的分析;
- 必须开发驱动和桩,并且由于被测系统的复杂性导致驱动和桩开发工作量的加大;
- 由于局部采用了大爆炸的策略,因此有些可能测试不充分
优点
有大爆炸,自顶向下,自底向上,三明治的优点
缺点
有大爆炸,自顶向下,自底向上,三明治的缺点
优点:
- 采用该方法,可以尽快的看到关键功能的实现,并验证关键功能的正确性;
- 由于该方法在验证某个消息处理时,可能同时加入多个组件,因此在进度上比自顶向下集成、自底向上集成或三明治集成要短
- 可以减少驱动的开发,原因与自顶向下的集成策略类似
缺点:
- 对有些接口的测试不充分,丢失许多接口的错误;
- 可能会有较大的冗条测试
优点:
- 采用该方法,可以尽快的看到关键消息处理的实现,并验证关键信息处理的正确性;
- 由于该方法在验证某个消息处理掉时候,可能会同时加入多个组件,因此在进度上不自底向上,自顶向下或三明治集成要短;
- 可以减少驱动的开发,原因与自顶向下的集成策略类似
缺点:
-
- 对有些接口的测试不充分,丢失许多接口的错误;
- 可能会有较大的冗条测试
- 基于进度集成
优点:
- 具有比较高的并行度;
- 能够有效缩短项目开发的进度
缺点:
- 可能最早拿到底层组件之间缺乏的整体性,只能进行独立的集成,导致许多接口必须等到后期才能验证,但此时系统可能已经很复杂,往往无法发现有效的接口问题;
- 桩和驱动的工作量可能会变得很庞大;
- 由于进度的原因,组件可能很不稳定且不断变动,导致测试的重复和浪费
优点:
最具有风险的组件最早进行验证,有助于系统的快速稳定
缺点:
需要对各组件的风险有一个清晰的分析
- 配置管理的术语,配置管理的活动有哪些?
答:
术语:
配置;配置项;基线;版本;版本标示
活动:
- 配置计划
配置标识
- 配置控制
- 配置状态发布
- 配置审计
- ISO?
答:
- ISO9000:制定管理理念和原则
- ISO9001:标准对组织质量管理体系必须履行的要求做了明确的规定,是对产品要求的进一步补充。(核心)
- ISO9004:是组织进行持续改进的指南标准。
- SEPG?
答:
软件工程过程组(Software Engineering Process Group)
重点:学习资料学习当然离不开资料,这里当然也给你们准备了600G的学习资料
需要的私我关键字【000】免费获取哦 注意关键字是:000
项目实战:
大型电商平台:
全套软件测试自动化测试教学视频
300G教程资料下载【视频教程+PPT+项目源码】
全套软件测试自动化测试大厂面经
python自动化测试++全套模板+性能测试
听说关注我并三连的铁汁都已经升职加薪暴富了哦!!!!