码歌老薛聊聊软件测试模型(V模型、W模型、H模型、X模型)

书接上文,接下来我们聊聊软件测试模型。

图文均手绘,转载请注明出处:https://www.jianshu.com/p/2c6bc748ac6d

二、软件测试和软件工程

软件测试和软件工程息息相关,软件测试是软件工程组成不可缺少的一部分。

在软件工程、项目管理、质量管理得到规范化的企业应用中,软件测试侧能得以顺利的展开,发挥价值才会最大。

要关注软件工程、质量管理、配置管理和软件测试的关系,在不同的模式下,如何开展软件测试呢?

2.1 测试模型

随着软件测试过程的管理和发展,测试人员通过大量的实践,从而总结出了不少软件测试的模型,比如V模型,W模型,H模型等。

2.2 测试模型分类

2.2.1 V模型

2.2.1.1 图示:

image

2.2.1.2 结论

  • 整个V模型分为需求分析->概要设计->详细设计->编码->单元测试->集成测试->系统测试->验收测试。

  • V模型的整个过程就是从左至右,描述了开发过程以及测试行为,明确标注了测试过程中不同的级别。

  • 很清楚的描述了测试和开发的各个阶段的对应关系。

  • 把软件测试作为开发的最后一项,导致前期产生的错误可能后期才能看到。后期的改错成本增加。

  • 可以在每个阶段进行迭代,将该阶段的错误竟可能多的进行排查。

2.2.1.3 每个过程的解析

  • 需求分析
* 1: 确认用户的需求。
* 2: 确定软件的最终形态。
* 3: 确保分析师能够明确知晓客户所需。
* 4: 确切编写完整的需求规格说明书。
  • 概要设计
主要是架构的实现,指搭建架构、表述各模块功能、模块接口连接和数据传递的实现等项事务。
  • 详细设计
对概要设计中表述的各模块进行深入分析,对各模块组合进行分析等,这
一阶段要求达到伪代码级别,已经把程序的具体实现的功能,现象等描述
出来。其中需要包含数据库设计说明。
  • 编码
按照详细设计好的模块功能表,或者定义好的功能接口等,开发人员编写出实际的代码。
  • 单元测试
image
* 1:单元测试也称之为模块测试,针对软件设计中的最小单元进行测试。
* 2:通过程序内部结构,设计出测试用例。要确保多个模块可以平行进行测试。
* 3:为的是确保各单元模块被正确的编译,单元的具体划分按不同的单位与不同的软件有不同
* 4:比如Java中的类,或者方法;C中的一个函数;图形化界面中的一个窗口或者菜单。
  • 集成测试
image
* 1:集成测试也称之为组装测试,在单元测试的基础上,将所有程序模块进行有序、递增的测试。
* 2:主要测试各模块间组合后的功能实现情况,以及模块接口连接的成功与否,数据传递的正确性等。
* 3:检查软件单位之间的接口是否正确。
* 4:根据集成测试计划,一边将模块或其他软件单位组合成系统,一边运
行该系统,以分析所组成的系统是否正确,各组成部分是否合拍。
  • 系统测试
* 1:将整个软件系统看做是一个整体进行测试,对于软件的功能、性能、
    以及软件所运行的软硬件环境进行测试。
* 2:系统测试在系统集成完毕之后进行测试。
* 3:分阶段:
         前期--> 重点是功能性测试
         后期--> 重点是性能测试以及在不同软硬件环境下的兼容性等问题。
  • 验收测试
image

验收测试就是用户在拿到软件之后,在使用现场,根据用户需求以及规格说明书来做的相应设置。以确保软件达到符合效果。包括确认测试、安全可靠性测试、易用性测试、课扩充性测试、兼容性测试、资源占用率测试等,它是项目上线全的最后一道防火墙。

α测试:

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

注意:

主要查看有没有功能缺失或系统问题。主要是针对在开发环境下测试。

β测试:

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

注意:

主要查看用户对于软件的外观、使用方便等的反应。主要针对的是实际环境或者模拟的真实环境测试。

