什么是集成测试
测试关注的重点
(2)全局数据结构是否有问题,会不会被异常修改。
(2)一个模块的功能是否会对另一个模块的功能产生不利的影响。
(3)单个模块的误差积累起来,是否会放大,从而达到不可接受的程度。
集成测试的三个级别
2、子系统内集成测试。
3、子系统间集成测试。
集成测试的模式
2、非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量少。
3、渐增式可以较早地发现接口间的错误,非渐增式到最后组装的时候才发现。
4、渐增式有利于拍错,发生错误往往和最近新加入的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。
5、渐增式比较彻底,已测试的模块和新的模块在测试。
6、非渐增式开始可并行测试所有模块,能充分利用人力,对测试大型软件很有意义。
集成测试策略
2、自顶向下集成(Top-Down Integration)。
3、自底向上集成(Bottom-up Integration)。
2、基干集成(Backbone Integration)。
3、分层集成(Layers Integration)。
4、基于功能的集成(Function-Based Integration)。
5、基于进度的集成(Schedule-Based Integration)
(2)目的:在最短的时间内把系统组装起来,并且通过最少的测试来验证整个系统。
(3)策略:在大爆炸这种集成方法中,首先需要对每个模块进行单元测试,然后把所有单元组装到一起进行测试,最终得到要求的软件系统。
(4)优点:
- 在有利的情况下,大爆炸集成可以迅速完成集成测试,并且只要极少数的驱动单元和桩单元(如果需要的话)。
- 需要的测试用例最少。
- 方法比较简单。
- 可以并行开展,对人力、物力的资源利用率较高。
- 这种在单元测试的基础上,将所有组件一次性进行组装,不考虑组件之间的依赖性,虽然简单,但是由于程序中不可避免的存在模块间接口、全局数据结构等方面的问题,所以一次试运行成功的可能性并不大。
- 在发现错误的时候,问题定位和修改都比较困难。
- 即使被测系统能够被一次性集成,但还是会有很多接口问题可以躲过集成测试而进入到系统测试。
- 一个维护性项目(或者功能增强型项目),以前的产品已经很稳定,并且新增的项目只有少数几个组件被增加或者修改。
- 被测系统比较小,并且它的每个组件都进行了充分的单元测试。
自顶向下集成(Top-Down Integration)
(2)目的:从顶层开始控制,采用和设计一样的思路对系统进行测试,以验证系统的接口稳定性。
(3)策略:
- 以主模块为所测模块兼驱动模块,所有直属于主模块下的下属模块全部用桩单元代替,对主模块进行测试。
- 采用深度优先(Depth-First)或者广度优先(Breath-First)的策略,用实际模块替换相应桩模块,再用桩模块代替它们的直接下属模块,与已经测试的模块组成新的子系统或者系统。
- 自顶向下这种集成方式,在测试过程中较早的验证了主要的控制和判断点,如果主要控制有问题,尽早发现它能够减少以后的返工,所以这是十分必要的。
- 如果采用深度优先的策略,就可以首先实现和验证一个完整的软件功能,可以先对逻辑输入的分支进行组装和测试,检查和客服潜藏的错误和缺陷,验证功能的正确性,为之后对主要加工分支的组装和测试提供了保证。
- 功能的可行性较早得到了证实。
- 最多只需要一个驱动模块,减少了驱动模块的费用开支,也减轻了后期对驱动模块的维护。
- 由于该方法和设计的思路是一样的,所以可以和设计并行开展,如果目标环境或者设计需要改变,这种方式也可以灵活的适应。
- 支持故障隔离。例如:A模块测试正常,但是假如B模块之后,出现问题,那么可以确定,要么就是B模块有问题,要么就是A模块和B模块之间的接口有问题。
- 桩在每个测试中都必须提供,所以桩的开发和维护是该策略的最大成本。
- 底层组件中的一个无法预计的需要可能会导致许多顶层组件的修改,这破坏了部分先前构造的测试包。
- 底层组件行为的验证被推迟了。
- 随着底层模块的不断增加,系统越来越复杂,导致底层模块的测试肯那个不够充分,尤其是那些被重用的模块。
- 产品控制结构比较清晰和稳定。
- 产品的高层借口比较稳定,底层变化比较频繁。
- 产品的控制模块可能存在技术风险,需要较早被验证。
- 希望尽早能够看到产品的系统功能行为。
(1)概念:自底向上集成(Bottom-up Integration)方式是从程序模块结构的最底层的模块开始组装和测试,因为模块是自底向上进行测试的,对于一个给定层次的模块,它的子模块已经组装并测试完成,所以不再需要桩模块。需要从子模块中得到的信息可以直接运行子模块得到。
(2)目的:从具有最小依赖性的底层组件开始按照依赖关系树的结构,逐层向上集成,以验证整个系统的稳定性。
(3)策略:
- 起始于系统的最底层模块,也可以把多个子模块合并到一起进行测试。
- 使用驱动模块对选定的模块进行测试。
- 用实际模块代替驱动模块,与它已经测试过的子模块组装成为一个更大的模块组进行测试。
- 重复上面的步骤,直到系统最顶层模块加入到已测系统中。
- 允许对底层模块行为的早期验证。
- 在工作的最初可以采用并行进行集成,比自顶向下的测试效率高。
- 由于驱动模块是额外编写的,而不是实际的模块,所以对实际被测模块的可测试性要求比自顶向下的测试策略要小。
- 减少了桩模块的工作量。
- 故障隔离。
- 驱动模块的开发工作量比较大。
- 对高层的验证被推迟到最后,设计上的错误不能尽早的被发现,尤其对于那些控制机构在整个体系中比较关键的产品。
- 随着集成到了顶层,整个系统将变得越来越复杂,并且对于底层的一些异常很难覆盖。
- 采用契约式开发(Design by Contract)的产品。
- 底层接口比较稳定的产品。
- 高层接口变化比较频繁的产品。
- 底层模块较早被完成的产品。
三明治集成(Sandwich Integration)
(2)目的:综合自顶向下的集成测试策略和自底向上的集成测试策略的优点。
(3)策略:
- 首先对目标层上面的一层采用自顶向下的测试策略,对主模块A进行测试,对A调用的子模块(目标层)用桩单元代替。
- 其次对目标层下面的一层采用自底向上的测试策略。
- 最后将三层集成在一起。
(5)缺点:中间层在被集成前测试不充分。
(6)适用范围:大部分软件开发项目都可以使用这种集成策略。
基干集成(Backbone Integration)
(2)目的:结合自顶向下,自底向上和大爆炸集成的元素,以验证紧密耦合的子系统间的互操作性。
(3)策略:
- 对基干中的每个模块进行单独的充分的测试,必要时使用驱动和桩。
- 对基干中所有的模块进行大爆炸集成,形成基干子系统,并使用一个驱动模块检查经过大爆炸的基干。
- 对应用的控制子系统进行自顶向下的集成。
- 把基干和控制子系统进行集成,重新构造控制子系统。
- 对个应用子系统采用自底向上的集成策略。
- 集成基干子系统,控制子系统和各应用子系统形成整个系统。
(5)缺点:
- 必须对系统的结构和相互依存性进行仔细的分析。
- 必须开发桩和驱动模块,并且由于被测系统的复杂性导致这些模块开发工作量的加大,可以通过复用技术在一定程度上降低成本。
- 由于局部采用了大爆炸的策略,所以有些接口可能测试不完整。
- 具有多层协议的嵌入式系统。
- 操作系统产品
分层集成(Layers Integration)
(2)目的:通过增量式集成的方法验证一个具有层次性体系结构的应用系统的稳定性和互操作性。
(3)策略:
- 划分系统的层次。
- 确定每个层次内部的集成策略,该策略可以使用大爆炸集成,自顶向下集成,自底向上集成和三明治集成中的任何一种策略,一般对于顶层可能还有第二层的内部采用自顶向下的集成策略;对于中间采用自底向上的集成策略,对于底层主要采用进行单独测试。
- 确定层次间的集成策略,该策略可以使用大爆炸集成,自顶向下集成,自底向上集成和三明治集成中的任何一种策略。
(5)适用范围:有明显线性层次关系的产品系统。
基于功能的集成(Function-Based Integration)
(2)目的:采用增值的方法,尽早的验证系统关键功能。
(3)策略:
- 1.确定功能的优先级别。
- 2.分析优先级别最高的功能路径,把该路径上的所有模块集成到一起,必要时使用桩模块和单元模块。
- 3.增加一个关键功能,继续上面一个步骤,直到所有模块都被集成到被测系统中。
- 采用该方法,可以尽快的看到关键功能的实现,并验证关键功能的正确性。
- 由于该方法在验证某个功能的时候,可能会加入多个模块,因此在进度上,比自顶向下和自底向上还有三明治的集成策略要快一点。
- 接口的覆盖使用的测试用例比较少。
- 可以减少驱动模块的开发
- 对于复杂的系统,功能之间的相互关联性可能是错综复杂并难以分析的。
- 对有些接口的测试不充分,会丢失许多接口错误。
- 一些初始的集成需要使用桩模块。
- 可能会有比较大的冗余测试。
- 关键功能具有较大风险的产品。
- 技术探索性的项目,其功能的实现远比质量更关键。
- 对于功能的实现没有把握的产品。
基于进度的集成(Schedule-Based Integration)
为了完成进度,有可能会牺牲质量,基于进度的集成就是在兼顾质量和进度两者之间寻找了一个均衡点。
(2)目的:尽可能早的进行集成测试,提高开发与集成的并行性,有效的缩短进度。
(3)策略:这个集成的策略就是把最早可获得的代码拿来激励进行集成,必要的时候开发桩模块和驱动模块,子啊最大程度上保持与开发的并行性,从而缩短了项目集成的时间。
(4)优点:
- 具有比较高的并行度。
- 有效缩短项目开发的进度。
- 可能最早拿到的模块之间缺乏整体性,只能进行独立的集成,导致许多接口必须等到后期才能验证,但此时系统可能已经很复杂,往往无法发现有效的接口问题。
- 桩模块和驱动模块的工作量可能会变得很庞大。
- 由于进度的原因,模块可能很不稳定且会不断变动,导致测试的重复和浪费。
集成测试策略
1、是采用何种系统组装方法来进行组装测试;
2、组装测试过程中连接各个模块的顺序;
3、模块代码编制和测试进度是否与组装测试的顺序一致
4、测试过程中是否需要专门的硬件设备;
集成测试完成标准
2、修正了所发现的错误;
3、测试结果通过了专门小组的评审。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
文章来源:https://www.toymoban.com/news/detail-555423.html
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 文章来源地址https://www.toymoban.com/news/detail-555423.html
到了这里,关于什么是集成测试来看这边的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!