一、基本答疑篇

1、为什么要做测开?
职业没有贵贱之分只有合不合适这一说法。至于为什么会选择测开,还是针对自身的特质来决定的。

  • 首先肯定是兴趣,我对任何事物都会产生一种逆向思维,好奇心很强,喜欢去探索一下该事务通常情况下不会去考虑到的问题。
  • 其次,我喜欢与人交往,沟通能力也不算太差。作为测试人员,可以获得不仅仅是同行和开发人员,还有和客户讨论有关领域知识的更多信息的机会。
  • 喜欢成为一个提供优质产品的团队。做好产品交付的最后最后的严格把关,有较强的责任感

2、测试人员所要具备的素质?

  1. 踏实细心、积极主动
    因为对于软件测试特别是当前主流的手动黑盒功能测试工作就是一项重复劳动,需要足够的细心和耐心来保证不在枯燥的重复劳动中放过细小的缺陷。要静下心来从用户的角度去思考可能会怎么用,需求对产品是怎么要求的。

  2. 好奇心,怀疑一切
    因为测试人员进行测试的主要目的就是发现软件存在的缺陷。要抱着怀疑的态度去从多个方面考虑

  3. 与他人良好的交流能力
    不仅要和项目经历交流了解最新的客户需求还要和开发人员好好沟通以便解决缺陷。

  4. 持续不断的自我提高和总结能力
    通过总结对自己的工作进行一个回顾分析。在总结中把做的好的地方继续发扬,做的不好的地方进行改进

3、什么是软件测试?
软件测试就是在需求正确的前提下,验证软件的功能是否满足用户的需求。主要目的就是为了保证和提高软件的质量,给客户交付一个高质量、高可用度的软件。

4、测开、开发和测试之间的区别?

  1. 难易程度:开发的广度比较小,专业度高,相反测试的广度大,专业度要求相对较低
  2. 技能要求:测试要求更加广泛,比如说业务能力、设计和架构能力、测试手段和工具的使用,用户模型和理解还有编程能力
  3. 工作环境类似
  4. 常规意义下测试比研发的挑战性要小一点,但是是敏捷开发模式下差距不大,并且测试一般是在产品发布前的压力会比较大。

二、软件生命周期

1、软件测试生命周期
需求分析—>测试计划—>测试设计、测试开发—>测试执行---->测试评估。

测试人员在软件开发过程中的任务如下表所示:

开发阶段 事务
用户需求阶段 了解用户需求,为验收测试做准备
需求设计分析和系统设计阶段 分析需求,编写测试计划
概要设计阶段 搭建测试用例框架,细化测试计划
详细设计阶段 细化测试用例框架,并为单元测试做准备
编码阶段 编写测试用例,进行单元测试
集成阶段 提取集成测试用例,进行集成测试
实施阶段 搭建环境、数据准备、执行测试、缺陷管理、编写测试报告
交付阶段 协助用户完成验视,对用户进行软件使用的指导培训

2、软件开发什么周期

  • 需求阶段:测试人员了解需求、对需求进行分解,得出测试需求
  • 计划阶段:根据需求编写测试计划/测试方案
  • 设计阶段:测试人员适当的了解设计,对于设计测试用例,测试人员搭建测试用例框架,根据需求和设计 编写一部分测试用例
  • 编码阶段:测试人员一般是不需要编码的,但已经编码的模块,专业的白盒测试人员可以计划执行单元测试,完善、细化测试用例以及调整测试计划和方案
  • 测试阶段:测试阶段是软件测试人员最为重要的工作阶段,根据测试用例和计划执行测试,在执行过程中记录、管理缺陷,测试完成后编写测试报告。
  • 运行维护:测试人员需要参与项目的实施工作。测试人员对项目产品的业务和操作非常了解,加上测试人员的沟通表达能力一般都比较强,所以测试人员可以参与用户使用软件的培训,在试运行项目时收集问题并及时反馈给相关负责人

三、测试基础概念

1、软件测试的流程
具体流程如下图所示,首先要指定测试的目标和依据然后进行测试的需求分析,接着就可以指定测试计划。根据测试计划可以选择编写测试用例或者编写开发测试工具或脚本,然后执行测试,对执行测试后的测试结果进行分析最后提交测试报告。
【软件测试】——基础答疑篇

2、软件测试的意义

  1. 发现缺陷:软件总存在缺陷。只有通过测试,才可以发现软件缺陷。也只有发现了缺陷,才可以将软件缺陷从软件产品或软件系统中清理出去。
  2. 降低公司成本和风险:要尽早地测试,让测试人员在软件的需求和设计阶段就介入,找到软件问题的时间就越早,软件就越容易更正,成本也就越低,产品发布之后越稳定
  3. 对后续开发进行调整:通过分析错误产生的原因、阶段和错误发生的趋势,对后续的开发进行一定的调整。
  4. 软件测试建立软件的信心

3、评价软件测试

  1. 好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案
  2. 没有发现错误的测试也是有价值的完整的测试是评定软件质量的一种方法

