测试的层次化

在我们工作和生活的场景中,解决复杂的问题,一般是通过分解分层的方式,将复杂的问题化解为简单的、独立的小问题去解决。以下是比较明显的几个:
1)网络的七层协议:把七层做在一层想想有多复杂
2)网站的数据存储、业务逻辑、UI展示等横向分层;大规模业务的纵向分割
3)电脑的硬件、操作系统、应用软件等

测试看似简单、入门容易,做好则很困难。 困难主要是要求测试人员知识的广度、深度以及逻辑分析能力、快速学习的能力、解决问题的能力;复杂是指测试工作除了项目本身的需求外,还有很多隐式的需求需要测试人员去发掘并在测试过程中去关注,比如:行业的规范、友商的实现、针对不同类型客户的差异、流行元素的趋势等等。

为了完成一个产品的测试,业界也是采用各种不同的方式、通过不同的角度来划分测试层次、组织测试活动。

下面从分层的角度对几个典型的测试组织方式进行说明:

经典的开发测试模型
测试的层次化_第1张图片
W模型

如上图所示,在经典的W模型中,根据产品的开发流程,将测试分为单元、集成、系统、验收测试:
测试与开发同步启动,除了产品需求,测试前期进行相关的准备工作
单元测试关注功能模块内部的实现,由开发执行
集成测试关注功能模块之间的配合, 由开发或测试执行
系统测试关注产品作为一个整体对客户、行业的满足情况, 由测试执行
验收测试一般由客户进行,验证产品是否满足其需求。

此模型:
1. 针对开发的不同阶段进行测试组织
2. 单元、集成、系统测试由产品开发、测试团队完成,而验收测试一般由用户自行完成
3. 各测试活动测试的对象不同,关注点也不同,基本没有重复性的投入,最终产品质量取决于每个环节工作质量的高低;
4. 各测试活动顺序进行,适合于对时间不敏感的项目;

移动/互联网行业的理想测试方式
测试的层次化_第2张图片
自动化测试金字塔模型

单元、组件、接口、UI均自动化测试,越底层自动化比例越高;
手工主要进行探索式测试、性能测试等专项测试;

此模型:
1)自动化比例要求高,产品要求快速验证、快速上线;
2)自动化用例是保证产品快速重构的基础;
2)测试人员具备与开发人员类似的知识体系;为了做好单元、集成等测试开发人员也要具备测试思维
3)开发保证基础代码的质量,测试保证端到端的质量;
4)灰度发布也是测试的一种形式

嵌入式软件采用的模式:平台、产品、鉴定

平台关注各产品的通用功能,平台软件各产品共用;
产品关注驱动、对应的市场应用;
鉴定独立于平台和产品,从质量的角度发现缺陷,以第三方的视角评判产品质量

此模型:
1. 针对不同的测试对象(平台、产品),设置不同的测试活动
2. 平台、产品、鉴定之间是有重复投入的,要考虑投入产出比
3. 鉴定测试在产品质量提升过程中,有一定的阶段性意义,产品质量稳定后,其存在性价值有疑问
4. 鉴定、产品、平台形成问题反馈链,推动测试质量不断提升


测试组织形式无所谓好坏,适应公司的开发方式、产品发布节奏,能逐步提升测试的工作质量,继而能够提升产品的质量,就是好的测试组织形式。

你可能感兴趣的:(测试的层次化)