1 软件缺陷的定义
- 软件未实现产品说明书要求的功能
- 软件出现了产品说明书指明不应该出现的功能
- 软件实现了产品说明书未提到的功能
- 软件未实现产品说明书虽未明确提及但应该实现的目标
- 软件难以理解、不易使用、运行缓慢或者(从测试的角度看)最终用户会认为不好
所有不满足需要或超出需求的都是缺陷。没有不存在缺陷的软件,只有迄今为止尚未发现的缺陷。
2 软件测试定义和目的
2.1 软件测试定义
- 正向思维的定义
出发点:使自己确信产品是能够正常工作的评价一个程序和系统的特性或能力,并确定它是否达到期望的结果,软件测试就是以此为目的的任何行为。 - 反向测试的定义
出发点:测试是为了发现错误而执行一个程序或者系统的过程。 - IEEE定义的软件测试
– 在规定条件下运行系统或构件的过程:观察和记录结果,并对系统或构件的某些方面给出评价; – 分析软件项目的过程:检测现有状况和所需状况之间的不同,并评估软件项目的特性。 - 广义软件测试的定义
– 软件测试是对软件形成过程中所有工作产品(包括程序以及相关文档)进行测试,而不仅仅是对程序的运行进行测试 确认(Validation): 通过检查和提供客观证据来证实特定目的功能或应用是否已经实现 验证(Verification): 通过检查和提供客观证据来证实指定的需求是否满足
2.2 软件测试目的
- 以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,保证各种错误和缺陷得以修复,避免软件发布后由于潜在的软件错误和缺陷造成的隐患所带来的商业风险。
- 同时利用测试过程中得到的测试结果和测试信息,作为后续项目开发和测试过程改进的重要输入,避免在将来的项目开发和测试中重复同样的错误。
- 采用更加高效的测试管理手段,提高软件测试的效率和软件产品的质量。
2.3 测试和调试的区别
| 测试 | 调试 |
---|
主体 | 测试人员 | 开发 | 目标 | 找bug | 将错误修改正确 | 方法 | 等价类、边界值等 | 程序和逻辑算法 | 思路 | 反向思维 | 正向思维 |
- 测试是从已知的条件开始,使用预先定义的过程,并且有预知的结果;调试是从未知的条件开始。结束的结果可能不可预计。
- 测试可以计划,可以预先制定测试用例和过程,工作进度可以度量描述调试的过程或持续时间相对比较困难。
- 测试的对象包括软件开发过程中的文档、数据以及代码,而调试的对象一般来说只是代码。
3 软件危机
软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现的一系列严重问题的现象。
4 软件工程
软件工程包括两方面的内容:
- 软件开发技术:软件开发方法学、软件工具和软件工程环境
- 软件项目管理:软件质量、项目估算、进度控制、人员组织、配置管理、项目计划
- 引起软件危机的主要问题是软件质量问题
- 软件工程主要解决的是软件质量问题
- 软件测试是软件质量管理体系中一个非常重要的手段
5 软件的生命周期
常见软件生命周期模型:
5.1 瀑布模型
瀑布模型:最早提出的软件开发的过程模型。
- 存在的问题:
(1)强调时间顺序的严格执行。前阶段不完成,后阶段不开始。 (2)将测试放在了编码之后。没有体现出测试贯穿软件生命周期的原则。可以避免需求的问题一直延续到代码完成才被暴露或者被发现。 - 优点:
(1)为项目提供按阶段划分的检查点。 (2)当前一阶段完成后,只需要去关注后续阶段。 - 缺点:
(1)各阶段的划分完全固定,阶段之间产生大量的文档,极大的增加了工作量。 (2)线性开发,用户等到整个过程的末期才能见到开发成果,从而增加了开发时长和风险。 (3)瀑布模型不适应用户需求的变化。
5.2 螺旋模型
螺旋模型是一种演化软件开发过程模型,它兼顾了快速原型的迭代的特征以及瀑布模型的系统化与严格监控。
- 引入了其他模型不具备的风险分析,使软件在无法排除重大风险时有机会停止,以减少损失。
- 螺旋模型更适合大型的昂贵的系统级的软件应用。
5.3 迭代模型
迭代包括产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他元素,强调开发的深入。 在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程。
- 降低了在一个增量上的开支风险。
- 降低了产品无法按照既定进度进入市场的风险。
- 加快了整个开发工作的进度。
- 迭代过程这种模式使适应需求的变化会更容易些。
5.4 敏捷开发模型
敏捷宣言,也叫敏捷软件开发宣言,正式宣布了对四种核心价值和十二条原则,可以指导迭代的以人为中心的软件开发方法。
- 四种核心价值:
① 个体和互动 高于 流程和工具 ② 工作软件 高于 详尽文档 ③ 客户合作 高于 合同谈判 ④ 响应变化 高于 遵循计划
5.4 增量模型
增量模型:把软件分割成独立的模块,分批次的完成交互。
- 缺点:打破原有的软件结构或框架,可能会带来一定的风险。
- 增量模型一般会和迭代模型一起运用。如:
1)软件增加了新功能; 2)优化了…功能; 3)修复了某些未知/已知bug。
5.5 快速原型模型
原型:就是一个模板模型。可以模拟操作、简单运行。 典型应用和工具:Axure。制作原理。 思想:快速原型是利用原型辅助软件开发的一种新思想。经过简单快速分析,快速实现一个原型,用户与开发者在试用原型过程中加强通信与反馈,通过反复评价和改进原型,减少误解,弥补漏洞,适应变化,最终提高软件质量。
- 优点:克服瀑布模型的切点,减少由于软件需求不明确带来的开发风险,互动性更高更容易了解客户需求,反复循环。
- 缺点:
1)所选用的开发技术和工具不一定符合主流的发展。 2)快速建立起来的系统结构加上连续的修改可能会导致产品质量低下。
|