系统设计
界面设计
- 置于用户控制之下(典型反例:各种广告)
- 减少用户的记忆负担(默认的一些图标,X是关闭,之类)
- 保持界面的一致性()
结构化设计
自顶向下,逐步分解求精
- 概要设计(分解模块,模块之间的关系)
- 详细设计(具体任务选择合适的处理办法)
原则
- 模块独立性原则;高内聚(只做一件事),低耦合()
- 模块保持的大小适中
- 多扇入,少扇出(自己本身是高度复用,少调用别人)
- 深度和宽度均不宜过高
内聚程度(从高到低)
- 功能内聚(单一功能)
- 顺序内聚(顺序执行)
- 通信内聚(一个数据结构)
- 过程内聚(特定次序执行,不可以调整)
- 时间内聚(数据初始化,在同一段时间内完成)
- 逻辑内聚(一组任务)
- 偶然内聚
低耦合(从低到高)
- 非直接耦合 (与其他模块没有直接关系)
- 数据耦合(传递简单参数)
- 标记耦合(传递结构体)
- 控制耦合(传递控制流程信息,比如 传递了5,但是5是用来做判断流程)
- 外部耦合(全局变量)
- 公共耦合(公共数据区域)
- 内容耦合 (访问另一模块的内部数据)
面向对象设计
类的分类
软件测试
白盒测试与黑盒测试
- 白盒测试(结构测试)
- 路径覆盖
- 逻辑覆盖
- 黑盒测试(功能测试)
- 等价类划分(不同类的问题)
- 边界值分析
执行方式
- 人工
- 自动化
- 先写脚本-> 自动化执行
- 不适合项目周期短,需求变动频繁
- 单元自动化测试、接口自动化测试、UI 自动化测试
软件测试阶段
- 单元测试(详细设计,内部模块的测试)
- 集成测试(概要设计,模块之间的测试)
- 系统测试(需求分档,功能测试、性能测试、验收测试、压力测试等)
- 确认测试(需求文档,新版教程移除)
集成测试
- 一次性组装(风险高)
- 自顶向下(可能需要加桩模块)
- 自底向下(模拟数据)
- 增量式组装(测试全面)
系统测试
- 功能测试
- 性能测试
- 负载测试(各种工作负载性能)
- 压力测试(测上线,极值,系统瓶颈)
- 强度测试(测下线,极值,资源特别低情况运行)
- 容量测试(并发测试)
- 可靠性测试(MTTF之类的参数)
- 健壮性测试
- 用户界面测试
- 安全性测试
- 安装与反安装测试