codecamp

软件测试 集成测试

集成测试是单元测试后软件测试过程的第二个层次。在此测试中,软件的单元或单个组件在组中进行测试。集成测试级别的重点是在集成组件或单元之间交互时暴露缺陷。

单元测试使用模块进行测试,这些模块在集成测试中进行组合和测试。该软件使用许多软件模块开发,这些软件模块由不同的编码器或程序员编码。集成测试的目标是检查所有模块之间通信的正确性。




集成测试背后的原因

虽然软件应用程序的所有模块已经在单元测试中进行了测试,但由于以下原因仍然存在错误:

  • 每个模块由个别软件开发人员设计,其编程逻辑可能与其他模块的开发人员不同; 集成测试对于确定软件模块的工作至关重要。
  • 检查软件模块与数据库的交互是否是错误的。
  • 在模块开发时可以更改或增强要求。这些新要求可能无法在单元测试级别进行测试,因此集成测试成为强制性要求。
  • 软件模块之间的不兼容可能会产生错误。
  • 测试硬件与软件的兼容性。
  • 如果模块之间的异常处理不充分,则可能会产生错误。

集成测试技术

测试技术(黑盒测试,白盒测试和灰盒测试)都可用于集成测试; 一些列表如下:

黑盒测试

  • 状态转换技术
  • 决策表技术
  • 边界值分析
  • 成对测试
  • 因果图
  • 等价划分
  • 错误猜测

白盒测试

  • 数据流测试
  • 控制流程测试
  • 分支覆盖测试
  • 决策覆盖率测试

集成测试方法

集成测试有两种基本方法:

  • 大爆炸
  • 增量

下面来了解这些方法。

大爆炸法

在这种方法中,通过一次集成所有模块来完成测试。它对于小型软件系统来说很方便,如果用于大型软件系统,很难识别缺陷。

由于该测试可以在完成所有模块之后完成,因为测试团队执行此过程的时间较少,因此可以轻松错过内部链接接口和高风险关键模块。

优点:

  • 它适用于小型软件系统。

缺点:

  • 缺陷的识别很困难。
  • 小模块很容易丢失。
  • 提供测试的时间非常少。

增量方法

在增量方法中,模块按升序逐个添加或根据需要添加。所选模块必须与逻辑相关。通常,添加两个或两个以上的模块并进行测试以确定功能的正确性。该过程一直持续到所有模块的成功测试。

增量方法通过进一步的方法进行:

  • 自上而下
  • 自下而上
  • 混合测试

自顶向下 - 自上而下的测试策略处理使用较低级别模块测试更高级别模块的过程,直到成功完成所有模块的测试。由于首先测试了关键模块,因此可以及早发现并修复主要设计缺陷。

优点:

  • 缺陷的识别很困难。
  • 早期的原型是可能的。

缺点:

  • 由于存根的数量很多,它变得非常复杂。
  • 较低级别的模块测试不充分。
  • 首先测试关键模块,以减少缺陷的可能性。

自下而上方法 - 自下而上测试策略处理下级模块使用更高级别模块进行测试的过程,直到成功完成所有模块的测试。顶级关键模块最后进行测试,因此可能会导致缺陷。

优点:

  • 缺陷的识别很容易。
  • 不需要等待所有模块的开发,因为它节省了时间。

缺点:

  • 由于缺陷可能发生,最后对关键模块进行测试。
  • 没有早期原型的可能性。

混合测试方法 - 在这种方法中,将自上而下和自下而上的方法结合起来进行测试。在此过程中,顶层模块使用低级模块进行测试,低级模块同时使用高级模块进行测试。由于每个模块接口都经过测试,因此发生缺陷的可能性较小。

好处:

  • 混合方法提供自上而下方法和自下而上方法的功能。
  • 它是减少方法的最佳时间。
  • 它提供所有模块的完整测试。

缺点:

  • 当该方法同时在两个方向上进行时,该方法需要更高的浓度水平。
  • 复杂的方法。

集成测试指南

  • 首先,确定测试用例策略,通过该策略可以根据测试数据准备可执行的测试用例。
  • 检查应用程序的结构和体系结构,并确定首先测试它们的关键模块。
  • 设计测试用例以详细验证每个接口。
  • 选择输入数据以执行测试用例。输入数据在测试中起着重要作用。
  • 修复缺陷并重新测试。





软件测试 单元测试
软件测试 回归测试
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }