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.的阴谋论有些牵强。当然,集成测试必须建立在单元测试之上,这点毋庸置疑,集成测试的重点应该根据项目实情做出策略上调整,比如对集成目标、深度的制定上做修正。
分享到:
相关推荐
软件集成测试报告 软件集成测试报告是软件测试中的一种重要测试类型,它的主要目的是验证软件系统的各个组件之间的集成是否正确,确保软件系统的正确性、完整性和可靠性。本报告的编制是为了记录软件集成测试的过程...
### 系统集成测试报告知识点解析 #### 一、系统集成测试报告概述 **系统集成测试**是一项重要的软件质量保证活动,旨在验证不同模块或组件之间的集成是否符合预期的功能和性能要求。它不仅关注单个模块的行为,还...
制定集成测试计划是制定测试的计划和策略,设计集成测试用例是设计测试的用例和步骤,实施集成测试是执行测试的过程,评估集成测试是对测试结果的评估和总结。 3. 集成测试的需求获取:包括对集成工作版本的分析、...
系统集成测试计划实例 在软件开发中,系统集成测试是一个非常重要的步骤,它可以确保系统各个组件之间的正确集成和协作。本文将以一个真实的系统为例,介绍集成测试计划编写的要点和方法。 1. 修订历史记录 在...
根据提供的集成测试报告模板,我们可以总结出一系列关于集成测试的关键知识点。这些知识点涵盖了从测试计划、执行、到结果分析的全过程。 ### 集成测试报告模板知识点详解 #### 一、目的 - **概述**:简要描述文档...
**集成测试报告** 1. **目的** 集成测试是软件开发过程中一个至关重要的阶段,其目的是在系统组件或模块被组合在一起时发现并修复接口错误、数据流问题和依赖性问题。通过集成测试,可以确保各个模块在集成后能够...
集成测试案例模板 集成测试案例模板是软件测试中的一种重要测试方法,旨在验证软件系统的各个组件之间的集成是否正确。该模板提供了一个基本的集成测试用例模板,涵盖测试项目、测试主控、六个模块的集成测试等内容...
嵌入式软件自身软硬件结合的复杂性及其质量的重要性,造成其软件测试的特殊性,就是在执行正常软件测试的单元测试、集成测试、系统测试的过程中,还要考虑到软件与硬件的兼容问题,即需要进行软硬件集成测试。...
- **测试范围**:明确指出测试的不同阶段(如单元测试、集成测试、系统测试)以及针对的测试类型(如功能测试、性能测试)。同时,还需要列出将被测试的功能和性能指标以及不会被测试的部分,并说明任何可能影响测试...
在V模型开发中,Tessy主要应用在单元测试和集成测试阶段。单元测试通过运行代码检测出函数中错误,比如算法错误、接口问题等;集成测试则在单元测试的基础上验证单元之间接口的正确性。基于越早发现bug开发成本越低...
单元测试是测试一个代码单元的行为,而集成测试是测试多个组件之间的集成。在 Spring Boot 中,我们可以使用 JUnit 和 Hamcrest 框架来进行单元测试,然后使用@SpringBootTest 注解来标记集成测试。 本文详细介绍了...
### 集成测试概述 集成测试是一种软件测试方法,主要关注的是软件模块之间的相互作用。在软件开发过程中,经过单元测试验证过的各个模块需要被整合在一起形成一个完整的系统或子系统,这时就需要进行集成测试来确保...
该集成测试报告是关于移动办公的集成测试报告,具体的实际测试报告还是要与项目结合起来
集成测试计划是软件开发过程中的一个重要环节,它旨在检测不同组件或模块在组合时的相互作用,确保系统作为一个整体能够正确运行。以下是对集成测试计划的详细解释: 1. **编写目的**:集成测试计划的主要目的是...
集成测试是软件开发过程中的关键环节,它在单元测试之后,系统测试之前进行,目的是发现模块间的接口问题,确保各个组件能协同工作。本资源提供的“集成测试方案”和“集成测试报告”的模板,旨在帮助开发者和测试...
### 软件测试基础之集成测试:深入解析与实践 #### 集成测试概述 集成测试,作为软件测试的重要组成部分,是在单元测试完成后,将通过单元测试的各个模块按照设计时确定的架构和接口连接起来进行的测试。这个阶段...