4、什么是需求
需求就是用户解决问题或达到目标所需条件或权能。系统或系统部件要满足合同、标准、规范或其他正式规定文档所具有的条件或权能。

它包括功能性需求及非功能性需求,非功能性需求对设计和实现提出了限制,比如性能要求,质量标准,或者设计限制。

5、怎样才能尽早的发现bug
要知道磨刀不误砍柴工,对一个模块的测试不能急于马上开展测试。

  • 对于半复用的项目:把新研发的功能优先级排在前面。
  • 对于全新的项目:要根据项目的2 8原则,80%的缺陷都隐藏在20%的代码里面。根据功能是否常用、复杂的、开发人员的技术水平和开发人员的业务成熟度和核心功能等把功能的测试分优先级。

6、一个bug的记录都包含了哪些内容

  • bug的编号
  • bug的严重级别(崩溃、严重、一般、次要)、优先级
  • bug的产生模块
  • bug摘要和bug产生的大体内容
  • bug对应的版本
  • bug的详细现象描述,包括截图和录像等
  • bug出现时的测试环境、产生条件以及对应的操作步骤

【举个栗子】
【软件测试】——基础答疑篇

四、开发与测试模型

1、5种开发模型

1、瀑布模型
【软件测试】——基础答疑篇
(一)概念
瀑布模型的每一个阶段都只执行一次,因此是线性顺序进行的软件开发模式。

(二)特点
优点:

  • 强调开发的阶段性;
  • 强调早期计划及需求调查
  • 强调产品测试

缺点:

  • 依赖于早期进行的唯一一次需求调查,不能适应需求的变化
  • 由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程
  • 风险往往迟至后期的测试阶段才显露,因而失去及早纠正的机会。 测试阶段处于软件实现后,这意味着必须在代码完成后有足够的时间预留给测试活动,否则将导致 测试不充分,从而把缺陷直接遗留给用户。

2、螺旋模型

【软件测试】——基础答疑篇
(一)概念
一般在软件开发初期阶段需求不是很明确,采用渐进式的开发模式。螺旋模型是渐进式开发模型的代表之一。这对于那些规模庞大、复杂度高、风险大的项目尤其适合。
这种迭代开发的模式给软件测试带来了新的要求,它不允许有一段独立的测试时间和阶段,测试必须跟随开发的迭代而迭代。

(二)特点
优点:

  • 强调严格的全过程风险管理。
  • 强调各开发阶段的质量
  • 提供机会检讨项目是否有价值继续下去

缺点:
引入非常严格的风险识别、风险分析和风险控制这对风险管理的技能水平提出了很高的要求。这需要人 员、资金和时间的投入。

3、增量、迭代模型
这两个放在一起。鼓励用户反馈,在每个迭代过程中,促使开发小组以一种循环的、可预测的方式驱动产品的开发。
因此在这种开发模式下,每一次的迭代都以为着可能有需求的更改、构建出新的可执行软件版本。意味着测试需要频繁进行,测试人员需要与开发人员更加紧密地协作

4、敏捷开发模型
(一)概念
敏捷宣言的核心就是轻文档,轻流程,重目标,重产出。Scrum是敏捷开发中比较流行的一种方式,scrum由product owner(产品经理)、scrum master(项目经理)和team(研发团队)组成。。

(二)流程

  • 产品负责人负责整理user story
  • 发布计划会议
  • 代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每个任务都有明确的负责人,并完成工时的初估计
  • 每日例会
  • 演示会议
  • 回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,以达到持续改进的效果。

2、软件测试模型

1、V模型

(一)概念

V模型的一端放置了开发阶段,例如需求分析、概要设计、详细设计和编码。另一端放置了各种类型的测试,例如单元测试、集成测试、系统测试和验收测试。如下图所示:
【软件测试】——基础答疑篇

  • 单元和集成测试应检测程序的执行是否满足软件设计的要求
  • 系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标
  • 验收测试确定软件的实现是否满足用户需要或合同要求

(二)特点
优点:

  • 明确的标注了测试过程中存在不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系
  • 包含了底层测试(单元测试)和高层测试(系统测试)
  • 自上而下逐步求精,每个阶段分工明确,便于整体项目的把控

缺点:

  • 仅仅把测试作为编码之后的一个阶段,未在需求阶段进入测试,发现错误时间较晚,不利于前期风险的控制。
  • 实际工作中,需求经常变化,导致V模型步骤、反复性返工量很大,灵活度低

2、W模型
(一)概念
W 模型是 V 模型的扩展,并且它解决 V 模型的限制。它注重于测试方法学,该方法学将在开发的各个阶段应用静态测试技术。这导致在执行开发过程的同时并行执行测试
W 模型将测试流程放在与开发过程相同重要的位置。如下图所示:
【软件测试】——基础答疑篇

(二)特点

  • 测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进行的
  • 有利于尽早的全面发现问题。
  • 无法支持敏捷开发模式:因为需求、设计、编码等活动被视为串行的,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。另外,对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。

相关文章: