软件 = 程序 + 数据 + 文档
一、软件的十大特性
- 无形的
- 复杂的智力产品
- 尚未自动化
- 不存在完全没有缺陷的产品
- 复制简单,但成本有限
- 软件的管理更加独特
- 对计算机系统环境高度依赖
- 软件的维护在于升级、优化和功能更新,甚至重构
- 不会因使用而损坏
- 应用范围极广
二、软件的分类
软件分为系统软件和应用软件
- 系统软件例如操作系统、汇编程序、诊断程序等,它是管理硬件并协调其工作的
- 应用软件例如浏览器、播放器、游戏等,它是用于特定用途的程序
三、软件的生命周期
- 问题定义
- 可行性研究
- 需求分析
- 概要设计
- 详细设计
- 编码和单元测试
- 综合测试
- 软件维护
四、开发模型
- 瀑布模型:线性进行(计划→需求分析→设计→编码→测试→运行维护),每一步都接收上一步的结果,但开发风险高,早期的错误可能要等到后期才能发现
- 原型模型:客户与开发紧密交互,细化需求
- 螺旋模型:将瀑布模型和原型模型结合起来,经历4个步骤(制定计划→风险分析→实施工程→客户评估),但过度强调风险
- 敏捷模型:以人为核心、迭代、循序渐进的开发,开发周期短,增量式开发,并利用自动化测试来监控,重沟通少文档,测试先行,但对团队综合素质要求较高
五、开发文档
- 需求分析文档
- 概要设计文档
- 详细设计文档
- 测试设计文档
- 测试用例
- 测试报告
六、软件测试的概念
软件测试是在规定的条件下对程序进行操作,以发现程序错误、衡量软件质量、判断其是否满足需求。
测试用例 = 测试数据 + 操作步骤 + 期望结果 + 测试环境
七、项目进程
- 编程阶段——白盒测试(单元测试)
- 编程完成——集成测试
- 提测阶段——冒烟测试(自动化为主)
- 系统测试——黑盒、安全、性能测试等
- 验收阶段——配合用户
八、测试模型
- V模型
- W模型
- H模型
- X模型
九、覆盖率
覆盖率用于度量测试完整性
覆盖率 = 执行过的item数 / item总数
覆盖率越高,成本越大
- 需求覆盖 = 被验证到的需求数量 / 总的需求总数
- 用例覆盖 = 验证过的用例数量 / 总的用例总数
十、测试的原则
- 所有测试都应追溯到用户需求
- 尽早启动测试工作
- Pareto法则(测试能消除96%的缺陷)
- 穷尽测试是不可能的
- 开发会对测试产生免疫
- 每次缺陷修复会引入新的缺陷
- 细心、信心、耐心,沟通意识 + 怀疑意识