软件测试---概念篇

软件测试—概念篇

什么是软件测试

概念: 验证软件功能是否满足用户的需求

测试与调试的区别:

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

什么是需求

需求:满足用户期望或正式文档规定的条件和权能,用户需求和软件需求

  • 用户需求:可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。该需求一般比较简略。

  • 软件需求:或者叫功能需求,该需求会详细描述开发人员必须实现的软件功能。软件需求是测试人员进行测试工作的基本依据。

什么是bug

bug:有规格说明书且正确,程序与规格说明书不匹配的是缺陷,无规格说明书,以用户期望为标准
凡是实现效果和需求不相符的都可以认为是BUG.

什么是测试用例

测试用例:向被测试程序输入的一组集合,包含:测试环境、操作步骤、测试数据、预期结果、前置条件、备注等要素……

开发模型

1.瀑布模型(Waterful Model)
这里写图片描述
瀑布模型在软件工程中占有重要地位,是所有其他模型的基础框架。
瀑布模型的每一个阶段都只执行一次,因此是线性顺序进行的软件开发模式。
优点:

  • 强调开发的阶段性;

  • 强调早期计划和需求调查;

  • 强调产品测试

缺点:

扫描二维码关注公众号,回复: 2279565 查看本文章
  • 依赖于早期的唯一一次需求调查,不能适应需求变化
  • 单一流程,开发中的经验教训不能及时反映到产品过程
  • 险往往在后期测试阶段才显露出来,失去了及早纠正的机会(重要)
    这种开发模式一般要为后期测试留足时间,否则测试不充分,bug会留给用户

2.螺旋模型(Spiral Modal)
采用渐进式的开发模式。
这种模式在开发初期需求不是很明确,测试与开发同时进行,测试要随着开发的迭代而迭代,回归测试此时就十分重要了。

优点:

  • 强调严格的全过程风险管理
  • 强调各开发阶段的质量
  • 有机会讨论项目有没有必要继续下去

缺点:

  • 引入非常严格的风险识别、风险分析和风险控制,对风险管理的技能水平提出高要求
  • 需要投入大量人力、资金、时间

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

3.增量、迭代
增量是逐块构建,迭代是反复求精。
这种模式鼓励用户反馈,对需求进行更改和完善,开发人员构建新的可执行软件版本,这样的话,测试就要频繁进行,测试和开发人员配合要更加紧密。

4.敏捷
敏捷开发是一种以人为核心,迭代,循序渐进的开发方法。
前面所说的瀑布开发模型,它是以文档为驱动,开发过程要写大量的文档,开发人员都是根据需求文档来开发,一切以文档为根据。而敏捷开发模式是轻文档的,只写必要的文档,尽量少写文档,它注重人与人间之间,面对面的交流,以人为核心。

《敏捷宣言》:通过身体力行和帮助他人来揭示更好的软件开发方式。
主要特点有:

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

这样做主要是为了激发开发人员的兴趣。

需要了解一下scrum

一种典型的敏捷开发方式是scrum
scrum:原意是 “争球”,可以想象到这种模式一定能够是大家你追我赶,积极热情的来完成一个项目的。

scrum开发流程中的三大角色

  • 产品负责人(Product Owner):负责确定产品功能和达到要求的标准,维护产品订单,代表利益相关者的利益。
  • 流程管理员:负责Scrum流程在项目中的顺利实施和进行,召开各种会议,协调项目。
  • 开发团队:由不同技能的成员组成,人数一般为5~9人,大家紧密合作,完成每一次迭代的目标,交付产品。

scrum的基本流程:

这里写图片描述

这里写图片描述

敏捷中的测试

  • 以敏捷的原则,测试人员核心工作还是找bug
  • 测试人员不能依赖文档,测试用例作用减弱,更多采用思维导图、探索性测试、自动化测试。
  • 敏捷更讲求合作,测试人员与开发人员一块讨论,研究bug出现原因。

软件测试模型

1.V模型
这里写图片描述

V模型实质是基于瀑布模型,明确描述了开发与测试不同阶段的对应关系。
单元和集成测试检测程序是否满足软件设计的要求
系统测试检测系统功能、性能是否满足系统要求的指标
验收测试检测软件的实现是否满足用户需求或合同要求

局限性:仅在编码之后进行测试,不能及时发现需求等阶段的bug

2.W模型
这里写图片描述

在V模型的基础上进行改进,在开发阶段的同时同步进行验证和确认活动,二者并行进行。它由两个v字形模型组成,将开发与测试分开。
特点:测试对象除了程序外,还要对需求、设计等进行测试。
优点:有利于尽早全面的发现问题,降低后续测试难度和风险,对已发现的bug及早处理,加快项目进度。
局限性:需求、设计、编码这些都是串行的,前一阶段结束,下一阶段才能开始。无法支持敏捷开发模式。

软件配置(SCM):

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

实施SCM的好处:

  • 能够对项目中的文档、代码等的变化进行有效管理。
  • 能够方便地重现某个文件的历史版本。
  • 能够重新编译某个历史版本,使维护工作变得容易。
  • 能够使异地多团队开发、并行开发成为现实。
  • 从公司级看,实行统一的配置管理流程可提高项目组间人员流动时的工作效率

测试人员在SCM中起很大作用。
假设开发人员修正了一个Bug,然后找测试人员过去讨论,测试人员在开发人员的机器上重新测试了一下,发现Bug没再出现了,修复了,这时候,如果测试人员把缺陷关闭了,则可能导致缺陷莫名其妙地在用户那边又出现了。其实,原因可能仅仅是开发人员把这个Bug修改的代码没有提交的到配置管理数据库中。但是作为测试人员有没有责任呢?当然有,因为测试人员也没有按照规范的配置管理流程执行测试,测试人员应该从配置库取源代码编译后再测试,只有看到新的构建版本不再出现那个Bug,才能把缺陷库中的Bug关闭。

猜你喜欢

转载自blog.csdn.net/shidantong/article/details/81107369