软件工程 期末复习
一、 UML
UML是一种标准的图形化建模语言,可以捕获系统静态结构和动态行为的信息,独立于过程。可以作为测试依据,类图指导单元测试,协作图和构件图指导集成测试,用用例图指导系统测试。
“4+1”视图:用例视图、逻辑视图、实现视图、过程视图、部署视图
1.1 用例图
- 参与者:操作对象
- 用例:一系列动作序列
必须是动宾短语
是相对独立的
是一个单元
由参与者启动
有可观测的执行结果 - 用例的粒度:保证所有用例在同一个层级
- 用例之间的关系
扩展关系(描述行为变化,扩展用例可能被执行,指向基用例)
包含关系(避免重复操作,包含用例一定被执行,指向包含用例)
泛化关系
1.2 静态图
1.2.1 类图
- 组成:类名、属性、操作
- 关联与依赖
关联关系有多重性(注意⚠️),静态
依赖是动态的,无多重性 - 聚合与组合
聚合:部分可以独立存在
组合:部分不能独立存在 - 泛化=继承
1.2.2 对象图
- 由对象和链组成
- 表示法
–标准表示法:stu:Student
–匿名表示法::Student
–省略类名的表示法:stu - 对象中只有对象名和属性
1.2.3 包图
- 可以包含各种高级的元素,允许嵌套
- 命名
–简单包名:Vision
–路径包名:Sensor::Vision - 同一个包内同种元素必须不同名
- 高内聚,低耦合
- 循环依赖需要引入第三个包,重构
1.3 行为图
1.3.1 状态图
- 添加多个事件之间的状态转移
- 有两种行为:事件和活动
- 子状态不同,外部呈现的状态是相同的
- 可以没有起点和终点(患者监护系统)
1.3.2 活动图
- 组成:动作和活动节点、开始和终止、控制流、判断节点、合并节点和泳道
- 动作为原子操作
- 必须有且仅有一个开始,通常至少有一个终止
- 泳道为活动分区
- 指向同一个合并节点不意味着要相互等待或数据同步
1.4 交互图
1.4.1 顺序图
- 按时间顺序显示对象交互
- 组成:对象、生命线、激活和消息
- 激活:又称控制焦点,表示执行一个动作经历的时间段
- 虚线返回
- 布局:用户–用户界面–控制流(逻辑层)–数据库
- 擅长表现交互顺序
1.4.2 协作图
- 组成:对象、消息、链
- 链用于传输或实现消息的传递
- 适用于展现系统中的对象结构
1.5 实现图
1.5.1 组件图
- 组成:组件、接口、关系
- 接口: 供给接口 和 需求接口
1.5.2 部署图
- 组成:节点、关系
- 节点:处理器 和 设备(<>)
二、 软件测试
软件测试是按照规定的软件规程发现软件缺陷的过程
分类1 功能/性能/兼容性/易用性/非功能性
分类2 静态/动态
2.1 静态测试
2.1.1 走查
2.1.2 审查
2.1.3 评审
2.2 动态测试
2.2.1 黑盒测试
- 基于需求
- 分类:
–等价类划分法 分有效与无效 设计测试用例
–边界值分析法
–错误推测法 逆向思维
–因果图分析法
–场景分析法 - 优点:
应用面广
不需要知道内部逻辑
可以借助自动化工具提高效率 - 缺点:
测试技能与业务熟悉度结合不紧密
缺陷定位不够准确
2.2.2 白盒测试
- 基于代码
- 测定依据是《详细设计说明书》
- 覆盖技术:语句覆盖、条件覆盖、分支覆盖和组合覆盖
- 基本路径测试法:把程序流程图映射成流图
- 优点:
深入,能从内部发现问题
对黑盒测试最有力的补充 - 缺点:
难查出遗漏的路径
工作量大
要理解代码
2.2.3 灰盒测试
黑盒和白盒综合策略
2.3 测试计划
- 熟悉项目情况
- 确定和排序测试需求
- 定义测试策略
- 估计测试工作量
- 配置测试资源
2.4测试步骤
2.4.1 代码审查
依据:源代码
2.4.2 单元测试
对软件基本组成单元进行的测试
依据:详细设计
–模块接口测试
–模块局部数据结构测试
–模块边界条件测试
–模块独立执行路径测试
–模块内部错误处理测试
2.4.3 集成测试
组装成子系统或系统
依据:概要设计(总体设计)
层次:
–模块内集成
–子系统内集成
–子系统间集成
测试技术:
–正向测试 等价类/状态转换
–逆向测试 错误猜测法/故障测试/边界值/特殊值/状态转换测试
–高覆盖测试 功能覆盖/接口覆盖
–非渐增式测试方法
–渐增式测试方法
–大爆炸集成 自顶向下集成/自底向上集成/三明治集成
2.4.4 系统测试
将集成好的软件系统,结合多方面进行综合测试
依据:系统需求
测试方法:
–功能测试
–性能测试
–协议一致性测试
–压力测试
–容量测试
–安全性测试
–恢复测试
–备份测试
–GUI测试
–兼容性测试
–可用性测试
–安装测试
–文档测试
–在线帮助测试
–数据转换测试
一般使用黑盒测试方法
2.4.5 回归测试
检查系统变更后是否引入新错误或旧错误重复出现