软件
软件是程序、数据以及软件形成过程中各类文档的结合
软件按照层次划分可以划分为:系统软件、应用软件
按照组织划分:商业软件、开源软件
按照结构划分:单击软件、分布式软件
所有不满足需求或者超出需求的都是缺陷(bug)
软件缺陷的定义
- 软件未实现产品说明书要求的功能
- 软件出现了产品说明书指明不该出现的功能
- 软件没有实现产品说明书虽未明确提出但应该实现的功能
- 软件实现了产品说明书未说明的功能
- 软件难以理解、不易使用、运行缓慢或者其他问题
软件测试的定义和目的
软件测试的定义:软件测试是对软件形成过程中的所有工作产品(包括程序、数据以及相关文档)进行的测试
软件测试的思维:
- 确认(正向思维):证实特定目的的功能或应用是否已实现
- 验证(反向思维):通过检查和提供客观证据正式指定的需求是否满足
软件测试的目的:
规避风险 以最少的人力、物力找出软件的缺陷,并确保其得以修复,避免由于软件缺陷造成的商业风险
引导后续工作利用测试过程中得到的测试结果和测试信息,作为后续项目开发以及测试工作的开展的重要输入,避免同样的错误
提高软件测试的效率 采用更加高效的测试管理手段,提高软件测试的效率和软件质量
测试和调试的区别:
测试 | 调试 |
---|---|
测试人员 | 开发人员 |
找bug | 调通代码 |
黑盒测试、等价类划分法、边界值划分法、因果图法、判定表法、场景法、功能图法、正交实验法 | debug、逻辑算法等 |
反向思维 | 正向思维 |
测试是从已知条件开始,使用预先定义的过程,并有预知的结果
调试是从位置条件开始,过程未知,结果未知
测试可计划,可预先制定测试用例和过程,工作进度可度量
测试对象:代码、数据、文档;调试对象:代码
软件测试生命周期和模型
软件质量引发软件危机,软件工程结果软件质量问题;
软件工程分为软件开发技术和软件项目管理两部分,软件项目管理包括软件质量、项目估算、进度控制、人员组织、配置管理、项目计划等
软件的生命周期
- 需求分析-------------------------------------需求规格说明书
- 概要设计-------------------------------------系统架构文档
- 详细设计-------------------------------------详设文档
- 编 码--------------------------------------源代码
- 测 试-------------------------------------测试报告
- 验 收-------------------------------------产品
生命周期模型
瀑布模型
定义阶段: 计划 项目计划书
开发阶段 : 需求分析 需求说明书
设计 概要设计、详细设计
编码 源代码
测试 测试报告
运行、维护 产品
缺点:
- 过于强调顺序
- 将测试放在编码之后
- 不能适应用户需求的变化
优点: - 为项目提供了按阶段划分的检查点
- 前一阶段完成后只需关注后续阶段
螺旋模型
螺旋模型是一种演化软件开发过程的模型,兼顾了快速原型的迭代特征以及瀑布模型系统化与严格监控的特征
引入了其他模型不具备的风险分析,是软件在无法排除重大风险时有机会停止,以减小损失
螺旋模型更适合大型的、昂贵的系统及软件应用
迭代模型
迭代包括产品发布的全部开发活动,
敏捷开发模型
增量模型
把软件分割成独立的模块,分批次完成和交付
缺点:打破原有的软件结构和框架,可能会带来一定的风险
增量模型一般会与迭代模型一起应用
快速原型模型
原型:可以模拟操作、简单运行的模型
典型的应用工具:Axure
产品经理制作原型——>原型——>客户评估——>开发