目录
前言
本学期开设的《软件质量保证与测试》课程是软件工程专业中较为重要的一门专业课程,通过该课程的学习为今后从事软件测试岗位的同学打下坚实基础。若有错误,欢迎指正。
1.1 软件测试的必要性
有时软件的缺陷所带来的的事故和损失是巨大的。
1.2 软件测试的原因
- 软件总存在缺陷。只有通过测试,才可以发现软件缺陷。也只有发现了缺陷,才可以将软件缺陷从软件产品或软件系统中清理出去。
- 软件中存在的缺陷给我们带来的损失是巨大的,这也说明了软件测试的必要性和重要性。
- 测试是所有工程学科的基本组成单元,自然也是软件开发的重要组成部分。
- 测试人员水平越高,找到软件问题的时间就越早,软件就越容易更正,产品发布之后越稳定,公司赚的钱也越多,微软就是一个典型的例子。
1.3 什么是软件测试?
1.3.1 软件测试定义的两面性
1.3.2 软件测试的定义
IEEE 的定义 :
1.在特定的条件下运行系统或构件,观察或记录结果,对系统的某个方面做出评价。
2.分析某个软件项以发现现存的和要求的条件之差别(即错误)并评价此软件项的特性。
更完整定义:
软件测试是由“验证(Verification)”和“有效性确认(Validation)”活动构成的整体。(V&V)
“验证”:检验软件是否已正确地实现了产品规格书所定义的系统功能和特性。
“有效性确认”:确认所开发的软件是否满足用户真正需求的活动。
1.3.3 软件测试的价值
- 全面评估产品质量,获得有关产品质量的全面、客观的信息。
- 发现问题,督促问题解决,提高产品质量。
- 持续提供质量反馈、及时揭示质量风险,有助于控制项目风险,提高构建的质量。
- 通过缺陷分析,获得缺陷模式,有助于缺陷预防。
1.4 软件测试和开发的关系
软件测试在开发中应贯穿始终。
1.5 测试和质量保证的关系
软件质量保证(Software Quality Assurance,SQA)活动是通过对软件产品有计划的进行评审和审计来验证软件是否合乎标准的系统工程,通过协调、审查和跟踪以获取有用信息,形成分析结果以指导软件过程。
SQA活动:技术方法的应用、正式技术评审的实施、软件测试、标准的执行、修改的控制、度量、质量记录和记录保存。
软件测试与SQA对比:
- SQA指导、监督软件测试的计划和执行,督促测试工作的结果客观、准确和有效,并协助测试流程的改进。
软件测试是SQA重要手段之一,为SQA提供所需的数据,作为质量评价的客观依据。 - SQA是一项管理工作,侧重于对流程的评审和监控。
软件测试是一项技术性的工作,侧重对产品进行评估和验证。
1.6 测试驱动开发(TDD)的思想
TDD(Test-Driven Development)的实践
1.7 软件特征与软件工程
1.7.1 软件特征
- 软件是开发产生的,而不是用传统方法制造。
- 软件不会像硬件一样有磨损。但会退化
- 很多软件不能通过已有构件组装,只能自己定义。
- 软件是逻辑产品
硬件(左)、软件(右)失效曲线图
软件维护要比硬件维护复杂得多
1.7.2 软件工程
软件过程
全面的质量管理,促进了不断的过程改进,带来了成熟的软件工程方法。
软件工程的根基,在于对质量的关注.
软件工程视图
我们可以把与软件工程相关的工作分为三个阶段:
- 定义阶段针对“做什么”:软件项目计划、需求分析
- 开发阶段针对“如何做”:软件设计、代码生成、软件测试
- 维护阶段针对“改变”:纠错、适应、增强、预防
1.8 软件的质量
软件质量保证(SoftwareQuality Assurance,SQA)是一种应用于整个软件过程的保护性活动。
软件质量从以下三方面考虑:
- 软件结构方面
- 功能与性能方面
- 开发标准与文档方面
软件质量是:
- 系统、部件或者过程满足规定需求的程度。
- 系统、部件或者过程满足顾客或者用户需要或期望的程度。
- 该定义相对客观,强调了产品(或服务)和客户/社会需求的一致性。
软件主要特征:
- 功能性:软件实现的功能达到要求的和隐含的用户需求以及设计规范的程度,
- 可靠性:软件在指定条件和特定时间段内维持性能的能力程度,
- 易使用性:用户使用该软件所付出的学习精力,
- 效率:在指定条件下,软件功能与所占用资源之间的比值,
- 可维护性:当发现错误、运行环境改变或客户需求改变时,程序能修改的容易程度,
- 可移植性:将软件从一种环境移入另一种环境的容易程度。
软件质量保证和测试的关系:
1.9 软件质量保证与测试人才的特点
1.现代软件研发对软件人才的需求
2.研发方法的差别
小结
软件质量保证是建立一套有计划,有系统的方法,来向管理层保证拟定出的标准、步骤、实践和方法,能够正确地被所有项目所采用。目的是使软件过程对于管理人员来说是可见的。
通过对软件产品和活动进行评审和审计来验证软件是合乎标准的。软件质量保证组在项目开始时就一起参与建立计划、标准和过程。这些将使软件项目满足机构方针的要求。
软件测试是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。