软件工程
大家好呀!我是小笙,本章我主要分享系统架构设计师 - 软件工程(3)知识,希望内容对你有所帮助!!
软件工程(13-22分)非常重要
软件测试
测试方法
动态测试【计算机运行】
- 黑盒测试法 (一种软件测试方法,主要关注于软件系统的功能和行为,而不是其内部结构或实现细节)
- 等价类划分:将所有可能的输入划分为若干个等价类,每个等价类代表了一类相似的输入
- 边界值分析:测试输入的边界值和临近值
- 错误推测:基于对系统可能出现错误的经验和直觉,设计测试用例以发现潜在的错误
- 状态测试法:测试系统在各种状态之间转换的行为
- 白盒测试法 (一种软件测试方法,专注于测试软件的内部逻辑和结构,而不仅仅是其功能)
- 语句覆盖:确保每一条语句都被执行至少一次
- 分支覆盖:测试所有可能的分支路径,以确保每个分支条件都被执行至少一次
- 路径覆盖:测试所有可能的路径组合,包括不同的分支和循环
- 条件覆盖:确保每个条件在所有可能的情况下都被测试到
- 灰盒测试法 (黑盒 + 白盒)
- 集成测试:测试系统各个组件的交互和集成效果,确保它们协同工作
- 接口测试:检查系统组件或模块之间的接口是否按预期工作,验证数据交换的准确性
- 功能测试:测试系统的功能是否符合需求,通常基于已有的部分内部知识设计测试用例
静态测试【纯人工】
- 静态代码分析:使用静态分析工具对源代码进行分析,识别编程错误、资源泄漏、死代码等问题
- 代码审查:开发者互相检查代码,确保代码质量,遵循编码规范,并识别潜在的错误或改进点(类似代码走查)
- 文档审查: 审查文档是否清晰、准确地描述了系统需求和设计,确保其符合项目标准和需求
- 桌面检查:对开发或测试环境的检查,确保所有必需的工具、文档和资源都在正确的位置,并且没有遗漏或配置错误
例题
1、软件测试一般分为两个大类:动态测试和静态测试。前者通过运行程序发现错误,包括 边界值分析、逻辑覆盖、基本路径 等方法;后者采用人工和计算机辅助静态分析的手段对程序进行检测,包括 桌面检查、代码审查、代码走查 等方法
- 边界值分析、逻辑覆盖、基本路径
- 桌面检查、逻辑覆盖、错误推测
- 桌面检查、代码审查、代码走查
- 错误推测、代码审查、基本路径
测试阶段
- 单元测试:模块测试,模块功能、性能、接口等
- 集成测试:模块间的接口
- 系统测试:真实环境下,验证完整的软件配置项能否和系统正确连接
- 确认测试:验证软件与需求的一致性。内部确认测试、Alpha测试、Beta测试、验收测试
- 回归测试:测试软件变更之后,变更部分的正确性对变更需求的符合性
集成测试策略
-
一次性组装(风险高)
-
增量式组装(测试全面)
- 自顶向下(需要桩模块)
- 自底向上(需要驱动模块)
- 混合式
系统测试
- 功能测试
- 性能测试
- 负载测试:各种工作负载下系统的性能
- 压力测试:系统的瓶颈或不能接受的性能点
- 强度测试:系统资源特别低的情况下运行
- 容量测试【并发测试】:同时在线的最大用户数
- 可靠性测试:MTTF之类的参数
- 健壮性测试
- 用户界面测试
- 安全性测试
- 安装与反安装测试
例题
1、在单元测试中,驱动模块用来调用被测模块,自顶向下的单元测试中不需要另外编写驱动模块
- 驱动模块用来调用被测模块,自顶向下的单元测试中不需要另外编写驱动模块
- 桩模块用来模拟被测模块所调用的子模块,自顶向下的单元测试中不需要另外编写桩模块
- 驱动模块用来模拟被测模块所调用的子模块,自底向上的单元测试中不需要另外编写驱动模块
- 桩模块用来调用被测模块,自底向上的单元测试中不需要另外编写桩模块
2、软件性能测试有多种不同类型的测试方法,其中,强度测试 用于测试在限定的系统下考查软件系统极限运行的情况,容量测试 可用于测试系统同时处理的在线最大用户数量
- 强度测试 负载测试 压力测试 容量测试
面向对象的测试(了解)
- 算法层(单元测试):包括等价类划分测试、组合功能测试(基于判定表的测试)、递归函数测试和多态消息测试
- 类层(模块测试):包括不变式边界测试、模态类测试和非模态类测试
- 模板层/类树层(集成测试):包括多态服务测试和展平测试
- 系统层(系统测试)
软件调试
- 蛮力法:主要思想是"通过计算机找错",低效,耗时
- 回溯法:从出错处人工沿控制流程往回追踪,直至发现出错的根源。复杂程序由于回溯路径多,难以实施
- 原因排除法:主要思想是演绎和归纳,用二分法实现
软件测试 VS 软件调试
软件测试 | 软件调试 |
---|---|
目的是找出存在的错误 | 目的是定位错误并修改程序以修正错误 |
从一个已知的条件开始,使用预先定义的过程,有预知的结果 | 从一个未知的条件开始,结束的过程不可预计 |
测试过程可以事先设计,进度可以事先确定 | 调试不能描述过程或持续时间 |
系统转换计划
遗留系统演化策略
例题
1、遗留系统的演化可以采用淘汰、继承、改造和集成四种策略。若企业中的遗留系统技术含量较高,业务价值较低,在局部领域中工作良好,形成了一个个信息孤岛时,适合于采用 集成 演化策略
- 淘汰
- 继承
- 改造
- 集成
新旧系统转换策略
- 直接转换策略(把现有系统下线,新系统然后上线)
- 并行转换策略
- 分段转换策略
数据转换与迁移
旧数据库 -> 抽取 -> 转换 -> 装载 -> 新数据库
系统运行与软件维护
- 正确性维护:指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误
- 适应性维护:指使应用软件适应环境变化【外部环境、数据环境】而进行的修改
- 完善性维护:扩充功能和改善性能而进行的修改
- 预防性维护:为了适应未来的软硬件环境的变化,应主动增加预防性的新的功能,以使用系统适应各类变化而不被淘汰。如将专用报表功能改成通用报表生成功能,以适应将来报表格式的变化
例题
1、软件的维护并不只是修正错误。为了满足用户提出的增加新功能、修改现有功能以及一般性的改进要求和建议,需要进行 完善性维护 ,它是软件维护工作的主要部分;软件测试不可能揭露旧系统中所有潜在的错误,所以这些程序在使用过程中还可能发生错误,诊断和更正这些错误的过程称为 改正性维护 ;为了改进软件未来的可维护性或可靠性,或者为了给未来的改进提供更好的基础而对软件进行修改,这类活动称为 预防性维护
- 完善性维护
- 适应性维护
- 预防性维护
- 改正性维护