1、软件的概念——程序+数据+文档=软件
1)运行时,能够提供所要求功能和性能的指令或计算机程序集合。
2)程序能够满意地处理信息的数据结构。
3)描述程序功能需求以及程序如何操作和使用所要求的文档。
以开发语言作为描述语言,可以认为:软件=程序+数据+文档
2、软件→软件危机→软件工程
软件危机:软件危机泛指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
软件工程:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。
3、软件测试
定义1(Hetzel):评价一个程序和系统的特性或能力,并确认它是否达到预期的结果,检查是否满足规定的需求。
定义2(Myers):测试是为发现错误而执行程序的过程。
定义3(现代): 是对软件需求分析、设计、编码的最终复查的一系列过程,是软件质量保证的关键步骤。
4、测试目的
1、 发现缺陷,提高质量:发现并纠正软件中的错误来提高软件质量( 正面测试、反面测试)
2、 验证是否满足需求:验证软件的功能和性能等满足需求(功能需求、性能需求、可靠性需求等)
3、 建立软件质量的信心:测试报告提供软件质量的相关信息,建立起对软件质量的信心(正面测试是否充分、 反面测试是否充分)
5、测试工作流程
软件测试过程包括:
测试计划和控制
测试需求分析和用例设计
实现和执行测试用例
评估出口准则和报告
测试结束活动
计划 |
控制 |
分析 |
设计 |
识别测试任务 定义测试目标 定义为达到测试目标和任务所必须的测试活动 |
测试过程的监控应该贯穿所有测试活动 应该及时通过监控信息的反馈,适时的调整测试活动,比如调整测试计划 应该制定一些可度量的监控目标,从而监控测试过程 |
评审测试依据(比如需求、系统架构、设计和接口说明等) 评估测试依据和测试对象的可测性 通过对测试项、规格说明、测试对象行为和结构的分析,识别测试条件并确定其优先级 |
设计测试用例并确定优先级 确定测试条件和测试用例所需的必要的测试数据 规划测试环境的搭建和确定测试需要的基础设施和工具 |
6、基于生命周期的软件测试
V模型
V模型是软件开发瀑布模型的变种,它反映了测试活动与分析和设计的关系
V模型特点:
定义:基本的开发过程和测试行为
标明:测试过程中存在不同类型、不同级别的测试
描述:不同测试阶段和开发过程期间各阶段的对应关系
W模型:
W模型特点:
增加了软件各开发阶段中应同步进行的 验证 (verification)和 确认(validation) 活动。
基于“尽早地和不断地进行软件测试”的原则。
V模型和W模型的局限性
- 串行活动,无法更好适应变更:把软件的开发视为需求、设计、编码等一系列的串行活动,无法解决需求变更等变更调整。
- 线性的前后关系,无法有效支持迭代:开发和测试保持线性的前后关系,上一阶段完成才能开始下一阶段,无法有效,快速支持产品迭代。
- 测试完整性不足:顺序模型中没有很好体现测试流程的完整性。
生命周期各个阶段的测试内容
需求阶段
评估被测软件的风险,以此决定所采用的测试力度
- 软件工程统计结果发现
− 50%以上的系统错误是由于错误的需求或缺少需求导致的
− 超过80%的开销花在追踪需求的错误上
- 需求测试贯穿了整个软件开发周期,通过需求测试
− 可指导软件测试的各个阶段
− 可帮助我们设计整个测试的进行,测试计划怎样安排,测试用例怎样选取,软件的确认要达到哪些要求等
设计阶段
设计阶段的测试活动
- 在概要设计阶段,测试人员应阐述测试方法和测试评估准则,编写测试计划,成立测试小组,安排具有里程碑的测试日程
- 在详细设计阶段,测试人员要开发或获取确认支持工具,生成功能测试数据和测试用例
设计阶段的评审
- 对实际阶段处理的完整性进行正式的评价
编码阶段
在编程阶段完成测试用例开发,对程序进行实际的测试:
- 系统是否可维护
- 解决的首要问题是编码是否和设计一致
- 系统的规格说明是否正确地实现
- 编码是否按照既有的标准进行
- 是否有充分的测试计划评价可执行的程序
- 程序是否提供了足够的文档资料
- 程序内部是否有足够的注释等
测试阶段
- 在全生命周期软件测试方法中,由于在需求、设计、编码阶段都进行了测试,因此测试阶段的问题相对传统的软件测试中的问题要少一些
- 在测试阶段要进行第三方的正式确认测试,检验所开发的系统是否能按照用户提出的要求运行
- 在测试阶段要使得用户能成功地安装一个新的应用系统来进行测试
7、软件测试分类
四种软件测试级别
组件/单元测试、集成测试、系统测试、验收测试