测试基础篇(一)

软件测试概念

什么是软件测试

  • 验证软件是否满足用户的需求

测试与调试的区别:

  • 目的不同:测试的任务是发现程序中的缺陷;调试的任务是定位并解决程序中的问题
  • 参与角色不同:测试主要由测试人员和开发人员来执行,黑盒测试主要由测试人员完成,单元测试/集成测试主要由开发人员执行。调试是开发人员完成
  • 只想阶段不同:测试贯穿软件开发的整个生命周期,调试一般在开发阶段

    软件测试的目的和原则

  • 目的:验证软件有或者没有问题

  • 原则:以客户为中心,遵循软件测试的规范,流程,标准和要求

    什么是需求:

    需求分为用户需求和软件需求

  • 用户需求:甲方提出的要求,没有甲方就是用户使用产品时必须要完成的任务
  • 软件需求:软件需求也叫功能需求,该需求会详细描述开发人员必须实现的软件功能

什么是bug

  • 凡是实现效果和需求不符合的都可以认为是bug
  • bug的处理:生产环境上的问题,要第一时间回滚,再慢慢定位

什么是测试用例

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

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

  • 不知道是否全面的测试了所有的功能
  • 测试的覆盖率无法衡量
  • 对新版本的重复测试很难实施
  • 存在大量冗余测试影响测试效果

开发模型和测试模型

软件的生命周期:

  • 软件的生命周期是指从软件的设想到软件不在使用而结束的时间
  • 软件的生命周期分为6阶段:需求分析,计划,设计,编码,测试,运行维护

    瀑布模型:

    针对需求稳定或者之前已经做过的项目(好使比较长)
    测试基础篇(一)
    优点:

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

    缺点:

  • 依赖于早期进行的唯一一次需求调查,不能适应与需求的变化

  • 由于单一流程,开发中总结的经验教训不能反馈应用于本产品的过程
  • 风险往往迟至后期的测试阶段才显露,因而失去及早纠正的机会

螺旋模型:

强调风险分析,适用于风险性项目
测试基础篇(一)
优点:

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

缺点

  • 引入严格的风险识别,风险分析和风险控制,这对分险管理的技能水平提出来很高的要求。这需要人力,资金和时间

    增量 迭代

  • 增量:增量开发能显著降低项目风险,结合软件持续构建机制,构成了当今流行的软件工程最佳实践之一,增量开发模型,鼓励用户反馈,在每个达代过程中,促使开发小组以一种循环的,可预测的方式驱动产品的开发,每一次的迭代都意味着有需求的变动
    增量通常和迭代混为一谈,但是其实两者是有区别的。增量是逐块建造的概念,例如画一幅人物画,我们可以先画 人的头部,再画身体,再画手脚……而迭代是反复求精的概念,同样是画人物画,我们可以采用先画整体轮廓,再 勾勒出基本雏形,再细化、着色。

敏捷

  • 强调人与人之间的沟通
  • 轻文档
  • 客户协作重于合同谈判
  • 响应变化重于合同谈判
    敏捷中的测试
    挑战1:轻文档
    挑战2:快速迭代

软件测试V模型

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

软件测试W模型

测试基础篇(一)

  • W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试 与开发过程,图中明确表示出了测试与开发的并行关系。
  • W模型优点:有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和 确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制 定应对措施,显著减少总体测试时间,加快项目进度。
  • 局限性:需求、设计、编码等活动被视为串行的;测试和开发活动也保持着一种线性的前后关系,上一阶段 完全结束,才可正式开始下一个阶段工作。无法支持敏捷开发模式。对于当前软件开发复杂多变的情况,W模 型并不能解除测试管理面临着困惑。