Download presentation
Presentation is loading. Please wait.
1
软件质量与测试
2
目录 第一篇 软件质量 第二篇 软件测试 第1章 软件质量概述 第2章 软件质量和配置管理 第3章 软件质量标准 第4章 软件全面质量管理
第一篇 软件质量 第1章 软件质量概述 第2章 软件质量和配置管理 第3章 软件质量标准 第4章 软件全面质量管理 第5章 软件评审 第二篇 软件测试 第6章 软件测试技术 第7章 白盒测试 第8章 黑盒测试 第9章 集成测试 第10章 系统测试 第11章 软件测试自动化 第12章 软件测试管理
3
第一篇 软件质量
4
第1章 软件质量概述 1.1 软件开发过程 1.1.1 计算机软件 1.1.2 软件开发过程 1.1.3 软件开发过程模型
5
1.2 软件质量 1.2.1 软件质量概述 IEEE(Institute of Electrical and Electronics Engineers,电气和电子工程师协会)中关于软件质量的定义是:系统、部件或者过程满足规定需求的程度;系统、部件或者过程满足客户或者用户需求或期望的程度。 1979年Fisher和Light将软件质量定义为:表征计算机系统卓越程度的所有属性的集合。1982年他们将软件质量定义修改为:软件产品满足明确需求一组属性的集合。 ANSI(American National Standards Institute,美国国家标准学会)在1983年给软件质量下的定义是:与软件产品满足规定的和隐含的需求能力有关的特征和特性的全体。 1994年国际标准化组织ISO8042将软件质量定义为:反映实体满足明确的和隐含的需求的能力和特性的总和。
6
3)顾客和用户觉得软件满足其综合期望的程度。 4)确定软件在使用中将满足顾客期望要求的程度。
ISO / IEC9126将软件质量定义为:它集合了软件产品需达到指定人员和指定要求的总和,指定的要求一般包括了对软件的性能、软件的兼容性、软件的主体功能等各个方面的描述和定义说明。软件质量的优劣决定了其软件产品是否满足用户的需求。衡量软件质量好坏的标准通常是交付的软件产品的缺陷数量的多少。对软件产品的质量影响的因素包括人、技术和过程,这些因素同样也决定了生产效率的高低。 GB/T 对软件质量定义是:软件质量是指软件产品中能满足给定需求的各种特性的总和。这些特性称为质量特性,包括:功能度、可靠性、易用性、时间经济性、可维护性和移植性等。 GB/T 对软件质量定义是: 1)软件产品中能满足给定需求的性质和特性的总体。 2)软件具有所期望的各种属性的组合程度。 3)顾客和用户觉得软件满足其综合期望的程度。 4)确定软件在使用中将满足顾客期望要求的程度。
7
1.2.2 软件质量保证SQA IEEE中对软件质量保证的定义是:质量保证是有计划和系统性的活动,它对部件和产品满足确定的技术需求提供足够的信心。 1.2.3 软件质量模型
8
1.McCall质量模型
9
2.Bohm质量模型
10
3.ISO的质量模型
11
1.3 软件缺陷 1.3.1 软件缺陷简介 1.3.2 软件缺陷产生的原因 1.3.3 软件缺陷的严重性和优先级 1.3.4 软件缺陷构成 1.3.5 软件缺陷的预防和修复
12
第2章 软件质量度量和配置管理 2.1 软件质量度量 2.1.1 软件质量度量概述 2.1.2 软件质量度量过程中常见的问题
13
软件质量度量模型
14
第2章 软件质量度量和配置管理 2.2 软件配置管理 2.2.1 软件配置管理的概述 2.2.2 配置管理的主要内容
15
第3章 软件质量标准 3.1 软件质量标准概述 3.1.1 国际标准 3.1.2 国家标准 3.1.3 行业标准 3.1.4 企业标准
第3章 软件质量标准 3.1 软件质量标准概述 3.1.1 国际标准 3.1.2 国家标准 3.1.3 行业标准 3.1.4 企业标准 3.1.5 其他标准
16
3.2 软件能力成熟度模型CMM 3.2.1 CMM的含义 二十世纪三十年代,经济学家Walter Shewart提出了产品质量的分层控制原理。CMM(Capability Maturity Model for Software)即软件能力成熟度模型,CMM的研究始于1986年11月,为了满足美国联邦政府评估软件供应商能力的要求,美国卡内基·梅隆大学软件工程研究院(SEI)展开研究,以探索一种保证软件产品质量、缩短开发周期和提高工作效率的软件工程模式与标准规范。
17
3.2.2 CMM的五个级别 级别1:初始级。描述了不成熟,或者说是未定义过程的组织,没有为软件开发和维护提供一个稳定的环境。项目成功具有偶然性。 级别2:可重复级。需要解决需求管理,软件项目计划,软件项目跟踪和监控,软件子合同管理,软件质量保证,软件配置管理等过程区域。 级别3:已定义级。需要解决组织级过程焦点,组织级过程定义,培训大纲,集成软件管理,软件产品工程,组间协调,同行评审等过程区域。 级别4:已管理级。需要解决定量过程管理,软件质量管理等过程区域。企业为软件产品和软件过程制定了量化的质量目标。 级别5:优化级。需要解决缺陷预防,技术更新管理,过程更改管理等过程区域。企业以防止错误为目标,在过程实施之前想办法发现过程中的优点和缺点。 3.2.3 国内软件企业参与实施CMM
18
3.3 能力成熟度整合模型CMMI 3.3.1 CMMI的含义 CMMI的主要原则: 1.强调高层管理者的支持。过程改进往往也是由高层管理者认识和提出的,大力度的、一致的支持是过程改进的关键。 2.仔细确定改进目标,首先应该对给定时间内的所能完成的改进目标进行正确的估计和定义并制定计划。选择能够达到的目标和能够看到对组织的效益。 3.选择最佳实践,应该基于组织现有的软件活动和过程财富,参考其他标准模型,取其精华去其糟粕,得到新的实践活动模型。 4.过程改进要与组织的商务目标一致,与发展战略紧密结合。 3.3.2 CMMI的基本内容 3.3.3 CMM与CMMI的区别
19
3.4 ISO9000软件质量标准 3.4.1 ISO9000的主要内容 3.4.2 ISO9000和CMM/CMMI的关系
20
3.5 其他质量标准 3.5.1 IEEE质量标准 3.5.2 SPICE 3.5.3 ISO/IEC
21
第4章 软件全面质量管理
22
4.1 软件全面质量管理概述 4.1.1 质量管理和全面质量管理
4.1 软件全面质量管理概述 4.1.1 质量管理和全面质量管理 质量管理是指在质量方面指挥和控制组织的协调的活动。质量管理,通常包括制定质量方针和质量目标以及质量策划、质量控制、质量保证和质量改进。 全面质量管理(Total Quality Management,TQM)),20世纪50年代以来,随着生产力的迅速发展和科学技术的日新月异,人们对产品的质量从注重产品的一般性能发展为注重产品的耐用性、可靠性、安全性、维修性和经济性等。在生产技术和企业管理中要求运用系统的观点来研究质量问题。在管理理论上也有新的发展,突出重视人的因素,强调依靠企业全体人员的努力来保证质量此外,还有“保护消费者利益”运动的兴起,企业之间市场竞争越来越激烈。
23
4.1.2 软件全面质量管理的含义 全面质量管理由于适应科技、经济、社会的发展趋势,得到了迅速发展,在实践运用中取得了丰硕成果。全面质量管理强调系统、集成、统一和全员、全面、全过程的观点。其核心思想是,企业的一切活动都围绕着质量来进行,同时强调最佳经济和客户满意的约束条件。 软件全面质量管理是在使企业利润最大化的水平上,并充分满足用户明确或隐含要求的条件下,进行软件的规划、分析、设计、实施和维护活动,把研发团队的质量控制和质量设计活动构成为一体的一种有效管理体系。
24
4.2 软件全面质量管理的步骤和评审 本节主要讨论的软件全面质量管理的分为事前质量管理、事中质量管理和事后质量管理。软件全面质量管理中的评审工作由对软件项目计划书进行评审、对需求分析说明书进行评审、对概要设计说明书进行评审、对总体设计进行评审和测试评审五个部分组成。 4.2.1 软件全面质量管理的步骤 1.事前质量管理 2.事中质量管理 3.事后质量管理 4.2.2 软件全面质量管理中的评审
25
4.3 软件全面质量管理中的团队和质量控制 软件开发已经是一个团队工程项目,任何在软件全面质量管理中进行的团队管理,以及软件全面质量管理中的质量管控是本节主要讨论的内容。 4.3.1 软件全面质量管理中的团队 4.3.2 软件全面质量管理中的质量控制
26
第5章 软件评审 5.1 软件评审概述 1994年IEEE对软件评审下的定义是:软件评审是一种对软件元素所作的正式的评审活动。其目的是检验软件开发和软件测试各个阶段的工作是否齐全、规范,各阶段产品是否到达了规定的技术要求和质量要求,以决定是否可以转入下一阶段的工作。 M.E. Fagan在软件评审方面有突出的贡献,他在总结大量的实践后得到的结论是,用人们熟悉的运行程序的测试方法只能发现五分之一的故障,而认真的评审可以发现五分之四的故障。 Karl E. Wiegers(卡尔·威格)对软件评审的阐述:不管你有没有发现它们,缺陷总存在,问题只是你最终发现它们时,需要多少纠正成本,评审的投入把质量成本从昂贵的、后期返工转变为早期的缺陷发现。
27
5.2 软件评审的主要内容 5.2.1 软件评审目标 5.2.2 软件评审过程 5.2.3 软件评审原则 5.2.4 软件评审的特点
28
5.3 软件评审的几个阶段 5.3.1 需求评审 5.3.2 概要设计评审 5.3.3 详细设计评审 5.3.4 数据库设计评审 5.3.5 测试评审
29
5.4 避免进入评审误区 误区一:评审参与者不了解评审过程 误区二:评审人员评论开发人员,而不是产品 误区三:评审没有被安排进入项目计划 误区四:评审会议变成了问题解决方案讨论会 误区五:评审人员事先对评审材料没有足够了解 误区六:评审人员关注于非实质性问题 误区七:忽视细节 5.5 软件评审中的角色和职能
30
第二篇 软件测试
31
第6章 软件测试技术 6.1 软件测试的必要性 6.2 软件测试概述
32
1.IEEE给软件测试下的定义 1983年IEEE(国际电子电气工程师协会)提出的软件工程标准术语中给软件测试下的定义是:使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。 2.G. J. Myers给软件测试下的定义 G. J. Myers在其经典论著《软件测试的艺术》中对软件测试提出如下观点: 软件测试是为了发现错误而执行程序的过程; 测试是为了证明程序有错,而不是证明程序无错; 一个好的测试用例在于他能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。 3.从软件质量保证的角度给软件测试下的定义 从软件质量保证的角度看,软件测试是一种重要的软件质量保证活动,其动机是通过一些经济、有效的方法,捕捉软件中的错误,从而达到保证软件内在质量的目的。
33
6.2.1 软件测试过程模型 下面是几种典型的软件测试模型,有V模型、W模型和X模型,这些模型从不同程度反应了软件开发与测试关系。 6.2.2 软件测试用例 6.2.3 软件测试技术方法 6.2.4 软件测试的复杂性与经济性
34
6.3 软件测试过程
35
6.4 软件测试的原则与误区 软件测试是一项复杂的系统工程,在测试过程中一定要遵守一些原则,同时避免陷入一些误区。 6.4.1 软件测试的原则 6.4.2 软件测试的误区
36
6.5 软件测试的发展 软件测试作为信息产业的重要分支在我国发展十分迅速,并且业内对软件测试的发展也有着乐观和积极的态度。可以这样说,软件测试职业前景也是非常美好。 6.5.1 软件测试的发展历程 6.5.2 我国软件测试的发展历程 6.5.3 软件测试外包
37
6.6 软件测试工作 6.6.1 软件测试工程师 6.6.2 软件测试工作特点
38
第7 章 白盒测试 7.1 白盒测试概述 7.1.1 白盒测试含义
第7 章 白盒测试 7.1 白盒测试概述 7.1.1 白盒测试含义 白盒测试(White Box Testing)又称结构测试(Structural Testing)、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,“盒子”指的是被测试的软件,“白盒”指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。白盒测试法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。在使用这种方法时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
39
7.1.2 静态测试的和动态测试 7.1.3 软件测试与软件调试的区别
40
7.2 逻辑驱动覆盖测试 六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。语句覆盖每条语句至少执行一次。判定覆盖每个判定的每个分支至少执行一次。条件覆盖每个判定的每个条件应取到各种可能的值。判定/条件覆盖同时满足判定覆盖和条件覆盖。条件组合覆盖每个判定中各条件的每一种组合至少出现一次。路径覆盖使程序中每一条可能的路径至少执行一次。
41
7.3 其他几种白盒测试 7.3.1 程序插装测试 7.3.2 程序变异测试 7.3.3 循环测试
42
7.4 代码检查 代码检查(Code Inspection)的目的是确保代码编程标准有效的被执行,提高代码质量,减轻动态测试负担,提高代码可重复使用,降低项目风险与经费增加程序的可理解性,降低维护成本。代码检查是静态测试的一种,而静态测试则是为动态测试做准备。 7.4.1 桌前检查和代码走查 7.4.2 代码评审和同行评审 7.4.3 基于缺陷模式测试
43
第8章 黑盒测试 8.1 黑盒测试概述 8.1.1 黑盒测试含义
第8章 黑盒测试 8.1 黑盒测试概述 8.1.1 黑盒测试含义 黑盒测试(Black Box Testing)也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。 8.1.2 白盒测试和黑盒测试的比较
44
8.2 等价类划分法 8.2.1 什么是等价类 8.2.2 划分等价类的方法 8.2.3 设计测试用例 8.2.4 等价类划分法测试实例
45
8.3 边界值分析法 8.3.1 选择边界值测试原则 8.3.2 几种边界值分析法 8.3.2 边界值分析法应用实例
46
8.4 因果图法 8.4.1 什么是因果图法 8.4.2 因果图法应用实例
47
8.5 判断表法 在所有的黑盒测试方法中,基于判断表的测试是最严格,最具有逻辑性的测试方法。 8.5.1 什么是判断表 8.5.2 判断表法应用实例
48
8.6 正交试验设计法 当使用因果图来设计测试用例时,作为输入条件的原因与输出结果之间的因果关系有时很难从软件需求规格说明中得到,往往因果关系非常庞大,以至于根据因果图而得到的测试用例数目多的惊人,给软件测试带来工作量十分沉重。为了有效地、合理地减少测试的工时与费用,可利用正交实验设计方法进行测试用例的设计。 8.6.1 什么是正交试验设计法含义 8.6.2 正交实验法设计测试用例 8.6.3 正交实验法应用实例
49
8.7 其他黑盒测试方法 黑盒测试方法很多,除了上述方法以外,常用的测试方法还有故障猜测法、状态图法、随机数据法等。 8.7.1 故障猜测法 8.7.2 状态图法 8.7.3 随机数据法
50
第9章 集成测试 9.1 集成测试概述 集成测试在软件测试中占有十分重要的地位,一般说来,集成测试花费的时间远远超过单元测试。集成测试往往是一个持续的过程,不是一蹴而就的,因而在执行集成测试前合理地对其进行计划,对于集成测试的成功实施有重要的意义。
51
9.1.1 集成测试的必要性 5.1.2 集成测试的含义 9.1.3 单元测试、集成测试和系统测试间的区别 9.1.4 集成测试与开发的关系 9.1.5 集成测试的层次与原则
52
9.2 集成测试的方法 9.2.1 集成测试的辅助模块 9.2.2 非渐增式集成 9.2.3 渐增式集成 9.2.4 三明治集成 9.2.5 其他集成测试方法
53
9.3 集成测试用例设计 集成测试可以使用白盒测试或黑盒测试进行测试,以及将二者结合的灰盒测试方法。下面从几个方面说明如何设计集成测试用例。 9.4 集成测试过程
54
第10章 系统测试 10.1 性能测试 10.1.1 性能测试的含义
10.1 性能测试 10.1.1 性能测试的含义 性能测试(Performance Testing)是检验软件是否达到需求规格说明书中规定的各类性能指标,并满足一些性能相关的约束和限制条件。性能测试的目的通过测试,确认软件是否满足产品的性能需求,同时发现系统中存在的性能瓶颈,并对系统进行优化。 10.1.2 如何进行性能测试 10.1.3 性能测试的三个阶段和测试用例
55
10.2 压力测试 10.2.1 压力测试的含义 压力测试(Stress Testing)也叫负荷测试、强度测试,是指模拟巨大的工作负荷,以查看系统在峰值使用情况下是否可以正常运行。压力测试是通过逐步增加系统负载来测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,以此来获得系统性能提供的最大服务级别的测试。压力测试所涉及的方面主要包括:数据库大小、磁盘空间、可用内存空间、数据通信量等。
56
10.2.2 压力测试的特点 10.2.3 压力测试与性能测试的联系与区别 10.2.4 压力测试方法 10.2.5 压力测试执行
57
10.3 容量测试 10.3.1 容量测试的含义 所谓的容量测试(Volume Testing)是指采用特定的手段测试系统能够承载处理任务的极限值所从事的测试工作。这里的特定手段是指,测试人员根据实际运行中可能出现极限,制造相对应的任务组合,来激发系统出现极限的情况。 10.3.2 容量测试方法 10.3.3 容量测试的步骤
58
10.4 健壮性测试 10.4.1 健壮性测试的含义 健壮性测试(Robustness Testing)用于测试系统在出现故障时,是否能够自动恢复或者忽略故障继续运行。为了使系统具有良好的健壮性,要求设计人员在做系统设计时必须周密细致,尤其要注意妥善地进行系统异常的处理。 10.4.2 健壮性测试方法 10.4.3 设计健壮性测试的策略
59
10.5 安全性测试 10.6.1 安全性测试的含义 安全性测试(Security Testing)是有关验证系统的安全性和识别潜在安全性缺陷的过程。其目的是为了发现软件系统中是否存在安全漏洞。软件安全性是指在非正常条件下不发生安全事故的能力。 10.5.2 测试系统安全性的一些要考虑的问题 10.5.3 安全性测试的手段和层次 10.5.4 安全性测试方法 10.5.5 安全性测试标准
60
10.6 可靠性测试 10.6.1 可靠性测试的概念 可靠性测试(Reliability Testing)也称可靠性评估,指根据软件系统可靠性结构、寿命类型和各单元的可靠性试验信息,利用概率统计方法,评估出系统的可靠性特征量。 10.6.2 可靠性测试方式 10.6.3 几个可靠性测试数学模型
61
10.7 兼容测试 10.7.1 兼容测试概述 兼容测试(Compatibility Test )兼容性测试是指检查软件之间以及软件与硬件之间是否能够正确地进行交互和共享信息,即兼容性的测试。一般来说,兼容性指能同时容纳多个方面,在计算机术语上兼容是指几个硬件之间、几个软件之间或是软硬件之间的相互配合程度。 10.7.2 兼容性测试分类
62
10.8 可用性测试 10.8.1 可用性测试概述 可用性测试(Usability Testing)是指选取有代表性的用户尝试对产品进行典型操作,同时观察员和开发人员在一旁观察、聆听、做记录,用来改善易用性的一系列方法。该产品可能是一个网站、软件或者其他任何产品,它可能尚未成型。 10.8.2 可用性测试的方法 10.8.3 可用性测试的一些必备要素 10.8.4 可用性测试的一些注意事项
63
10.9 安装性测试 10.9.1 安装性测试的含义 安装测试(Installation Testing),确保该软件在正常情况和异常情况的不同条件下,首次安装、升级、完整的或自定义的安装都能进行安装。异常情况包括磁盘空间不足、缺少目录创建权限等。核实软件在安装后可立即正常运行。安装测试包括测试安装代码以及安装手册。安装手册提供如何进行安装,安装代码提供安装一些程序能够运行的基础数据。 10.9.2 安装性测试的三个主要方面 10.9.3 安装和卸载程序测试内容
64
10.10 容错性测试 10.10.1 容错性测试的含义 容错性测试也称负面测试(negative test)、例外测试(exception test),主要检查系统的容错能力,检查软件在异常条件下自身是否具有防护性的措施或者某种灾难性恢复的手段。 10.10.2 容错性测试
65
10.11 配置测试 10.11.1 配置测试的含义 配置测试(Configuration Testing)是指在不同的系统配置下能否正确工作,配置包括:软件,硬件,网络等。配置测试主要是针对硬件,其测试过程是测试目标软件在具体硬件配置情况下,出不出现问题,为的是发现硬件配置可能出现的问题。有时经常会与兼容性测试或安装测试一起进行。硬件配置分为以下几类:PC、组件、外围设备、接口、选项和内存、设备驱动等。 10.11.2 配置测试方法
66
10.12 冒烟测试 10.12.1 冒烟测试概述 10.12.2 冒烟测试的应用和内容
67
10.13 GUI软件测试 10.13.1 GUI软件测试概述 图形用户界面(Graphical User Interface,GUI)是计算机软件与用户进行交互的主要方式。GUI软件测试是指对使用GUI的软件进行的软件测试。 10.13.2 GUI软件测试方法 10.13.3 GUI常见的几个要素 10.13.4 GUI基本测试内容 10.13.5 GUI测试常见错误
68
10.14 文档测试 文档测试就是对交付给用户的系统文档进行检验,通过文档测试可以保证文档的准确性,文档测试要求测试人员站在用户的角度评价文档的文字、说明、操作步骤等内容是否正确。 10.14.1 文档测试的含义 10.14.2 文档性测试方法
69
10.15 网站测试 网站测试是指的当一个网站制作完上传到服务器之后针对网站的各项性能的所做的检测工作。它与软件测试有一定的区别,其除了要求外观的一致性以外,还要求其在各个浏览器下的兼容性,以及在不同环境下的显示差异。
70
10.16 恢复测试 10.16.1 恢复测试的含义 10.16.2 恢复测试的主要内容和步骤 10.16.3 恢复测试中一些要注意的地方
71
10.17 协议测试 10.17.1 一致性测试 10.17.2 互操作性测试
72
10.18 验收测试 10.18.1 验收测试概述 10.18.2 α测试和β测试 10.18.3 验收测试的过程和主要内容
73
第11章 软件测试自动化 11.1 软件测试自动化含义 11.1.1 软件测试自动化的概念 11.1.2 软件测试自动化的特点
第11章 软件测试自动化 11.1 软件测试自动化含义 11.1.1 软件测试自动化的概念 11.1.2 软件测试自动化的特点 11.2 软件测试自动化的实施
74
11.3 软件测试自动化工具的选择与比较 11.3.1 常用软件测试自动化工具介绍 11.3.2 白盒测试工具 11.3.3 黑盒测试工具 11.3.4 测试管理工具 11.3.5 软件测试自动化中的问题、对策和工具的选择
75
11.4 LoadRunner 11.5 WinRunner 11.6 AutoRunner
76
第12章 软件测试管理 12.1 软件测试的组织 12.2 软件测试的人员组织 12.3 软件测试文件管理 12.4 软件测试管理原则
第12章 软件测试管理 12.1 软件测试的组织 12.2 软件测试的人员组织 12.3 软件测试文件管理 12.4 软件测试管理原则 12.5 测试管理体系 12.6 软件测试风险的控制 12.7 常用的测试管理工具
Similar presentations