软件测试模型

121 阅读7分钟

一、单元测试

  • 定义:又称模块测诚,针对软件设计中的最小单位(程序模块)进行正确性检查的测试工作。需要从程序的内部结构出发设计测试用例。
    • 单元定义
      • C语言中指一个函数;
      • Java中指一个类;
      • 图形化软件中,单元一般指一个窗口或菜单。

二、集成测试

  • 定义:又叫组装测试,在单元测试的基础上,将所有程序模块进行有序、递增的测试。重点在于测试不同模块之间的接口部分。

三、系统测试(system testing)

  • 定义:将整个软件系统视为一个整体进行测试,包括功能、性能以及运行环境的软硬件兼容性测试。
    • 前期测试:主要测试系统的功能是否满足需求。
    • 后期测试:主要测试系统运行的性能是否满足需求,及其在不同软硬件环境中的兼容性等。

四、Alpha/Beta/Gamma (RC) 测试

  • Alpha测试:由公司内部人员执行,主要用于检测功能缺失或系统错误。完成Alpha测试后,通常不会有大的问题。
  • Beta测试:提供给用户使用,用于评估用户对软件外观、易用性的反应。通过Beta测试可以减少软件中的bug并尽可能满足用户的实际需求。
  • Gamma测试(现在称为RC,Release Candidate):经过一些修改后的版本,作为正式发布的候选版本。

五、V模型

在软件测试方面,v模型是最广为人知的模型,尽管很多富有实际经验的测试人员还是不太熟悉v模型,或者其它的模型。v模型已存在了很长时间,和瀑布开发模型有着一些共同的特性,由此也和瀑布模型一样地受到了批评和质疑。v模型中的过程从左到右,描述了基本的开发过程和测试行为。V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。

局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现。

示意图: image.png

  • 优点
    • 包含了底层测试(单元测试)和高层测试(系统测试);
    • 清晰标识了开发和测试的各个阶段;
    • 自上而下逐步求精,每个阶段分工明确,便于整体项目的把控。
  • 缺点
    • 自上而下的顺序导致错误不能及时修正;
    • 实际工作中需求经常变化,导致反复执行步骤,返工量大且灵活度低。

六、W模型

1、V模型的局限性在于没有明确地说明早期的测试,无法体现“尽早地和不断地进行软件测试”的原则。在v模型中增加软件各开发阶段应同步进行的测试,演化为双v模型(如下图),也就是开发一个v;测试一个v组合起来的模型。在模型中不难看出,开发是“V”,测试是与此并行的“v”。基于“尽早地和不断地进行软件测试”的原则,在软件的需求和设计阶段的测试活 动应遵循IEEE1012-1998《软件验证与确认(v&v)》的原则。

双v模型由Evolutif公司提出,相对于v模型,双v模型更科学。双v模型是v模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。

image.png

  • 改进点:在V模型基础上增加了早期测试,强调“尽早地和不断地进行软件测试”原则。
  • 优点
    • 测试伴随着整个开发周期,需求和设计同样要测试;
    • 更早介入测试,可以发现初期缺陷,修复成本低;
    • 分阶段工作,方便项目整体管理。
  • 缺点
    • 开发和测试依然是线性关系,需求变更仍不方便;
    • 如果没有文档,难以执行;对项目组成员技术要求较高。

七、H模型

1、H模型中,软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段。软件测试可以尽早的进行,并且可以根据被测物的不同而分层次进行。

2、示意图

image.png

这个示意图演示了在整个生产周期中某个层次上的一次测试“微循环”。图中标注的其它流程可以是任意的开发流程,例如设计流程或者编码流程。也就是说,只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以进行了。

H模型揭示了一个原理:软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。H模型指出软件测试要尽早准备,尽早执行。不同的测试活动可以是按照某个次序先后进行的,但也可能是反复的,只要某个测试达到准备就绪点,测试执行活动就可以开展。

  • 特点:软件测试过程活动完全独立,贯穿产品的整个周期,与其他流程并发进行。
  • 优点
    • 软件测试完全独立,贯穿整个生命周期,与其他流程并发进行;
    • 测试可以根据被测物的不同分层次、分阶段、分次序执行,同时也可以迭代;
    • 可以尽早准备、尽早执行,具有很强的灵活性。
  • 缺点
    • 管理型要求高,必须定义清晰规则和管理制度;
    • 技能要求高,需准确定义每个迭代规模;
    • 对于整个项目组的人员要求非常高,规范制度不完善时容易混乱。

八、X模型

1、X模型的基本思想是由Marick提出的,但首先是Marick不建议要建立一个替代模型。Robin F·Goldsmith引用了一些Marick的想法,并重新经过组织,形成了“X模型”。其实并不是为了和v模型相对应而选择这样的名字,而是由于其它一些原因:x通常代表未知,而Marick也认为他的观点并不足以支撑一个模型的完整描述,但其中已经有一个模型所需要的一些主要内容,其中也包括了象探索性测试(exploratory testing)这样的亮点。

2、示意图:

image.png

X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成,最终成为可执行的程序.然后再对这些可执行程序进行测试.已通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分. 多根并行的曲线表示变更可以在各个部分发生。

  • 优点
    • 改进了V模型,提出了单独程序片段的编码与测试分离;
    • 定位了探索性测试。
  • 缺点
    • 对测试造成人力、物力和财力的浪费;
    • 对测试员的熟练程度要求较高。

备注:内容来自于蜗牛学院的测试开发学习的笔记,仅供学习参考,有问题欢迎大家分享交流。