什么是系统集成测试 (SIT) 示例
什么是系统集成测试?
系统集成测试被定义为在集成硬件和软件环境中进行的一种软件测试类型,用于验证整个系统的行为。它是在完整的、集成的系统上进行的测试,以评估系统是否符合其规定的要求。
系统集成测试 (SIT) 用于验证软件系统模块之间的交互。它涉及验证软件需求规范/数据和软件设计文档中规定的高层和低层软件需求。它还验证软件系统与其他系统的共存性,并测试软件应用程序模块之间的接口。在这种类型的测试中,模块首先单独测试,然后组合成一个系统。例如,软件和/或硬件组件被组合并逐步测试,直到整个系统被集成。
为什么进行系统集成测试?
在软件工程中,进行系统集成测试是因为:
- 它有助于及早发现缺陷
- 可以更早地获得关于单个模块可接受性的反馈
- 缺陷修复的计划灵活,可以与开发重叠
- 正确的数据流
- 正确的控制流
- 正确的时序
- 正确的内存使用
- 符合软件要求
如何进行系统集成测试
它是一种系统的技术,用于构建程序结构,同时进行测试以发现与接口相关的错误。
所有模块都提前集成,整个程序作为一个整体进行测试。但在这一过程中,可能会遇到一系列错误。
纠正此类错误很困难,因为整个程序的巨大扩展使得隔离原因变得复杂。一旦这些错误得到纠正和修正,新的错误就会出现,这个过程会无缝地持续下去,形成一个无限循环。为了避免这种情况,采用了另一种方法,即增量集成。我们将在本教程后面详细介绍增量方法。
有一些增量方法,例如集成测试是根据目标处理器在系统上进行的。使用的方法是黑盒测试。可以使用自下而上或自上而下的集成。
测试用例仅使用高层软件需求定义。
软件集成也可以主要在宿主环境中实现,而特定于目标环境的单元继续在宿主中模拟。为了确认,有必要在目标环境中重复测试。
此级别的确认测试将识别特定于环境的问题,例如内存分配和释放中的错误。在宿主环境中进行软件集成的实用性将取决于有多少特定于目标的功能。对于某些嵌入式系统,与目标环境的耦合将非常紧密,使得在宿主环境中进行软件集成不切实际。
大型软件开发将把软件集成划分为多个级别。软件集成的较低级别可以主要基于宿主环境,而软件集成的后续级别将越来越依赖于目标环境。
注意:如果仅测试软件,则称为软件软件集成测试 [SSIT];如果同时测试硬件和软件,则称为硬件软件集成测试 [HSIT]。
集成测试的进入和退出标准
通常在进行集成测试时,使用 ETVX(进入标准、任务、验证和退出标准)策略。
入口标准
- 完成单元测试
输入
- 软件需求数据
- 软件设计文档
- 软件验证计划
- 软件集成文档
活动
- 根据高层和低层需求创建测试用例和程序
- 将实现通用功能的低层模块构建组合起来
- 开发测试线束
- 测试构建
- 一旦测试通过,构建将与其他构建组合并进行测试,直到系统作为一个整体集成。
- 在基于目标处理器的平台上重新执行所有测试,并获取结果
出口标准
- 软件模块在目标硬件上成功集成
- 软件根据指定要求正确执行
输出
- 集成测试报告
- 软件测试用例和程序 [SVCP]。
硬件软件集成测试
硬件软件集成测试是在目标硬件环境中测试计算机软件组件 (CSC) 高层功能的过程。硬件/软件集成测试的目标是测试在硬件组件上集成的已开发软件的行为。
基于需求的硬件-软件集成测试
基于需求的硬件/软件集成测试的目的是确保目标计算机中的软件将满足高层需求。此测试方法揭示的典型错误包括:
- 硬件/软件接口错误
- 违反软件分区。
- 内置测试无法检测故障
- 对硬件故障的响应不正确
- 由于时序、瞬态输入负载和输入电源瞬变造成的错误
- 反馈回路行为不正确
- 内存管理硬件的控制不正确或不当
- 数据总线争用问题
- 验证现场可加载软件兼容性和正确性机制的操作不正确
硬件软件集成处理高层需求的验证。此级别的所有测试都在目标硬件上进行。
- 黑盒测试是此测试级别使用的主要测试方法。
- 仅根据高层需求定义测试用例
- 测试必须在生产标准硬件(在目标上)上执行
设计硬件/软件集成测试用例时要考虑的事项
- 软件正确获取所有数据
- 硬件到软件的数据缩放和范围符合预期
- 数据从软件到硬件的正确输出
- 符合规范的数据(正常范围)
- 超出规范的数据(异常范围)
- 边界数据
- 中断处理
- 时序
- 正确的内存使用(寻址、重叠等)
- 状态转换
注意:对于中断测试,所有中断将从初始请求到完全服务再到完成独立验证。测试用例将专门设计以充分测试中断。
软件到软件集成测试
它是在宿主/目标计算机环境中运行的计算机软件组件的测试
环境,同时模拟整个系统 [其他 CSC],以及高级功能。
它侧重于 CSC 在模拟宿主/目标环境中的行为。软件集成使用的方法可以是增量方法(自上而下、自下而上或两者的组合)。
增量方法
增量测试是一种集成测试方法。在这种测试方法中,您首先单独测试软件的每个模块,然后通过将其他模块附加到它,然后另一个模块,依此类推地继续测试。
增量集成与大爆炸方法相反。程序以小段构建和测试,其中错误更容易隔离和纠正。接口更有可能得到完整测试,并且可以应用系统的测试方法。
增量测试有两种类型
- 自上而下的方法
- 自下而上的方法
自上而下的方法
在这种方法中,个人从仅测试用户界面开始,底层功能由存根模拟,然后向下移动,集成越来越低的层,如下图所示。
- 从主控制模块开始,模块通过向下移动控制层次结构进行集成
- 主控制模块的子模块以广度优先或深度优先的方式合并到结构中。
- 深度优先集成集成了结构主控制路径上的所有模块,如下图所示
模块集成过程按以下方式进行
- 主控制模块用作测试驱动程序,所有直接从属于主控制模块的模块都由存根替代。
- 根据所选方法(广度优先或深度优先),从属存根一次一个地替换为实际模块。
- 每次集成模块时都会执行测试。
- 每完成一组测试,另一个存根就会被一个真正的模块替换
- 为了确保没有引入新错误,可能会执行回归测试。
该过程从步骤2开始,直到整个程序结构构建完成。自上而下策略听起来相对简单,但在实践中会出现物流问题。
这些问题最常见的情况是,需要层次结构中较低级别的处理才能充分测试较高级别。
在自上而下测试开始时,存根会替换低级模块,因此程序结构中无法向上流动重要数据。
测试人员可能面临的挑战
- 延迟许多测试,直到存根被实际模块替换。
- 开发执行模拟实际模块的有限功能的存根。
- 从层次结构的底部向上集成软件。
注意:第一种方法使我们失去了一些对特定测试和特定模块整合之间对应关系的控制。这可能导致难以确定错误原因,这往往违反了自上而下方法的严格约束性质。
第二种方法可行,但可能导致大量的开销,因为存根变得越来越复杂。
自下而上法
自下而上集成从程序结构中最低级别的模块开始构建和测试。在这个过程中,模块从下到上集成。
在这种方法中,给定级别子模块所需的处理总是可用的,并且消除了对存根的需求。
这个集成测试过程分四步进行
- 低级模块组合成执行特定软件子功能的集群。
- 编写驱动程序以协调测试用例的输入和输出。
- 测试集群或构建。
- 移除驱动程序,并向上结合程序结构中的集群。
随着集成向上移动,对独立测试驱动程序的需求减少。事实上,如果程序结构的最高两层是自上而下集成的,那么驱动程序的数量可以大大减少,并且集群的集成也大大简化。集成遵循下图所示的模式。随着集成向上移动,对独立测试驱动程序的需求减少。
注意:如果程序结构的最高两层是自上而下集成的,驱动程序的数量可以大大减少,并且构建的集成也大大简化。
大爆炸方法
在这种方法中,所有模块在所有模块准备好之前都不会集成。一旦它们准备好,所有模块都被集成,然后执行以了解所有集成模块是否正常工作。
在这种方法中,由于一次性集成所有内容,很难找出故障的根本原因。
此外,在生产环境中发生严重错误的几率很高。
只有当集成测试必须一次性完成时,才采用这种方法。
摘要
- 执行集成是为了验证软件系统模块之间的交互。它有助于及早发现缺陷
- 集成测试可用于硬件-软件或硬件-硬件集成
- 集成测试通过两种方法进行
- 增量法
- 大爆炸法
- 在执行集成测试时,通常使用 ETVX(进入标准、任务、验证和退出标准)策略。