第五章 集成测试

集成测试的必要性

1.组件接口的错误

2.功能矛盾或不相容
一个模块可能对另一个模块产生不利的影响;将子功能合成时不一定产生所期望的主功能

3.时序和资源竞争问题
在单元测试中无法发现时序问题和资源竞争问题

4.误差问题
独立可接受的误差在组装后可能会超过可接受的误差限度

程序结构分析

相依性:一个软件系统,其构件(模块)经常是以各种的形式相互依赖、调用,这里称这些模块相互之间调用、被调用的关系为相依性。而一个系统之中各个模块相互间的相依性通常以一棵树的形式表示,称为这个系统的相依性树

最顶端的一般称作系统的主控模块
软件测试期末复习知识点(第五章、第六章)

集成的方法

一次性集成(基于分解的集成)

软件测试期末复习知识点(第五章、第六章)

测试步骤
首先对每个子模块进行测试(单元测试),然后将所有的模块全部集成起来一次性进行集成测试。在系统范围内应用一个测试用例集合,以证实最低限度的可操作性

适用环境
(1)被测试的系统已经稳定且自从其最后通过系统范围的测试用例集合之后,只加入(或修改)了少数的几个构件。
(2)要测试的系统比较小并且可测试,而且其每个构件都通过了充分的构件范围的测试。
(3)对于单片电路系统,一次性集成可能是唯一可行的方法。

优缺点
优点:迅速,测试用例少
缺点:错误难以定位,调试困难,隐藏潜伏许多接口错误

自顶向下集成

软件测试期末复习知识点(第五章、第六章)

测试步骤
(1)对主控模块进行测试,以桩模块代替其下级模块。
(2)以深度优先或宽度优先的策略,依次用实现的模块代替桩模块。
(3)每集成进入一个模块就对其进行测试。
(4)为保证加入模块没有引进新的错误,可能需要进行回归测试(重复以前做过的测试)。

适用环境
(1)增量式系统开发。自顶向下逐次开发各个控制层的系统。
(2)并行硬件/软件开发。设计和开发硬件或是子系统接口时,可以设计、编码和测试高层控制构件。
(3)框架开发

优缺点
优点:较早开始,减少了驱动模块的开发费用,避免提交不稳定的接口
缺点:桩模块的开发代价较大,底层模块出现需求可能迫使顶层构建修改,充分测试底层模块较困难

自底向上集成

软件测试期末复习知识点(第五章、第六章)

测试步骤
(1)对叶(底层)构件编码,编写叶构件的驱动模块以测试叶构件
(2)对由模块组成的子功能集进行测试
(3)去掉驱动模块,沿软件结构(相依性树)自下而上移动进行集成,把子功能组合起来,形成更大的子功能集。
(4)集成达到系统结构最高层,整个系统使用根一级的构件测试。

适用环境
(1)在子系统的迭代和增量开发中,自底向上的开发很适合具有健壮性的、稳定的接口定义的构件系统
(2)需要(或可能)推迟对构件的系统范围的测试,直到所有构件都开发出来的应用环境
(3)重要需求的构件在底层。自底向上开发方式可以实现对重要构件较早装配

优缺点
优点:对于底层模块的测试和集成可以并行;不限制可测试性
缺点:驱动模块的开发耗费量大;高层构件的可操作性和互操作性测试得不充分

协作集成

协作集成(Collaboration Integration)通过向被测试系统中,加入构件的集合证明稳定性,这种构件的集成要求支持一个特定的动作(子功能)。
软件测试期末复习知识点(第五章、第六章)

基干集成

基干集成(Backbone Integration)方式结合了自顶向下、自底向上和一次性集成的元素,以验证紧密耦合的子系统之间的互操作性。

三明治集成是基干集成的一种相关样式,它提倡自顶向下和自底向上集成的结合,最后的配置在中间汇合

软件测试期末复习知识点(第五章、第六章)

层次集成

层次集成(Layer Integration)方式增量式检测层次体系结构之中的接口和构件,使用增量测试的方法验证层次体系结构中的稳定性。

客户/服务器集成

客户/服务器集成(Client/Server Integration)方式论证客户和服务器之间交互的稳定性。它从单独测试客户和服务器开始,然后在范围内使用受控增加直到所有接口经过测试。

