软件测试:概念篇

本节内容


  • 软件测试的目的和原则
  • 什么是需求
  • 什么是bug
  • 什么是测试用例
  • 开发模型和测试流程
  • 配置管理

软件测试的目的和原则

目的:验证软件有或没有问题。 原则:以客户为中心,遵循软件测试的规范、流程、标准和要求。


  1. 测试并不仅仅是为了找出错误。通过分析产生错误的原因、阶段及错误发生的趋势。一、帮助项目管理者了解当前软件开发过程中的缺陷,以便及时纠错、改进。二、帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性。三、让开发人员知道错误产生的重灾区,加强自测试。四、让客户清楚我们专业的质量保证团队,可以向他们提交一份满意的答卷。
  2. 根据测试的目的不同,还有回归测试、压力测试、性能测试、安全测试等,分别为了检测修改或优化过程是否引入新的问题、软件所能达到处理能力和是否达到预期的处理能力等。
  3. 从测试的目的出发,大概可以分为两类:为了验证测试程序能正常工作的测试;为了验证程序不能正常运行的测试。

需求

需求是: 系统或系统部件要满足合同、标准、规范或其它正式规定文档所需具有的条件或权能。是开发和测试的依据;

需求一般分为两部分:用户需求、软件需求

bug

什么是bug:凡是实现效果和需求不符合的都可以认为是bug.

bug 的后果:用户流失,绩效血崩。

bug的定义:当且仅当规格说明是存在的并且正确,程序与规格说明之间的不匹配才是错误。

什么是测试用例

是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。

测试用例的一些常用元素:

测试过程中可能会遇到的问题:

开发模型和测试模型

软件的生命周期:一般分为6个阶段。即:需求分析—–计划—-设计—–编码—-测试—-运维

开发模型分为4种:瀑布模型、螺旋模型、增量迭代、敏捷

瀑布模型

开始—-需求分析—-计划—-设计—-编码—-测试—-结束

瀑布模型在软件工程中占有重要地位,是所有其他模型的基础框架。瀑布模型的每个阶段都只执行一次,因此是线性顺序进行的软件开发模式。强调需求比较稳定的业务。

优点:


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

缺点:


  • 依赖于早期进行的唯一一次需求调查,不能适应需求的变化;
  • 由于是单一流程,开发中的经验教训不能反馈应用于本产品的过程;
  • 风险往往迟至后期的测试阶段才显露,因此失去及早纠正的机会。
  • 最大的缺陷在于,可以运行的产品很迟才会被看到,这给项目带来了很大的风险,尤其是集成上的风险。因为如果在需求引入的一个缺陷要到测试阶段甚至更后的阶段才发现,通常会导致前面阶段的工作大面积的返工。

在瀑布模型中,测试阶段处于软件实现之后,这意味着必须在代码完成后有足够的时间预留给测试活动,否则将导致测试不充分,从而把缺陷直接遗留给用户。

螺旋模型

一般在软件开发初期阶段需求不是很明确时,采用渐进式的开发模型。螺旋模型是渐进式开发模型的代表之一。

适合于规模庞大、复杂度高、风险大的项目。

优点:


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

缺点:


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

增量、迭代

增量开发能显著降低项目风险,结合软件持续构建机制。增量开发模型,鼓励用户反馈,在每个迭代过程中,促使开发小组以一种循环的、可预测的方式驱动产品的开发。因此,在这种开发模型下,每一次的迭代都意味着可能有需求的更改、构建出新的可执行软件版本,意味着测试需要频繁进行,测试人员需要与开发人员更加紧密的协作。 增量:是逐块构造的概念。 迭代:是反复精益求精的概念。

敏捷

敏捷是当今主要流行的一种方式。

主要内容:


  • 个体与交互重于过程和工具
  • 可用的软件重于完备的文档
  • 客户协作重于合同谈判
  • 响应变化重于遵循计划

敏捷开发中比较流行的方式scrum

一、scrum里的角色:


  • procuct owner主要负责整理user story(用户故事),定义其商业价值,对其进行排序,制定出发布计划,对产品负责。
  • scrum master负责召开各种会议、协调项目、为开发团队服务。
  • team则由不同技能的成员组成,通过紧密协同,完成每一次迭代的目标,交付产品。

二、迭代开发

三、scrum的基本流程


  • 产品负责人负责整理user story。
  • 发布计划会议:product story负责讲解user story,对其进行评估和排序,发布计划会议的产出就是制定出这一期迭代要完成的story列表。
  • 迭代计划会议:项目团队对每一个story进行任务分解,分解的标准是完成该story的所有任务,每一个任务的负责人,并完成工时的初估计。
  • 每日例会:每天scrum master召集站立会议,团队成员回答昨天做了什么今天计划做什么,有什么问题。
  • 演示会议:迭代结束之后,召开演示会议,相关人员都受邀参加,团队负责向大家展示本次迭代取得的成果。期间大家的反馈记录下来,由po整理,形成新的story。
  • 回顾会议:项目团队对本期迭代进行总结,发现不足,制定改进计划,下一次迭代继续改进,已达到持续改进的效果。

敏捷中的测试

轻文档和快速迭代

测试模型分为2种:V模型、W模型

V模型

V模型目的是改进软件开发的效率和效果,是瀑布模型的变种。


  • 明确的标注了测试过程中存在的不同类型的测试,并且清楚的描述了这些测试阶段和开发过程期间各阶段的对应关系。
  • V模型指出,单元测试和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求。
  • 局限性:仅仅把测试作为在编码之后的一个阶段,未在需求阶段就进入测试。

W模型


  • W模型增加了软件各开发阶段应同步进行的验证和确认活动。W模型由两个V模型组成,分别代表测试和开发阶段,图中明确表述出测试和开发的并行关系。
  • W模型特点:测试的对象不仅是程序,需求、设计等同样要测试,测试与开发是同步进行的。
  • W模型的优点:有利于尽早的全面的发现问题;同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,显著减少总体测试时间,加快项目进度。
  • 局限性:需求、设计、编码等活动被视为串行的;测试和开发活动也保持着一种现行的前后关系。无法支持敏捷开发模式。

配置管理(SCM)

配置管理概念:

配置管理是通过对在软件生命周期不同的时间点上的软件配置进行标识,并对这些被标识的软件配置项的更改进行系统控制,从而达到保证软件产品的完整性和可溯性的过程。

实施软件配置管理的好处

  • 能够对项目中的文档、代码等的变化进行有效管理。
  • 能够方便的重现某个文件的历史版本。
  • 能够重新编译某个历史版本,使维护工作变得容易。