软件工程(导论)

成秀秀、杨玲、戚爱斌、苗世迪、温东新

目录

  • 1 软件与软件工程
    • 1.1 软件
    • 1.2 软件危机
    • 1.3 软件工程
    • 1.4 软件生命周期
    • 1.5 软件过程模型
    • 1.6 学生成果分享
  • 2 可行性研究与项目开发计划
    • 2.1 可行性研究的任务
    • 2.2 可行性研究过程
    • 2.3 进度计划
    • 2.4 学生成果分享
  • 3 需求分析
    • 3.1 需求分析的任务
    • 3.2 与用户沟通获取需求的方法
    • 3.3 分析建模与规格说明
    • 3.4 实体-联系图
    • 3.5 数据规范化
    • 3.6 状态转换图
    • 3.7 其它图形工具
    • 3.8 验证软件需求
  • 4 总体设计
    • 4.1 系统流程图
    • 4.2 数据流图
    • 4.3 数据字典
    • 4.4 设计过程
    • 4.5 设计原理
    • 4.6 启发规则
    • 4.7 描绘软件结构的图形工具
    • 4.8 面向数据流的设计方法
  • 5 详细设计
    • 5.1 结构程序设计
    • 5.2 人机界面设计
    • 5.3 过程设计的工具
    • 5.4 面向数据结构的设计方法
    • 5.5 程序复杂程度的定量度量
  • 6 软件编码
    • 6.1 程序设计语言
    • 6.2 编码风格
  • 7 软件测试
    • 7.1 软件测试基础
    • 7.2 单元测试
    • 7.3 集成测试
    • 7.4 确认测试
    • 7.5 白盒测试技术
    • 7.6 黑盒测试技术
    • 7.7 调试
    • 7.8 软件可靠性
  • 8 软件项目管理
    • 8.1 估算软件规模
    • 8.2 工作量估算
    • 8.3 人员组织
    • 8.4 质量保证
    • 8.5 软件配置管理
    • 8.6 能力成熟度模型
集成测试

集成测试总述

集成测试是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题。

由模块组装成程序时有两种方法:

1、非渐增式测试方法

先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序;

非渐增式测试一下子把所有模块放在一起,并把庞大的程序作为一个整体来测试,测试者面对的情况十分复杂。

在庞大的程序中想要诊断定位一个错误是非常困难的,改正错误更是极端困难,而且一旦改正一个错误之后,马上又会遇到新的错误。 

2、渐增式测试方法

把下一个要测试的模块同已经测试好的那些模块结合起来进行测试;

测试完以后再把下一个应该测试的模块结合进来测试,每次增加一个模块;

实际上同时完成单元测试和集成测试;

把程序划分成小段来构造和测试,在这个过程中比较容易定位和改正错误;

渐增方式有两种集成策略:

■自顶向下

■自底向上


一、自顶向下集成

从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。

在把附属于主控制模块的那些模块组装到程序结构中去时,或者使用深度优先的策略,或者使用宽度优先的策略。

■深度优先:先组装在软件结构的一条主控制通路上的所有模块。

■宽度优先:沿软件结构水平地移动,把处于同一个控制层次上的所有模块组装起来。


把模块结合进软件结构的过程由下述4个步骤完成:

第一步,对主控制模块进行测试,测试时用存根程序代替所有直接附属于主控制模块的模块;

第二步,根据选定的结合策略(深度优先或宽度优先),每次用一个实际模块代换一个存根程序(新结合进来的模块往往又需要新的存根程序);

第三步,在结合进一个模块的同时进行测试;

第四步,为了保证加入模块没有引进新的错误,可能需要进行回归测试(即,全部或部分地重复以前做过的测试)。

从第二步开始不断地重复进行上述过程,直到构造起完整的软件结构为止。 


优点:

■能够在测试的早期对主要的控制或关键的抉择进行检验。

■如果选择深度优先的结合方法,可以在早期实现软件的一个完整的功能并且验证这个功能。

缺点:

存根程序代替了低层次的模块,在软件结构中没有重要的数据自下往上流。


二、自底向上集成

用下述步骤可以实现自底向上的结合策略:

第一步,把低层模块组合成实现某个特定的软件子功能的族;

第二步,写一个驱动程序(用于测试的控制程序),协调测试数据的输入和输出;

第三步,对由模块组成的子功能族进行测试;

第四步,去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大的子功能族。

上述第二步到第四步实质上构成了一个循环。 


三、不同集成测试策略的比较


混合策略:

1、改进的自顶向下测试方法

基本上使用自顶向下的测试方法,但是在早期使用自底向上的方法测试软件中的少数关键模块。

能在测试的早期发现关键模块中的错误;测试关键模块时需要驱动程序。

2、混合法

对软件结构中较上层使用的自顶向下方法与对软件结构中较下层使用的自底向上方法相结合。

兼有两种方法的优缺点,当被测试的软件中关键模块比较多时,这种混合法可能是最好的折衷方法。


四、回归测试

回归测试是指重新执行已经做过的测试的某个子集,以保证测试过程中的变化没有带来非预期的副作用。

回归测试就是用于保证由于调试或其他原因引起的变化,不会导致非预期的软件行为或额外错误的测试活动。

回归测试可以通过重新执行全部测试用例的一个子集人工地进行,也可以使用自动化的捕获回放工具自动进行。