Software_Testing
2020-06-07
Chapter 1
软件可靠性
- 定义:系统在特定的环境下,在给定的时间内无故障运行的概率。
- 影响因素
- 需求错误
- 设计错误
- 编码错误
- 测试错误
- 文档错误
软件测试基本理论
- 定义
- 为了发现错误而执行程序的过程。
- 测试用例
- 为特定目的而设计的一组(多个) 测试输入、执行条件和预期的结果。
- 为执行测试的最小实体。
- 设计准则
- 代表性
- 可判定
- 可再现
- 对象
- 需求规格说明
- 概要设计规格说明
- 详细设计规格说明
- 源程序
- 目标
- 最大可能地找出最多的错误。
- 不能证明程序的正确性。
- 分类
- 测试用例的设计方法
- 黑盒测试(使用侧角度)
- 白盒测试(开发侧角度)
- 测试策略和过程
- 单元测试
- 集成测试
- 系统测试
- 验证测试
- 测试用例的设计方法
- 停止测试依据
- 超过了预定时间。
- 执行了所有测试用例,并无发现错误。
- 使用特殊测试用例判断测试停止。
- 正面指出停止测试具体要求。
- 单位时间内检查出故障的数量。
软件开发过程
- ☆客户需求
- 通过大量沟通,迭代
- 设计文档
- 构架
- 数据流示意图
- 状态变化示意图
- 流程图
- 注释代码
- 测试文档
- 测试计划
- 测试用例
- 软件测试报告
- 归纳、统计和总结
开发模型
- Big Bang
- 边写边改
- 瀑布
- 原型
- 螺旋开发
- 敏捷开发
测试模型
- V模型:强调过程与测试的阶段性。
- X模型
- H模型:强调测试与其他过程独立平行。
- W模型:强调各阶段过程与测试并发执行。
测试执行过程
- 初测期
- 细测期
- 回归测试期
Chapter 2
充分性原则
- 单调性
- 非复合性
- 非分解性
- 复杂性
- 回报递减率
静态测试
- 代码检查
- 静态结构分析
- 代码质量度量
- Line复杂度:行数
- Halstead复杂度:运算符和运算元数量
- McCabe复杂度:圈复杂度
动态测试
- 功能确认与接口测试
- 覆盖率分析
- 性能分析
- 内存分析
黑盒测试与白盒测试比较
单元测试
- 辅助模块
- 驱动模块
- 桩模块
- 主要任务
- 接口模块
- 局部数据结构
- 独立路径
- 循环边界条件
- 错误处理
集成测试
- 非增量式(单元测试后一步到位集成)
- 增量式
- 自顶向下
- 深度优先
- 广度优先
- 自底向上
- 混合
- 自顶向下
验收测试(考的概率不大。。以防万一)
- 功能测试
- 如完整的工资计算过程。
- 逆向测试
- 如检验不符合要求数据而引起出错的恢复能力
- 特殊情况
- 如极限测试、不存在的路径测试。
- 文档检查
- 强度检查
- 如大批量的数据或者最大用户并发使用。
- 恢复测试
- 如硬件故障或用户不良数据引起的一些情况。
- 可维护性的评价
- 用户操作测试
- 如启动、退出系统等。
- 用户友好性检验
- 安全测试
面向对象的测试(同上)
- 策略
- 基于线程的测试
- 基于使用的测试
Chapter 3 黑盒测试(用户测试/功能测试/数据驱动测试)
常用方法
- 等价类划分法
- 边界值法
- 因果图法
- 决策表法
Chapter 4 白盒测试(程序员测试)
常用方法
- 逻辑覆盖测试
- 语句覆盖
- 判定覆盖
- 条件覆盖
- 条件-判定覆盖
- 组合覆盖
- 路径覆盖测试
- 路径:入口到出口
- 环形复杂度
- V(G)=边-点+2
- V(G)=判定节点数+1