InfoQ China刊了J.B. Rainsberger的一篇文章题为
J.B.对集成测试作了定义,认为集成测试是
写道
在我的理解中,集成测试表示那些测试结果(成功或失败)依赖于超过一个重要行为的实现正确性的测试。
简单可以理解为集成测试是依赖于其他(多于一个)测试的测试。
J.B.为什么认为集成测试是一个因为,他的观点是:
1.开发人员认为某一缺陷只能通过集成测试发现,因此认为应该integrate everywhere,要写大量集成测试。
2.J.B.列举一个中型web app的集成测试大概包含至少1000个集成测试,开发人员容易产生抵触情绪。
3.J.B.以两个测试进行对比,一个是对象测试(我的理解是单元测试),另一个则是集成测试,对象测试花费6秒,集成测试花费1分钟,而开发人员保持1分钟屏幕关注时间是不可能的,一分钟当中开发人员的注意力分散从而导致过多开销和低效,J.B.称之为集成测试的“隐含成本”。
关于观点1,根据我的测试经历,集成测试的目标应该关注于“集成可运行”上,比如一个集成涉及BO1, BO2,那么集成测试关注的应该是BO1+BO2得到的测试结果是可信的,而且测试结果通常不涉及太多可能性测试,比如通过不同的入口来测试集成结果的准确性,这样成本的确很高,而且会跟BO1,BO2的单元测试产生重叠,这也是一些集成测试采用MOCK测试的原因。
关于观点2,如果集成测试采用我说的那种“通过不同的入口来测试集成结果的准确性”的话,的确会发生抵触情况,因为集成测试的测试周期相对较长,内聚性不强,需要耗费很多精力,比如有可能涉及很多条件分支。
关于观点3,J.B.这里是拿集成测试和单元测试做比较,固然这是一个视角,但是这个视角是否全面我认为有失偏颇,拿一个JavaWebApp作例,对Service类做测试比较容易,如果把Action看作集成测试的话,Action测试的难度要较前者高,因而往往Action的测试有可能会被忽略掉,但是问题的发生在手工调试Action这一环节,比如出现Service中出现空指针,如果对Action做测试的话,问题有可能会在测试中发现并解决,而不是在对整个app进行编译和启动、运行、打开浏览器、输入用户名、密码,手工集成测试之后才发现问题,而这一系列过程所花的时间完全不止1分钟这么短,有可能是5分钟——完全可以来JavaEye灌水了!
如果把集成测试都累积做完之后,整个app会形成一个很完整的测试体系,再通过持续化集成工具来辅助实现集成自动化,专门拉到一台测试服务器做集成,J.B.说的那个1分钟问题其实可以完全避免,因此我认为J.B.的阴谋论有些牵强。当然,集成测试必须建立在单元测试之上,这点毋庸置疑,集成测试的重点应该根据项目实情做出策略上调整,比如对集成目标、深度的制定上做修正。
分享到:
相关推荐
软件集成测试报告 软件集成测试报告是软件测试中的一种重要测试类型,它的主要目的是验证软件系统的各个组件之间的集成是否正确,确保软件系统的正确性、完整性和可靠性。本报告的编制是为了记录软件集成测试的过程...
### 系统集成测试报告知识点解析 #### 一、系统集成测试报告概述 **系统集成测试**是一项重要的软件质量保证活动,旨在验证不同模块或组件之间的集成是否符合预期的功能和性能要求。它不仅关注单个模块的行为,还...
根据提供的集成测试报告模板,我们可以总结出一系列关于集成测试的关键知识点。这些知识点涵盖了从测试计划、执行、到结果分析的全过程。 ### 集成测试报告模板知识点详解 #### 一、目的 - **概述**:简要描述文档...
集成测试案例模板 集成测试案例模板是软件测试中的一种重要测试方法,旨在验证软件系统的各个组件之间的集成是否正确。该模板提供了一个基本的集成测试用例模板,涵盖测试项目、测试主控、六个模块的集成测试等内容...
集成测试和用例 集成测试是软件测试中的一种测试方法,旨在验证软件系统的各个组件之间的集成性和交互性。该测试方法的主要目的是为了确保软件系统的各个组件能够正确地集成和协作,从而确保软件系统的整体功能和...
### 软件测试——集成测试指南 #### 1. 概述 集成测试作为软件开发生命周期中的关键环节之一,对于确保各个模块之间能够协同工作至关重要。在本指南中,我们将详细介绍集成测试的目的、范围、流程以及所需遵循的...
集成测试是一种软件开发过程中的关键环节,其目的是在系统组件之间发现并修复接口错误,确保各个模块协同工作。本详细PPT围绕集成测试的主题展开,深入解析了集成测试的原理、目的、策略以及最佳实践,同时也涉及了...
### 集成测试方法及策略 #### 一、集成测试概述 集成测试是软件测试的一个重要阶段,它关注的是不同模块之间的接口以及这些模块如何协同工作。在软件开发过程中,通常先进行单元测试,确保每个独立的模块都能正常...
在V模型开发中,Tessy主要应用在单元测试和集成测试阶段。单元测试通过运行代码检测出函数中错误,比如算法错误、接口问题等;集成测试则在单元测试的基础上验证单元之间接口的正确性。基于越早发现bug开发成本越低...
集成测试计划是软件开发过程中的一个重要环节,它旨在检测不同组件或模块在组合时的相互作用,确保系统作为一个整体能够正确运行。以下是对集成测试计划的详细解释: 1. **编写目的**:集成测试计划的主要目的是...
集成测试是软件开发过程中的关键环节,它在单元测试之后,系统测试之前进行,目的是发现模块间的接口问题,确保各个组件能协同工作。本资源提供的“集成测试方案”和“集成测试报告”的模板,旨在帮助开发者和测试...
### 软件集成测试培训大纲精要 #### 第一章:集成自动化测试介绍 集成自动化测试是软件测试领域中的一个重要组成部分,它关注于不同软件模块间的交互与整合,确保整个系统按照预期协同工作。本章节旨在介绍集成...
集成测试是软件开发过程中的关键环节,其目的是在系统各个组件或模块被组合在一起时,检查它们能否协同工作,确保不同模块之间的交互无误。在这个过程中,设计有效的集成测试用例至关重要,因为这有助于发现早期集成...
试结果分析及结论4.1 测试结果分析在系统集成测试阶段,我们对各个模块进行了深入的集成测试,旨在确保所有组件能够协同工作,提供一个功能完整、性能稳定的应用系统。通过对XXX应用项目的测试,我们收集了详尽的...
### 集成测试详解 #### 一、集成测试的概述 ##### 1.1 集成测试的定义 集成测试(Integration Testing),又称组装测试或联合测试,是在单元测试的基础上,按照软件设计要求将所有模块按照某种策略组装成为子系统...
【系统集成测试验收方案】 系统集成测试验收方案是软件开发过程中的关键环节,它确保了各个模块在集成后能够协同工作,满足业务需求和性能标准。以下是对该方案的详细解读: 1. **文档说明** - **文档目的**:本...
集成测试是软件开发过程中的关键环节,它在单元测试之后,系统测试之前进行,目的是尽早发现模块间的接口问题,确保各个组件能够协同工作。这份"集成测试文档"显然是为了帮助开发者和测试工程师更好地理解和实施集成...