软件构造知识点复习:1、2章+软件测试

第一章、软件的建设观点与质量目标

多维软件视图

软件构造这门课,我们首先接触的就是多维软件视图:
从时间分为:瞬时(Moment)、周期(Period)
从编码分为:构建(开发)(Build-time)、运行(Run-time)
从代码分为:代码(Code-level)、模块(Component)
软件构造知识点复习:1、2章+软件测试这里每个层次关注的点是不一样的
Build-time:

  1. Code-level:代码逻辑组织
  2. Component-level:代码物理组织
  3. Moment:某一时刻的软件形态
  4. Period:软件形态随时间变化

Run-time:

  1. Code-level:逻辑实体再内存中的呈现
  2. Component-level:物理实体在物理硬件环境中的呈现
  3. Moment:逻辑/物理实体在内存/硬件环境中特定时刻的形态
  4. Period:逻辑/物理实体在内存/硬件环境中的形态随时间变化

软件形态的质量因素

软件质量(外部取决于内部):

  1. 外部:正确性、健壮(鲁棒)性、易扩展性、复用性、兼容性、效率、可移植性、易用性、功能性、时效性
  2. 内部因素:LOC、RUCS(可读、可理解、清晰、大小)

软件构造的5个主要目标:

  1. 代码容易理解
  2. 易用,开发便宜
  3. 低复杂度,易扩展
  4. 健壮性、正确性
  5. 效率

软件测试与测试优先编程

残留缺陷率:每1000行中bug的数目(1~10,0.1 ~ 1,0.01 ~0.1)
测试的主要目的:测试出错误
测试的层面:单元测试、集成测试、系统测试
改完之后再测试:回归测试

测试

{\left\{ \begin{array}{c} 静态测试 :看代码\\ 动态测试:边运行边看\end{array}\right.
{TestDebug\left\{ \begin{array}{c} Test(测试):发现有没有错误 \\ Debug(调试):找到错误在哪\end{array}\right.
{\left\{ \begin{array}{c} 白盒测试:按代码一步一步调试 \\ 黑盒测试:结果正确即可\end{array}\right.
测试用例:输入+执行条件+期望结果(assertEquals)
测试有限编程:先写spec再写测试再写代码
{\left\{ \begin{array}{c} 白盒测试:尽量所有的路径都走一次\\ 黑盒测试:划分等价类(对称自反传递),重点测边界\end{array}\right.
覆盖:路径覆盖>分支覆盖>语句覆盖

软件构建的过程与工具

软件生命周期与配置管理

生命周期:SDLC:重点:软件设计→编码→测试
2种基本模型
{线\left\{ \begin{array}{c} 线性过程\\ 迭代过程\end{array}\right.
模型:瀑布模型、增量模型、原型模型、V字模型、螺旋模型
敏捷开发:敏捷=增量+迭代

软件配置管理(SCM)

SCM:追踪和控制软件的变化
软件配置项(SCI):软件中发生变化的基本单元(多为文件)
基线(baseline):稳定的版本
配置管理数据库(CMOB):变化的信息

版本控制管理(VCS)

{\left\{ \begin{array}{c} 本地版本控制系统:仓库在本地 \\ 集中式版本控制系统: 仓库在一个服务器\\ 分布式版本控制系统:服务器和本地都有仓库\end{array}\right.

Github

软件构造知识点复习:1、2章+软件测试Github:{0/1/2\left\{ \begin{array}{c} 存变化的文件\\ 子节点指向父亲结点,可以有0/1/2个父亲节点\end{array}\right.
软件构造知识点复习:1、2章+软件测试软件构造知识点复习:1、2章+软件测试