分布服务集成

分布服务集成(Distributed Services Integration)方式论证松散耦合的同等构件之间的交互稳定性。它从单独测试一些结点开始,然后在范围内使用受控增加,直到最后测试所有接口。

高频集成

高频集成(High-frequency Integration)方式频繁地将新代码和已稳定的基线集成在一起,以避免集成故障不能被发现以及防止运行的、稳定化的基线的偏差

基于调用图集成

基于分解集成方式:以“相依性树”为基础
基于调用图的集成方式主要有成对集成和相邻集成。 成对集成的思想是避免桩模块和驱动模块的开发工作。相邻集成是借用拓扑学的相邻概念
软件测试期末复习知识点(第五章、第六章)
软件测试期末复习知识点(第五章、第六章)

第六章 系统测试

系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统定义不符合或与之矛盾的地方

非功能测试

安装测试

安装测试(Installation Test)是确保应用软件在正常情况和异常情况下都不丢失数据或者功能,具体工作可以包括首次安装、升级、卸载、完全安装和自定义安装等测试活动,测试对象包括了安装代码以及安装手册。

兼容性测试

兼容性测试是验证软件之间是否能正确地交互和共享信息,从而确认软件的说明书对硬件环境的描述是否正确、合理。兼容性测试包括硬件兼容性、软件兼容性和数据兼容性三个方面的测试。

安全性测试

安全性测试(Security Test)是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程。
软件测试期末复习知识点(第五章、第六章)

恢复测试

恢复测试(Recovery Test)是测试一个系统从灾难或出错中能否很好地恢复的过程,如遇到系统崩溃、硬件损坏或其他灾难性出错。一般是通过各种人为的强制性手段让软件或硬件出现故障,然后检测系统是否能正确地恢复(自动恢复和人工恢复)。
通过恢复测试,一方面使系统具有异常情况的抵抗能力,另一方面使系统测试质量可控制。因此,恢复测试包括以下几种情况:
(1)硬件及有关设备故障。
(2)软件系统故障。
(3)数据故障。
(4)通信故障和错误。

性能测试

性能测试(Performance Test)是评价一个产品或组件与性能需求是否符合的测试,通过对软件性能相关的需求进行测试和评估,核实性能需求是否都已满足,其目的是将测试对象的性能行为当作条件(例如工作量或硬件配置)的一种函数来进行评测和微调。

负载测试

负载测试(Load Test)是通过改变系统负载方式、增加负载等来发现系统中所存在的性能问题。负载测试是一种测试方法,可以为压力测试、容量测试所采用

压力测试

压力测试(Stress Test,又叫强度测试)是对系统不断施加压力的测试,通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试

容量测试

容量测试(Capacity test)就是在使系统的全部资源达到“满负荷”的情形下,测试系统的承受能力,其目的是检查被测系统处理大数据量的能力。通俗地讲,容量测试要检验系统的能力最高能达到什么程度。

其他测试

α测试

α测试(Alpha测试)是指软件开发公司组织内部人员模拟各类用户对即将面市的软件产品(称为α版本)进行测试,试图发现错误并修正。α测试的关键在于尽可能逼真地模拟实际运行环境和用户对软件产品的操作,并尽最大努力涵盖所有可能的用户操作方式。经过α测试后,调整的软件产品称为β版本

β测试

β测试(Beta测试)是由软件的多个用户在实际使用环境下进行的测试。这些用户返回有关错误信息给开发者。 测试时,开发者通常不在测试现场。因而,β测试是在开发者无法控制的环境下进行的软件现场应用。在β测试中,由用户记下遇到的所有问题,包括真实的以及主观认定的,定期向开发者报告。

文档测试

对于软件公司和测试人员来说,需要测试的文档可以分为三大类:用户文档、开发文档、管理文档。

相关文章:

  • 2021-07-16
  • 2021-06-17
  • 2021-12-15
  • 2021-08-22
  • 2021-11-11
  • 2021-08-15
  • 2021-05-22
  • 2021-10-27
猜你喜欢
  • 2021-04-01
  • 2021-07-31
  • 2021-12-11
  • 2021-07-22
  • 2021-06-04
  • 2021-11-24
  • 2021-11-22
相关资源
相似解决方案