软件测试基础理论(二)

本教程文章目录

本篇开始

软件测试的基本定义: 通过手工或者工具对被测试对象进行测试操作,从而发现结果和预期结果之间是否存在着差异.重点是对「功能」和「性能」进行测试.

软件测试的作用和目的

  1. 发现并修复软件中存在的缺陷,从而提高用户对软件的使用信心.
  2. 记录一些软件使用过程中产生的一些数据,从而为决策者提供依据.
  3. 降低同类型软件的开发风险.
  4. 通过尽可能少的人力,物力,财力来查找并解决软件中存在的缺陷从而降低商业风险等.

测试原则

  1. 测试证明存在的缺陷,不能测试证明没有缺陷.

    1. 我们测试只能证明当前软件是有缺陷而不能证明它没有缺陷.
  2. 不能执行穷尽测试
    1. 具体的测试操作不可能将所有操作都列出来,所以测试工作肯定会有中止的时候.
  3. 测试应该尽早介入
    1. 一般不要在开发完成之后再测试,这样不利于缺陷的尽早发现.
  4. 缺陷存在的群集现象.
    1. 对于一款软件来说核心的功能只占20%,所以在测试的时候我们会花更多的时候在这20%上面,因此它里边的缺陷暴露出来的可能性会更大一些,我们称为缺陷群集现象.
    2. 二八原则
  5. 某些测试依赖于特定的测试环境.
  6. 杀虫剂现象
    1. 不要过多的使用同一条测试用例对软件问题进行排查,因为软件也会产生抗性.
  7. 在存在缺陷的谬论: 任何软件都不可能是完美的.

软件测试模型

随着测试过程的管理和发展,测试人员通过大量的实践,从而总结出了不少测试模型,如常见的V模型W模型H模型,X模型模型等。这些模型与开发紧密结合,对测试活动进行了抽象,成为了测试过程管理的重要参考依据。

V模型

  • 概述

    • V模型是最具有代表意义的测试模型,最早是由Paul Rook在20世纪80年代后期提出,由英国国家计算机中心文献中发布,旨在改进软件开发的效率和效果;
    • V模型推出之前,人们通常把测试过程作为在需求分析、概要设计、详细设计、编码全部完成之后的一个阶段,尽管当时已经出现了测试工作会占用这个项目周期一半的时间,但是大多数人认为测试只是一个收尾工作;V模型在这个时候推出,就是为了改变之前行业的普遍认识.
    • V模型本身是软件开发中瀑布模型的变种,它反映了测试活动与分析和设计的关系。
    • V模型标明了测试过程中本身存在的不同阶段,从左到右,描述了开发过程和测试过程间的阶段对应关系。

软件测试-V模型

需求分析

  • 用户需求、业务需求、需求规格说明书

概要设计

  • 系统架构、模块划分、模块与模块之间的接口。

详细设计

  • 模块内部实现的逻辑和方法

编码实现

  • 实现上面的设计。

单元测试

  • 单元测试又称为模块测试,针对软件设计当中最小的单位 - 程序模块,进行正确性的检查的测试工作.单元测试需要从程序内部出发设计程序用例.多个模型可以平等地独立的进行单元测试.

集成测试

  • 集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。
  • 将所有程序模型进行有序的,递增的测试.
  • 重点测试不同模块的接口部分.

系统测试

  • 指的是将整个软件系统看为一个整体进行测试,包括对功能、性能、以及软件所运行的软硬件环境进行测试。
  • 系统测试在系统集成完毕后进行测试,前期主要测试系统的功能是否满足需求,后期主要测试系统运行的性能是否满足需求,以及系统在不同的软硬件环境中的兼容性等。

验收测试

  • α测试

alpha是内测版本,即现在所说的CB,此版本表示该软件仅仅是一个初步完成品, 通常只在软件开发者内部交流, 也有很少一部分发布给专业测试人员。一般而言, 该版本软件的bug 较多, 普通用户最好不要安装。

  • β测试

beta是公测版本,是对所有用户开放的测试版本。该版本相对于α 版已有了很大的改进,消除了严重的错误, 但还是存在着一些缺陷,需要经过大规模的发布测试来进一步消除。这一版本通常由软件公司免费发布, 用户可从相关的站点下载。通过一些专业爱好者的测试, 将结果反馈给开发者, 开发者们再进行有针对性的修改。该版本也不适合一般用户安装。

  • γ测试

gamma版本,指的是软件版本正式发行的候选版。该版本已经相当成熟了, 与即将发行的正式版相差无几, 成为正式发布的候选版本;

 软件正式版本推出之前的几个版本, 需要有人测试一下, 看看是不是有问题。在开发该软件的公司内部的由该公司内部人员测试的称为: Alpha 测试, Alpha 测试主要看有没有功能缺失或系统错误, Alpha 测试完后一般不会有大问题了。然后把软件拿给用户测试,称为: beta 测试, 主要是看用户对软件外观、使用方便等的反应。这么多的测试版一方面为了最终产品尽可能地满足用户的需要, 另一方面也尽量减少了软件中的bug。然后做过一些修改, 成为正式发布的候选版本时, 叫做gamma( 现在叫做RC - Release Candidate) 。

  简单来说,阿尔法测试主要是测试人员在开发环境下的测试,贝塔测试是在实际环境中的测试,或者公司内部人员在模拟真实环境中的测试。

