- 软件需求:
- 功能需求:如何修改、升级。
- 性能需求:容量、速度、响应时间、吞吐量。
- 用户或人的因素:用户类型、用户的弱智程度。
- 环境需求:软硬件,地理环境,系统环境。
- 界面需求:数据输入的格式。
- 文档需求:需要哪些文档,针对哪些读者。
- 数据需求:输入输出的格式,接收发送的频率,数据的准确性和精度。
- 资源使用需求:软件运行的数据、内存等资源,软件开发、维护的人力、设备等。
- 安全保密需求:隔离用户数据的方法,系统备份。
- 可靠性需求:系统必须检测和隔离错误,出错后,重启系统允许的时间等。
- 软件成本消耗与开发进度需求:是否有规定的时间表,软/硬件投资有无限制。
- 其他非功能性需求:采用的开发模式,验收标准,维护性等等。
- 需求分析:确定功能及非功能性要求。
- 系统设计的主要目的是为系统制定蓝图。
- 系统设计的主要内容包括:总体结构设计、代码设计、输出设计、输入设计、处理过程设计、数据存储设计、用户界面设计、安全控制设计、数据结构设计。
- 常用的系统设计方法:
- 面向数据流的结构化设计方法(SD)。
- 面向对象的分析方法(OOD)。
- 概要设计:
- 设计系统总体结构:将一个复杂的系统,按功能划分成模块,确定每个模块的功能。
- 数据结构及数据库设计。
- 编写概要设计文档:说明书,用户手册,修订测试计划。
- 评审。
- 模块的作用范围应在控制范围之内。
- 数据库设计:概念设计、逻辑设计、物理设计。
- 详细设计
- 对每个模块进行详细的算法设计。(细化)
- 模块内的数据结构进行设计。
- 数据库进行物理设计。
- 其他设计。系统类型,代码设计,输入输出格式设计,用户界面设计。
- 编写详细设计说明书。
- 评审。
- 详细设计的结果是一系列的系统设计文件。
- 编码:得到可运行的软件。
- 成功的测试是发现了至今尚未发现的错误的测试。
- 测试的目的是:能以最少的人力和时间发现潜在的各种错误和缺陷。
- 系统测试是保证系统质量和可靠性的关键步骤,是对系统开发过程中的系统分析、系统设计和实施的最后复查。
- 信息系统测试应包括软件测试、硬件测试、网络测试。
-
传统的测试策略:
- 单元测试
- 集成测试
- 确认测试
- 系统测试
-
单元测试的测试内容的5个特征:
- 模块接口
a. 测试模块的输入参数和形式参数在个数、属性、单位上是否一致。
b. 调用其他模块时,输入参数和形式参数在个数、属性、单位上是否一致。
c. 调用标准函数时,所用参数在个数、属性、单位上是否一致。
d. 全局变量在各模块中的定义和用法是否一致。
e. 输入是否改变了形式参数。
f. 开/关的语句是否正确。
g. 规定的I/O格式是否与输入/输出语句一致。
h. 在使用文件之前,是否已经打开文件。或使用文件之后,是否关闭文件。 - 局部数据结构
a. 变量的说明是否合适。
b. 是否使用了尚未赋值或尚未初始化的变量。
c. 变量的初始值或默认值是否正确。
d. 变量名是否有错(例如拼写错)。 - 重要的执行路径:单元测试中,路径测试时最基本的任务。
a. 计算方面的错误:算数运算的优先级,精度,运算对象类型,算法,表达式。
b. 比较和控制流的错误:精度,类型,逻辑运算,循环终止,循环变量,分支逻辑。 - 出错处理。
- 边界条件。
a. 单元测试的最后工作,非常重要的工作。
- 模块接口
-
单元测试过程:
- 驱动模块:相当于主程序,接收数据,送到测试模块,输出测试结果。
- 桩模块(存根模块):代替测试模块中调用的子模块,目的是为了检验入口,输出调用和返回信息。
-
集成测试:
- 自顶向下集成测试
- 自底向上集成测试
- 回归测试
- 冒烟测试
回归测试:每当加入一个新模块,出现的变更可能会使原来可以正常工作的功能产生问题,回归测试有助于保证变更不引入无疑是行为或额外的错误。
冒烟测试:常用的集成测试方法,时时间关键项目的决定性机制,让软件团队平凡的对项目进行评估。
-
系统测试:
- 回复测试
- 安全性测试
- 压力测试
- 性能测试
- 部署测试
- 测试面向对象软件
- 单元测试
- 集成测试:
a. 基于线程测试
b. 基于使用测试
- 测试方法:
- 静态测试
- 动态测试
- 静态测试
- 人工检测
- 计算机辅助静态检测
- 动态测试
- 黑盒测试:测试软件的外部特征。
- 白盒测试:根据程序的内部结构和逻辑来设计测试用例,对程序的路径和过程进行测试。
- 白盒测试:
- 逻辑覆盖
a. 语句覆盖:最弱的逻辑覆盖。
b. 判定覆盖:每个判断表达式至少出现一次True和False。
c. 条件覆盖:每个逻辑条件都至少通过一次。
d. 判定/条件覆盖:上面两个结合一下。
e. 条件组合覆盖:各种可能的组合都至少出现一次。
f. 路径覆盖:覆盖被测试程序中所有可能的路径。 - 循环覆盖:循环中的每个条件都得到验证。
- 基本路径测试
- 逻辑覆盖
- 白盒测试的原则:
- 程序模块中的所有独立路径至少执行一次。
- 在所有的逻辑判断中,True和False至少都执行一次。
- 每个循环在边界条件和一半条件下各执行一次。
- 测试程序内部数据结构的有效性。