软件工程(导论)

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

目录

  • 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 能力成熟度模型
软件测试基础

一、软件测试的目标

测试是为了发现程序中的错误而执行程序的过程,好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案,成功的测试是发现了至今为止尚未发现的错误的测试。 


二、软件测试准则

■所有测试都应该能追溯到用户需求;

■应该远在测试开始之前就制定出测试计划;

■把Pareto原理应用到软件测试中;

■应该从“小规模”测试开始,并逐步进行“大规模”测试;

■穷举测试是不可能的;

■为了达到最佳的测试效果,应该由独立的第三方从事测试工作。


三、测试方法

黑盒测试(功能测试):

把程序看作一个黑盒子;

完全不考虑程序的内部结构和处理过程;

是在程序接口进行的测试。


白盒测试(结构测试):

把程序看成装在一个透明的盒子里;

测试者完全知道程序的结构和处理算法;

按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。


黑盒测试与白盒测试优缺点比较: 


四、测试步骤

1. 模块测试(单元测试)

■保证每个模块作为一个单元能正确运行;

■发现的往往是编码和详细设计的错误。

2. 子系统测试

■把经过单元测试的模块放在一起形成一个子系统来测试;

■着重测试模块的接口。

3. 系统测试

■把经过测试的子系统装配成一个完整的系统来测试;

■发现的往往是软件设计中的错误,也可能发现需求说明中的错误;

■不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常称为集成测试。 

4. 验收测试(确认测试)

■把软件系统作为单一的实体进行测试;

■它是在用户积极参与下进行的,而且可能主要使用实际数据(系统将来要处理的信息)进行测试;

■发现的往往是系统需求说明书中的错误。

5. 平行运行

■同时运行新开发出来的系统和将被它取代的旧系统;

■比较新旧两个系统的处理结果;

■可以在准生产环境中运行新系统而又不冒风险;

■用户能有一段熟悉新系统的时间;

■可以验证用户指南和使用手册之类的文档;

■能够以准生产模式对新系统进行全负荷测试,可以用测试结果验证性能指标。 


五、测试阶段的信息流

输入信息有两类: 

软件配置:包括需求说明书、设计说明书和源程序清单等; 

测试配置:包括测试计划和测试方案。