V模型优点

  1. 测试V模型即包含了「底层测试」又包含了「高层测试」;

「底层测试」: 检验源代码质量的测试,如:单元测试;
「高层测试」: 检验整个系统的需要,如:系统测试;

2. V模型清楚地标识出了软件开发的阶段

3. 它采用自顶向下逐步求精的方式把整个开发过程分成不同的阶段,每个阶段的工作都很明确,因此便于控制开发过程。当所有的阶段都完成之后,该软件的开发过程也随之结束。

V模型缺点

  • V模型一大缺点正是它自身的顺序性所导致的。到了测试阶段,程序已经完成,错误已经产生,很多前期的错误一直到测试阶段才发现,甚至无法发现,往往无从修改了。
  • 同时实际的开发过程中,在需求阶段很难把用户的需求完全明确下来,因此,当需求变更时将会导致阶段反复,而且都要重复需求、设计、编码、测试等过程,返工量非常大,模型灵活性比较低。

W模型(双V模型)

简单的来说w模型就是两个v模型的组合.

IEEE std1012-1998《软件验证和确认(V&V)》的原则中提出了在软件的需求和设计阶段也应有测试活动,并且提出了相应的原则;
W模型由Evolutif公司提出:开发一个V,测试一个V,组合的W模型;
测试伴随着整个软件开发周期,并且测试的对象不仅仅是程序,需求和设计同样要测试

软件测试-w模型

W模型的优点

  1. 开发强调测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求和概要设计同样要测试;
  2. 更早地接入测试,可以发现开发初期的缺陷,那么可以用更加低的成本进行缺陷修复。
  3. 同样是分阶段的工作,便于控制项目过程。

W模型的缺点

  1. 依赖于软件开发和软件测试依然保持一前一后的线性关系,依然无法支持迭代、自发性和需求等变更调整;
  2. 对于当前很多项目,在执行的过程中根本不产生文档,那么W模型基本无法适用;
  3. 使用起来技术复杂度很高,对于需求和设计的测试要求很高,实践起来困难。一般都是中型或者大型公司使用.

H模型

人们发现虽然软件开发中需求、设计、编码等活动被分阶段执行、但是实践中,他们并不是完全串行的,它们之间更多时候是交叉进行的,更多的是迭代执行
为了解决上面的问题,有专家专门提出了H模型,它将测试活动完全独立出来,形成一个完全独立的流程,同时将测试准备和测试执行也清晰表现出来。

软件测试-H模型

H模型优点

  • 开发的H模型揭示了软件测试除测试执行外,还有很多工作;
  • 软件测试完全独立,贯穿整个生命周期,且与其他流程并发进行;
  • 软件测试活动可以尽早准备、尽早执行,具有很强的灵活性;
  • 软件测试可以根据被测物的不同而分层次、分阶段、分次序的执行,同时也是可以被迭代的。

H模型的缺点

  • 管理型要求高

    • 由于模型很灵活,必须要定义清晰的规则和管理制度,否则测试过程将非常难以管理和控制;
  • 技能要求高
    • H模型要求能够很好的定义每个迭代的规模,不能太大也不能太小;
  • 测试就绪点分析困难
    • 测试很多时候,你并不知道测试准备到什么时候是合适的,就绪点在哪里,就绪点的标准是什么,这就对后续的测试执行的启动带来很大困难;
  • 对于整个项目组的人员要求非常高
    • 在很好的规范制度下,大家都能高效的工作,否则容易混乱。例如:你分了一个小的迭代,但是因为人员技能不足,使得无法有效完成,那么整个项目就会受到很大的干扰

X模型

  • X模型也是对V模型的改进,X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序。
  • X模型的基本思想是由Marick提出的,但首先Marick不建议建立一个替代模型,同时,他也认为他的观点并不足以支撑一个模型的完整描述,不过,Robin F.Goldsmith先生在自己的文章里将其思想定义为X模型,理由是,在Marick的观点中已经具备了一个模型所需要的一些主要内容, 其中也包括了像探索性测试这样的亮点

软件测试X模型

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

优点

X模型还定位了探索性测试,这是不进行事先计划的特殊类型的测试, 这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。

缺点

可能对测试造成人力、物力和财力的浪费
对测试员的熟练程度要求比较高。

使用场景

主要使用v和w模型

V模型

  • 模型主要是应用于中小型团队,对团队成员要求不高.

    • 对于v模型各个阶段应该全部掌握.

W模型

  • 主要应用于大中型团队.对团队成员,公司人力物力要求比较高.

总结

今天介绍了软件开发中常用的四种模型, 分别是v模型、w模型、h模型、x模型. 其中v、w模型较为常用.

作者:天行健

链接:https://zhuanlan.zhihu.com/p/81219125