γ测试:

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

注意:

经过多次测试,成为正式发布的候选版本。叫做gamma。(现在叫做RC-Release Candidate)

2.2.1.4 优缺点分析

模型 优点 缺点
V模型 ①:包含了底层测试(单元测试)和高层测试(系统测试) ②清楚的标注了开发和测试的各个阶段以及对应关系,分工明确,便于项目的把控以及追踪 ③:V模型是整个测试模型中很重要的一个模型,其它模型都是基于该模型的。 ①:模型本质上还是线性模型,测试在编码之后,导致错误不能及时发现和修改,增加后期修改成本。 ②:对于需求阶段的调研,很难完全确定下来,导致后期阶段由于需求返工,导致成本增加以及模型灵活性不够。

改进方案:在模型的每个阶段进行小的快速的迭代工作。

2.2.2 W模型

2.2.2.1 图示

image

2.2.2.2 结论:

* 1:W模型也称之为双V模型,蓝色是开发V模型,绿色是测试V模型。
* 2:测试是伴随着整个软件的开发周期,并且测试的对象不仅仅是程序,需求和设计同样也需要测试。
* 3: 对于人员要求比较高,所以一般大中型公司会选择该模型。

2.2.2.3 优缺点分析

模型 优点 缺点
W模型 ①:W模型伴随整个软件开发周期,需求和编码同样需要测试。 ②:能够更早介入测试,发现初期的缺陷,那么通过更加低的成本进行缺陷修复。 ③:同样是分阶段工作,能够更好的控制项目过程。 ①:软件开发和软件测试依然是线性关系,依然无法支持迭代和需求变更的调整。 ②:对于当前很多项目,如果整个过程没有产生文档,那么无法使用W模型。 ③:对于技术的需求和设计的测试要求度很高,实践起来比较困难。

2.2.3 H模型

2.2.3.1 图示:

image

2.2.3.2 执行过程:

测试流程:
* 1:测试准备:所有测试执行活动的准备(比如用例、测试文档等),判断是否进入到测试就绪点。
* 2:测试就绪点:测试准入准则,是否可以执行测试的条件。
* 3:测试执行:具体的执行测试的程序。
其它流程:
* 1:具体开发中的流程,如:程序设计、小型迭代。

2.2.3.3 优缺点分析:

模型 优点 缺点
H模型 ①:测试H模型中揭露了测试和其它流程是可以并行的。 ②:软件测试完全独立,贯穿整个周期,拥有很强的灵活性。 ③:软件测试活动可以很早开始,很早执行,减低修改的成本增加 ④:整个软件测试活动也可以分阶段、分次序进行执行和迭代。 ①:模型的灵活性导致必须定义很清晰的规则和管理制度,不然不方便后期的管理和控制。 ②:对于技能要求很高,要确定每个模块的迭代规模以及测试就绪点分析,就绪点分析不够好对于后期的测试执行就是个大坑。 ③:对于整体项目组的人员要求很高,需要很强的团队协作能力以及高效的工作,某个人的技能不足,可能导致项目无法有效进行。

2.2.4 X模型

2.2.4.1 图示:

image

2.2.4.2 执行过程:

* 1: 先针对单独的程序运行片段进行互相分离的编码和测试
* 2: 编码之后进行频繁的交接,集成最终可执行的程序
* 3: 对于集成的程序,然后不断进行测试
* 4: 对于通过集成测试的成平进行封板提价给用户
* 5: X模型还定位了探索性测试

2.2.4.3 优缺点分析:

模型 优点 缺点
X模型 定义了探索性测试,可以发现计划之外的更多的软件错误 ①:对于测试人员的技能要求较高。 ②:不断的小进行编码,测试等迭代可能造成成本增加。

总结

在实际项目中,合理利用模型优点。一般公司优先采用V和W模型,H和X模型对比用的比较少,所有的测试模型都需要和开发紧密结合,保证按时、保质、保量的完成预定计划。

你可能感兴趣的:(码歌老薛聊聊软件测试模型(V模型、W模型、H模型、X模型))