目录
6、软件质量保证SQA(Software Quality Assurance)
8、测试驱动开发TDD(Test-Driven Development)
1、为什么要进行软件测试
(1)软件中存在的缺陷可能会给我们带来巨大损失或灾难,在推出产品或系统前,必须要进行软件测试
(2)测试是所有工程学科的基本组成单元,自然也是软件开发的重要组成部分
(3)任何软件总是存在缺陷;只有通过测试,才可以发现软件缺陷;当解决主要缺陷后,才可保证软件质量
2、什么是软件测试(Software Testing)
软件测试是一种检测软件的正确性、完整性、安全性、评估其质量的活动过程
换句话说,软件测试是一种以发现程序错误、衡量软件质量为目的,并对其是否满足用户需求进行评估
的活动过程
3、软件测试特点
(1)软件测试的开销大,通常约占项目总成本的30%-50%
(2)系统越复杂,其测试难度越大
4、软件测试法则
(1)有穷性:对于任何系统,穷尽测试是不可能的
(2)难创造性:测试工作可以具有创造性,但较困难
(3)不完全性:测试旨在减少系统中缺陷数目,不太可能完全消除系统所有缺陷
(4)计划性:否则无法确保测试项目顺利完成
(5)独立性:否则难以让人信服
(6)测试是有风险的、成本高昂的
5、测试与开发的关系
传统的瀑布模型 | 改进的V模型 |
6、软件质量保证SQA(Software Quality Assurance)
(1)定义:通过对软件产品进行有计划的评审与审计,来确保软件开发按照产品质量过程标准实施项目的管
理活动
(2)主要任务
Δ1、对软件过程各个阶段任务的完成质量及出现问题进行评审、跟踪
Δ2、审查和验证软件产品开发过程是否遵守适用的标准、规程和要求,并最终确保产品满足用户需求
Δ3、建立软件质量要素的度量机制,对软件开发的各种质量指标进行量化,为管理者提供软件开发的质量
分析数据
(3)主要工作活动:
Δ1、质量规范制定
Δ2、技术评审实施
Δ3、软件测试流程追踪
Δ4、质量标准的监督执行
Δ5、软件质量要素度量
Δ6、质量数据分析与报告
7、软件质量保证与软件测试的关系
(1)SQA指导软件测试的计划与执行,监督测试工作结果的客观性、准确性与有效性,
并协助软件测试的工作流程改进
(2)软件测试是SQA工作落实的重要手段,它为SQA提供所需的质量数据,作为软件质量评价的客观依据 (3)SQA是一项软件质量管理性工作,侧重于对软件开发流程进行评审与监控
(4)软件测试是一项技术性工作,侧重于对软件质量特性进行检测与验证
8、测试驱动开发TDD(Test-Driven Development)
(1)定义:一种不同于传统软件开发流程的过程模型;它要求在编写某个功能的代码之前先编写测试代
码 ,然后编写功能代码,通过测试来推动整个软件开发工作的进行
(2)TDD模型的优势
Δ1、TDD根据客户需求编写测试用例,对功能的过程和接口都进行了设计,而且这种从使用者角度对代码
进行的设计通常更符合后期开发的需求
Δ2、TDD满足易测试和测试独立性的要求,采用松耦合设计,更多地依赖于接口而非具体的类,可提高系
统的可扩展性和抗变性
Δ3、TDD将测试工作提到编码之前,并频繁地运行测试,可以尽早地发现程序错误,降低后续测试及修复的成本,提高了代码的质量
Δ4、TDD支持持续的回归测试,便于实现系统重构
Δ5、TDD有助于编写简洁可用和高质量的代码,并加速开发过程