大家可以关注公众号了解更多:

                    ------------------------------------------------------------善知软件实训------------------------------------------------------

软件测试基础理论(二)相关推荐

  1. 软件测试需要掌握哪些知识?软件测试基础理论

    本文就软件测试基础理论的内容,来和大家讲解一下,软件测试需要掌握哪些知识?感兴趣的小伙伴赶紧看下去吧! 一.什么是软件测试? 为了发现软件产品中的各种缺陷,而对软件产品进行验证和确认的活动过程,此过程 ...

  2. 【软件测试】软件测试基础理论

    软件测试基础理论 黑盒测试.白盒测试.灰盒测试 (1)黑盒测试 黑盒测试 又叫 功能测试.数据驱动测试 或 基于需求规格说明书的功能测试.该类测试注重于测试软件的功能性需求. 采用这种测试方法,测试工 ...

  3. 烽火星空软件测试工程师二面(秋招)

    烽火星空软件测试工程师二面(上海岗) 以下是小沐同学被一位友好面试官问到的问题 1.自我介绍 万古不变的开头自然是自我介绍啦!        以下是小沐的一个模板,模板分为三大模块,开始介绍的是自己和 ...

  4. 软件测试 - 基础理论篇

    基础理论篇 一.测试基础及分类 1.1.测试基础 1.2.测试技能 1.3.测试分类 1.4.测试方向 二.模型 2.1.质量模型 2.2.测试模型~W模型 三.测试流程 四.测试用例 4.1.测试用 ...

  5. 字节软件测试岗二面:APP测试问题被虐哭了,直到看到这些知识点

    APP测试一直是大厂软件测试问到的一个重点细节,下面我来给大家展示一下大厂关于APP测试经常会问到的一些问题,以及解析.想象一下当你遇到面试官问到你这些问题时,你是否也能够对答如流哦! 注意,注意啦! ...

  6. 软件测试基础 (二): 集成测试

    Hello!大家好,我是BugBear,一个专注于分享软件测试干货的测试开发.上一篇文章我们讲了 单元测试 相关知识,今天我们来聊聊集成测试的相关内容. 一.什么是集成测试? 我们通过工厂组装手机的例 ...

  7. 学习笔记之 软件测试基础理论知识

    目录 一.什么是软件测试 二.测试对象 三.测试原则 四.测试流程(功能) 1. 了解产品功能需求 2. 制定测试计划 3. 编写测试用例 3.1 需求文档分析 3.2 功能模块划分 3.3 编写测试 ...

  8. 【最全】软件测试基础理论选择题(含答案)

    一.单选题 1.软件测试的目的是( ) A.试验性运行软件 B.发现软件错误 C.证明软件正确 D.找出软件中全部错误 [答案]B 2.下面说法正确的是( ) A.经过测试没有发现错误说明程序正确 B ...

  9. 【全栈软件测试】二、Windows服务器(1)搭建DNS服务器

    〇.前言: 前面写了软件测试的学习路线.软件测试的体系.软件测试和测试环境.软件测试的环境搭建(虚拟机的使用,VMware的使用技巧等),本篇主要写:DNS的原理和搭建DNS服务器,其中包含:DNS的 ...

最新文章

  1. poj2253 Frogger dijkstra
  2. 敏捷项目向组合级看齐
  3. numpy高级操作,求高维矩阵的距离矩阵(方阵)以及 求某一个维度的累加和 , 矩阵切片操作
  4. 第四届大数据科学与工程国际会议(2019)
  5. k8s查看pod的yaml文件_每天5分钟|轻松掌握开发工作中必会的k8s-yaml配置说明和常用命令...
  6. ReactNative 问题集合
  7. 关于Ajax请求说法,关于ajax请求
  8. Android 功耗(6)---整机功耗测试
  9. 裁员30%?互联网行业裁员力度进前三 求职竞争加剧
  10. 如何在本站使用脚本格式的计数器--终于找到解决办法!
  11. C++基础知识:C++语言中的表达式求值
  12. 服务器磁盘管理 知识点
  13. JavaScript技巧写法
  14. 图书馆管理系统 Java
  15. 谷歌黑客搜索看这些就够了!
  16. 微信吸粉秘籍之人气论坛吸粉方法
  17. 图的遍历 BFS遍历(深学思维)
  18. RedHat 系软件包管理
  19. powershell 激活WIN10
  20. 2022年 前端web 面试题(笔试真题)(5)

热门文章

  1. Android屏幕录像转换GIF解决方案
  2. 曼昆宏观经济学第8版课后答案
  3. python的concatetate_Python tensorflow.truncated_normal_initializer方法代碼示例
  4. [转]Win7 任务栏缩略图大小、显示速度及单击切换更改
  5. 20 kubeadm高可用部署1.23以上k8s版本
  6. ArcGis 打开CAD文件的几种方法
  7. java不用poi怎么读取excel,java-无法使用Apache POI读取Excel
  8. 微商公社新兵连第三天
  9. android局域网udp视频对讲,Android基于UDP语音对讲系列(一)
  10. python风控建模实战lendingClub