《软件测试方法和技术》由会员分享,可在线阅读,更多相关《软件测试方法和技术(87页珍藏版)》请在金锄头文库上搜索。
1、软件测试方法和技术软件测试方法和技术主讲:田小霞n n教学重点:1 1、软件测试基础理论、软件测试基础理论2 2、软件测试过程、软件测试过程3 3、软件质量的概念及质量保证体系、软件质量的概念及质量保证体系n n教学难点:1 1、软件测试的意义、软件测试的意义2 2、软件质量保证和软件测试的关系、软件质量保证和软件测试的关系第一章第一章 测试概述测试概述 1.1 1.1 软件测试背景软件测试背景1.2 1.2 软件测试基础理论软件测试基础理论1.3 1.3 软件开发过程软件开发过程1.4 1.4 软件测试过程软件测试过程1.5 1.5 软件质量保证概要软件质量保证概要1.6 1.6 软件测试职
2、业软件测试职业 1.1 软件测试背景软件测试背景 1.1.1 1.1.1 软件缺陷与故障软件缺陷与故障n n案例案例 n n软件缺陷的定义软件缺陷的定义n n软件缺陷的特征软件缺陷的特征1.1.2 1.1.2 软件缺陷产生的原因软件缺陷产生的原因1.1.1 软件缺陷与故障软件缺陷与故障1 1、软件缺陷和软件故障案例、软件缺陷和软件故障案例n n案例案例1 1 美国迪斯尼公司的狮子王游戏软件美国迪斯尼公司的狮子王游戏软件bug bug 兼容性问题兼容性问题n n案例案例2 2 美国航天局火星登陆事故美国航天局火星登陆事故 系统测试系统测试 衔接问题衔接问题 n n案例案例3 3 跨世纪跨世纪“
3、“千年虫千年虫” ”问题问题 n n案例案例4 4 爱国者导弹防御系统炸死自家人爱国者导弹防御系统炸死自家人 系统时钟误差积累系统时钟误差积累 n n案例案例5 5 英特尔奔腾浮点除法英特尔奔腾浮点除法上述所有实例中的软件问题在软件工程或软件测试中都被称为上述所有实例中的软件问题在软件工程或软件测试中都被称为上述所有实例中的软件问题在软件工程或软件测试中都被称为上述所有实例中的软件问题在软件工程或软件测试中都被称为软件软件软件软件缺陷或软件故障缺陷或软件故障缺陷或软件故障缺陷或软件故障。 软件缺陷与故障软件缺陷与故障(续)(续) 2 2、软件缺陷的定义、软件缺陷的定义 (1 1)软件未达到产品
4、说明书中已经标明的功能;)软件未达到产品说明书中已经标明的功能; (2 2)软件出现了产品说明书中指明不会出现的错误;)软件出现了产品说明书中指明不会出现的错误; (3 3)软件未达到产品说明书中虽未指出但应当达到的目标;软件未达到产品说明书中虽未指出但应当达到的目标; (4 4)软件功能超出了产品说明书中指明的范围;软件功能超出了产品说明书中指明的范围; (5 5)软件测试人员认为软件难以理解、不易使用,或者最终软件测试人员认为软件难以理解、不易使用,或者最终用户认为该软件使用效果不良。用户认为该软件使用效果不良。软件缺陷与故障软件缺陷与故障(续)(续)3 3、软件缺陷的特征、软件缺陷的特征
5、n n“ “看不到看不到” ” 软件的特殊性决定了缺陷不易看到软件的特殊性决定了缺陷不易看到n n“ “看到但是抓不到看到但是抓不到” ” 发现发现了缺陷,但不易找到了缺陷,但不易找到问题发问题发生的原因生的原因所在所在1.1.2 软件缺陷产生的原因(软件缺陷产生的原因(P28) 软件缺陷的主要类型软件缺陷的主要类型/ /现象:现象:p 功能、特性没有实现或部分实现p 设计不合理,存在缺陷p 实际结果和预期结果不一致p 运行出错,包括运行中断、系统崩溃、界面混乱p 数据结果不正确、精度不够p 用户不能接受的其他问题,如存取时间过长、界面不美观 其他其他10%软件产品说明软件产品说明书(需求)书
6、(需求)56%编写代码编写代码7%设设 计计27%图图1-1 1-1 软件缺陷产生的原因分布软件缺陷产生的原因分布1.2 软件测试基础理论软件测试基础理论1.2.1 1.2.1 软件测试的定义软件测试的定义1.2.2 1.2.2 软件测试的基本理论软件测试的基本理论1.2.3 1.2.3 软件测试和缺陷修复的代价软件测试和缺陷修复的代价1.2.4 1.2.4 软件测试技术概要软件测试技术概要1.2.1 软件测试的定义软件测试的定义1、软件测试的定义几个观点: 测试是为了证明程序有错,而不是证明程序无错误; 一个好的测试用例是在于它能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误
7、的测试。 n n狭义定义:程序测试是为了发现错误而执行程序的过程。n n广义定义:将测试延伸到需求评审、设计审查活动中去,这种延伸后的软件测试,被认为是一种软件测试的广义概念。 n n 软件测试的定义为: 软件测试是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题与用户需求、预先定义的不一致性。软件测试的定义软件测试的定义(续)(续)2 2、软件测试的基本问题、软件测试的基本问题n n软件生命周期:软件生命周期:一个软件生命周期包括制定计划、一个软件生命周期包括制定计划、需求分析定义、软件设计、程序编码、软件测试
8、、需求分析定义、软件设计、程序编码、软件测试、软件运行、软件维护、软件停用等软件运行、软件维护、软件停用等8 8个阶段。个阶段。 n n软件测试的对象:软件测试的对象: 软件测试不等于程序测试。软件测试不等于程序测试。 软件测试贯串于软件定义和开发的整个过程。软件测试贯串于软件定义和开发的整个过程。 软件开发过程中所产生的软件开发过程中所产生的需求规格说明需求规格说明、概要概要设计规格说明设计规格说明、详细设计规格说明详细设计规格说明以及以及源程序源程序都是都是软件测试的对象。软件测试的对象。软件测试的定义软件测试的定义(续)(续)2 2、软件测试的基本问题(续)、软件测试的基本问题(续)n
9、n软件测试在软件生命周期中横跨两个阶段:软件测试在软件生命周期中横跨两个阶段: 第第一一个个阶阶段段:单单元元测测试试阶阶段段,即即在在每每个个模模块块编编写写出出以后所做的必要测试。以后所做的必要测试。 第第二二个个阶阶段段:综综合合测测试试阶阶段段,即即在在完完成成单单元元测测试试后后进行的测试,如集成测试、系统测试、验收测试。进行的测试,如集成测试、系统测试、验收测试。n n软件测试涉及的关键问题包括四个方面:软件测试涉及的关键问题包括四个方面: (1 1)测试由谁来执行。)测试由谁来执行。 (2 2)测试什么。)测试什么。 (3 3)什么时候进行测试。)什么时候进行测试。 (4 4)怎
10、样进行测试。)怎样进行测试。1.2.2 软件测试的基本理论软件测试的基本理论 1 1、软件测试的目的、软件测试的目的n发现软件缺陷n n发现软件缺陷,尽可能早一些n n发现软件缺陷,尽可能早一些,并确保其得以修复 注意:测试无法说明错误不存在,只能说明软件注意:测试无法说明错误不存在,只能说明软件注意:测试无法说明错误不存在,只能说明软件注意:测试无法说明错误不存在,只能说明软件错误已出现。错误已出现。错误已出现。错误已出现。 2 2、软件测试的原则、软件测试的原则(1 1)尽早地和及时地测试;)尽早地和及时地测试;(2 2)测试用例应当由测试数据和与之对应的预期结果这两部)测试用例应当由测试
11、数据和与之对应的预期结果这两部分组成;分组成;(3 3)在程序提交测试后,应当由专门的测试人员进行测试;)在程序提交测试后,应当由专门的测试人员进行测试;(4 4)测试用例应包括合理的输入条件和不合理的输入条件;)测试用例应包括合理的输入条件和不合理的输入条件;(5 5)严格执行测试计划,排除测试的随意性;)严格执行测试计划,排除测试的随意性;(6 6)充分注意测试当中的群体现象;)充分注意测试当中的群体现象;(7 7)应对每一个测试结果做全面的检查;)应对每一个测试结果做全面的检查;(8 8)保存测试计划、测试用例、出错统计和最终分析报告,)保存测试计划、测试用例、出错统计和最终分析报告,为
12、维护工作提供充分的资料。为维护工作提供充分的资料。3 3、测试在开发各阶段的作用、测试在开发各阶段的作用、测试在开发各阶段的作用、测试在开发各阶段的作用项目规划阶段:负责从单元测试到系统测试的整个测项目规划阶段:负责从单元测试到系统测试的整个测 试阶段的监控。试阶段的监控。需求分析阶段:确定测试需求分析、系统测试计划的需求分析阶段:确定测试需求分析、系统测试计划的 制定、评审后成为管理项目。制定、评审后成为管理项目。详细设计和概要设计阶段:确保集成测试计划和单元详细设计和概要设计阶段:确保集成测试计划和单元 测试计划完成。测试计划完成。编码阶段:由开发人员进行自己负责部分的测试代码。编码阶段:
13、由开发人员进行自己负责部分的测试代码。 在项目较大时,由专人进行编码阶段的测在项目较大时,由专人进行编码阶段的测 试任务。试任务。测试阶段:依据测试代码进行测试,并提交相应的测测试阶段:依据测试代码进行测试,并提交相应的测 试状态报告和测试结束报告。试状态报告和测试结束报告。图1-2 完整的开发流程项目规划项目规划项目需求分析项目需求分析项目概要分析项目概要分析项目详细分析项目详细分析代码编写代码编写测试代码编写测试代码编写测试需求分析测试需求分析系统测试计划系统测试计划集成测试计划集成测试计划单元测试计划单元测试计划产品发布产品发布系统测试系统测试集成测试集成测试单元测试单元测试4 4、完整
14、的软件开发流程、完整的软件开发流程1.2.3 软件测试和缺陷修复的代价软件测试和缺陷修复的代价n n软件在从需求、设计、编码、测试一直到交付用户软件在从需求、设计、编码、测试一直到交付用户公开使用后的过程中,都有可能产生和发现缺陷。公开使用后的过程中,都有可能产生和发现缺陷。随着整个开发过程的时间推移,更正缺陷或修复问随着整个开发过程的时间推移,更正缺陷或修复问题的费用题的费用呈几何级数增长呈几何级数增长。 图1-3 软件缺陷在不同阶段发现时修复的费用示意图0 02020404060608080100100编制说明书编制说明书设计阶段设计阶段编写代码编写代码测试测试发布发布1 1、软件测试技术
15、 按照软件测试用例的设计方法而论,软件测试可分为白盒测试法和黑盒测试法;按照软件测试是否执行程序而论,软件测试又可以分为静态测试和动态测试;按照软件设计方法是否采用面向对象设计技术而论,软件测试又可以分为传统测试方法和面向对象测试方法;按照网络环境下C/S应用结构的特定环境而论,软件测试又有其相应的方法。这些都是软件测试具体的测试方法。1.2.4 软件测试技术概要2、软件测试的策略:就是测试将按照什么样的思路和方式进行。通常,软件测试要经过单元测试、集成测试、功能测试、确认测试、系统测试以及验收测试。单元测试 单元测试集中在检查软件设计的最小单位模块上,通过测试发现实现该模块的实际功能与定义该
16、模块的功能说明不符合的情况,以及编码的错误。 集成测试 集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如数据穿过接口时可能丢失;一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。 功能测试 是基于产品功能说明书,是在已知产品所具有的功能,从用户角度来进行功能验证,以确认每个功能是否能正常使用。确认测试 确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已
17、经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。系统测试 软件开发完成以后,最终还要与系统中其他部分配套运行,进行系统测试。包括恢复测试、安全测试、强度测试和性能测试等。 验收测试 验收测试是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。经验收后,将软件提交用户。3 3、软件测试技术的发展趋势:、软件测试技术的发展趋势:(1 1)软件验证技术)
18、软件验证技术(2 2)静态测试分析技术)静态测试分析技术(3 3)测试数据的选择)测试数据的选择主要对测试用例进行选择主要对测试用例进行选择 通常从下面几个方面评价测试用例的质量:通常从下面几个方面评价测试用例的质量: 检测软件缺陷的有效性、测试用例的可重用性、检测软件缺陷的有效性、测试用例的可重用性、 测试用例的经济性、测试用例的可维护性测试用例的经济性、测试用例的可维护性(4 4)集成化测试)集成化测试研究如何实现软件测试的自动研究如何实现软件测试的自动化过程以及相关的一系列内容。化过程以及相关的一系列内容。1.3 软件开发过程软件开发过程1.3.1 1.3.1 软件产品的组成软件产品的组
19、成1.3.2 1.3.2 软件开发项目组软件开发项目组1.3.3 1.3.3 软件开发基本过程软件开发基本过程1.3.4 1.3.4 软件开发模型软件开发模型1.3.1 软件产品的组成软件产品的组成 1 1、软件产品需要各种开发投入、软件产品需要各种开发投入图1-4 获得软件产品的工作示意图产产品品说说明明书书、产产品品审审查查、设设计计文文档档、进进度度计计划划、上上一一版版本本信信息息反反馈馈、商商业业竞竞争争对手的同类软件产品情况、客户调查、易用性数据、观察与感受说明书对手的同类软件产品情况、客户调查、易用性数据、观察与感受说明书开发过程开发过程软件产品的组成软件产品的组成(续)(续)
20、2 2、客户需求、客户需求 客户需求包括对客户调查所收集的详细信息、以前客户需求包括对客户调查所收集的详细信息、以前软件的使用情况及存在的问题、竞争对手的软件产品信软件的使用情况及存在的问题、竞争对手的软件产品信息等等。通过分析客户需求,可以确定将要开发的软件息等等。通过分析客户需求,可以确定将要开发的软件产品应该具有哪些功能。产品应该具有哪些功能。 3 3、产品说明、产品说明 产产品品说说明明书书的的作作用用就就是是对对客客户户需需求求信信息息进进行行综综合合描描述述,并并包包括括用用户户没没有有提提出出、但但软软件件产产品品本本身身必必须须要要实实现现的要求,从而针对产品进行定义并确定其功
21、能。的要求,从而针对产品进行定义并确定其功能。软件产品的组成软件产品的组成(续)(续)4 4、设计文档、设计文档n n构构架架。即即产产生生描描述述软软件件整整体体设设计计的的文文档档,包包括括软软件件所所有有主要部分的描述以及相互间的交互方式。主要部分的描述以及相互间的交互方式。n n数数据据流流示示意意图图。表表示示数数据据在在程程序序中中如如何何流流动动的的正正规规示示意意图。通常由圆圈和线条组成,所以也称为泡泡图。图。通常由圆圈和线条组成,所以也称为泡泡图。n n状状态态变变化化示示意意图图。将将软软件件分分解解为为基基本本状状态态或或者者条条件件的的另另一种正规示意图,表示不同状态之
22、间的变化的方式。一种正规示意图,表示不同状态之间的变化的方式。n n流流程程图图。用用图图形形描描述述程程序序逻逻辑辑的的最最常常用用方方式式之之一一。根根据据详细的流程图编写程序代码简单方便。详细的流程图编写程序代码简单方便。n n注注释释代代码码。代代码码注注释释是是便便于于维维护护代代码码的的程程序序员员掌掌握握代代码码的内容和执行方式。的内容和执行方式。软件产品的组成软件产品的组成(续)(续)5 5、测试文档、测试文档一般测试文档所包含的内容:一般测试文档所包含的内容:n n测测试试计计划划。描描述述用用于于验验证证软软件件是是否否符符合合产产品品说说明明书书和和客户需求的整体方案。客
23、户需求的整体方案。n n测测试试用用例例。依依据据测测试试的的项项目目,并并描描述述验验证证软软件件的的详详细细步骤。步骤。n n软软件件测测试试报报告告。描描述述依依据据测测试试用用例例找找出出的的问问题题,通通常常提交测试报告。提交测试报告。n n归纳、统计和总结。归纳、统计和总结。采用图表、表格和报告等形式来采用图表、表格和报告等形式来描述整个测试过程。描述整个测试过程。 软件产品的组成软件产品的组成(续)(续)6、开发进度表n n系统最终交付日期已经确定,软件开发部门必系统最终交付日期已经确定,软件开发部门必须在规定期限内完成须在规定期限内完成n n系统最终交付日期只确定了大致的年限,
24、最后系统最终交付日期只确定了大致的年限,最后交付日期由软件开发部门确定交付日期由软件开发部门确定n nGanttGantt图中横坐标表示时间,纵坐标表示任务,图中横坐标表示时间,纵坐标表示任务,图中的水平线段表示对一个任务的进度安排,图中的水平线段表示对一个任务的进度安排,线段的起点和钟点对应在横坐标上的时间分别线段的起点和钟点对应在横坐标上的时间分别表示该任务的开始时间和结束时间,线段的长表示该任务的开始时间和结束时间,线段的长度表示完成该任务所需的时间。度表示完成该任务所需的时间。7、软件产品组成部分(1)程序代码 (2)帮助文件 (3)用户手册(4)样本和示例 (5)标签 6)产品支持信
25、息(7)图表和标志 (8)错误信息 (9)广告与宣传材料(10)软件的安装 (11)软件说明文件(12)测试错误提示信息 1.3.2 软件开发项目组软件开发项目组n n项目管理经理:项目管理经理:全程负责整个软件项目的开发。全程负责整个软件项目的开发。 n n系统设计师:系统设计师:设计整个系统构架或软件构思。设计整个系统构架或软件构思。 n n程序员:程序员:负责设计、编写程序,并修改软件中的缺陷。负责设计、编写程序,并修改软件中的缺陷。 n n软件测试员软件测试员/ /测试师:测试师:负责找出并报告软件产品的问负责找出并报告软件产品的问题,与开发组密切合作,进行测试并报告发现的问题。题,与
26、开发组密切合作,进行测试并报告发现的问题。 n n技术制作、用户助手、用户培训员、手册编写和文件技术制作、用户助手、用户培训员、手册编写和文件档案专员:档案专员:负责编写软件产品附带的文件和联机文档负责编写软件产品附带的文件和联机文档 。n n结构管理和制作人员:结构管理和制作人员:负责将程序员编写的全部文档负责将程序员编写的全部文档资料合并成一个软件包资料合并成一个软件包 。1.3.3软件开发基本过程软件开发基本过程 软件开发的基本过程可以分为需求分析、设计、编码、测试和软件开发的基本过程可以分为需求分析、设计、编码、测试和维护阶段,即通常所说的维护阶段,即通常所说的“ “传统生命周期传统生
27、命周期” ”,也就是,也就是“ “瀑布模型瀑布模型” ”。图1-5 软件开发基本过程需求分析: 根据客户的要求,清楚了解客户需求中的产品功 能、特性、性能、界面和具体规格等,然后进行 分析,确定软件产品所能达到的目标。设计: 根据需求分析的结果,考虑如何在逻辑、程序上去实 现所定义的产品功能、特性等,可以分为概要设计和 详细设计,也可分为数据结构设计、软件体系结构设 计、应用接口设计、模块设计、界面设计等。编程: 将设计转换成计算机可读的形式。测试: 对设计、编程进行验证和用户需求确认的过程。维护:维持软件运行,修改软件缺陷、增强已有功能、增加 功能、升级等。1.3.4软件开发模型软件开发模型
28、1.瀑布模型2.原型模型3.快速应用开发(RAD)模型4.改进的V模型5.螺旋模型6.增量模型和迭代模型瀑布法瀑布法 瀑布模式是将软件生命周期的各项活动,规定为按照固定顺序相连的若干个阶段性工作,形如瀑布流水,最终得到软件产品。 优点:易于理解;调研开发的阶段性;强调早期计划及需求调查;确定何时能够交付产品及何时进行评审与测试。缺点:需求调查分析只进行一次,不能适应需求变化;顺序的开发流程,使得开发中的经验教训不能反馈到该项目的开发中去;不能反映出软件开发过程的反复与迭代性;没有包含任何类型的风险评估;开发中出现的问题直到开发后期才能够显露,因此失去及早纠正的机会。快速原型法快速原型法 根据客
29、户需求在较短的时间内解决用户最迫切解决的根据客户需求在较短的时间内解决用户最迫切解决的问题,完成可演示的产品。这个产品只实现最重要功能,问题,完成可演示的产品。这个产品只实现最重要功能,在得到用户的更加明确的需求之后,原型将丢弃。在得到用户的更加明确的需求之后,原型将丢弃。需求分析原型开发原型评价最终设计系统实现用户反馈图1-6 快速原型开发模式快速应用开发(RAD) 模型(P6)图1-7 RAD开发模式V模型(P7)图1-8 V型开发模式螺旋模式法螺旋模式法n n螺旋模式是瀑布模式与边写边改演化模式相结合,并加入螺旋模式是瀑布模式与边写边改演化模式相结合,并加入风险评估所建立的软件开发模式。
30、风险评估所建立的软件开发模式。 n n主要思想是在开始时不必详细定义所有细节,而是从小开主要思想是在开始时不必详细定义所有细节,而是从小开始,定义重要功能,尽量实现,接受客户反馈,进入下一始,定义重要功能,尽量实现,接受客户反馈,进入下一阶段,并重复上述过程,直到获得最终产品。阶段,并重复上述过程,直到获得最终产品。 n n每一螺旋(开发阶段)包括每一螺旋(开发阶段)包括5 5个步骤:个步骤:确定目标,选择确定目标,选择方案和限制条件。方案和限制条件。 对方案风险进行评估,并能解决风对方案风险进行评估,并能解决风险。险。 进行本阶段的开发和测试。进行本阶段的开发和测试。 计划下一阶段。计划下一
31、阶段。 确定进入下阶段的方法。确定进入下阶段的方法。n n优点:严格的全过程风险管理;强调各开发阶段的质量;优点:严格的全过程风险管理;强调各开发阶段的质量;提供机会评估项目是否有价值继续下去。提供机会评估项目是否有价值继续下去。阶段开发模型阶段开发模型图1-10 软件分阶段开发示意图增量和迭代模型增量和迭代模型增量开发增量开发迭代开发迭代开发图1-11 软件分阶段增量和迭代示意图小小 结结1、对于软件缺陷的精确定义,通常有下列5条描述: 软件未达到产品说明书的功能 软件出现了产品说明书指明不会出现的错误 软件功能超出产品说明书指明范围 软件未达到产品说明书虽未指出但应达到的目标 软件测试员认
32、为难以理解、不易使用、运行速度缓慢、或者最终用户认为不好2、软件缺陷第一大原因就是软件产品规格说明书,第二大原因是软件设计,第三个原因才是编写代码和其它原因;前两个原因至少占了 80%以上。3、软件测试的定义:软件测试是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题与用户需求、预先定义的不一致性。4、软件测试要经过单元测试、集成测试、确认测试、系统测试和验收测试。回顾回顾软件质量就是客户的满意度软件质量就是客户的满意度软件缺陷软件缺陷(Bug)是什么是什么软件测试的基本方法软件测试的基本方法- 白盒/黑盒,静态
33、/动态,自动化/手工,软件测试的分类和阶段软件测试的分类和阶段- 单元、集成、系统(性能、适用性、兼容性)、验收测试软件测试的工作范畴软件测试的工作范畴- 策略、计划、设计、执行、报告、评估回顾回顾软件开发的模型软件开发的模型软件质量就是客户的满意度软件质量就是客户的满意度软件缺陷软件缺陷(Bug)是什么是什么软件测试的基本方法软件测试的基本方法- 白盒/黑盒,静态/动态,自动化/手工,软件测试的分类和阶段软件测试的分类和阶段- 单元、集成、系统(性能、适用性、兼容性)、验收测试1.4 软件测试过程软件测试过程1.4.1 1.4.1 测测试策略试策略1. 1.4 4.2 .2 制定测试计划制定
34、测试计划1. 1.4 4.3 .3 测试执行过程测试执行过程1.4.4 1.4.4 测试过程管理理念测试过程管理理念1、测试策略的概念、测试策略的概念测试策略通常是描述测试工程的总体方法和目标。描述测试策略通常是描述测试工程的总体方法和目标。描述目前在进行哪一阶段的测试(如单元测试、集成测试、目前在进行哪一阶段的测试(如单元测试、集成测试、系统测试)以及每个阶段内进行的测试种类(如功能测系统测试)以及每个阶段内进行的测试种类(如功能测试、性能测试、压力测试等),以确定合理的测试方案试、性能测试、压力测试等),以确定合理的测试方案使得测试更有效。使得测试更有效。 2、影响测试策略的因素、影响测试
35、策略的因素测试完成的标准测试完成的标准标准的高低对策略确定有着重要的影响。比如该软件的应该用场合为军用,这将对软件的可靠性、安全性要求非常高,但如果是用于小型商场的收费系统由于是内部使用,主要考虑其计算的准确与精度及复杂统计与报表生成等方面准确性与易用性。资源状况资源状况参与测试的人、测试中所需要的软件平台(如操作系统甚至会涉及到第三方的一些应用软件)及测试可能用到的相关硬件设备(如计算机,网络硬件其它外设等) 3、制定测试策略pp 全面细致地了解产品的项目信息全面细致地了解产品的项目信息:应用领域,测试范围,市场需求,产品的特点和主要功能,技术架构p 基于模块、功能、整体、系统、版本、压力、
36、性能、配置和安装等各个因素对产品的影响因素对产品的影响, ,公正客观地开展测试计划公正客观地开展测试计划p 根据程序的重要性和一旦发生故障将造成的损失,来确定它的测试测试等级和测试重点等级和测试重点p 认真研究测试策略,以便能使用尽可能少的有效测试用例用尽可能少的有效测试用例, ,发现尽可发现尽可能多的程序错误能多的程序错误, ,因为一次完整的软件测试过后,如果程序中遗漏的错误过多并且很严重,则表明本次测试是失败的,是不足的;而测试不足意味着让用户承担隐藏错误带来的危险.同时反过来说,如果过度测试,则又会浪费许多宝贵的资源. 找到一个最佳平衡点。通过通过/失败的标准失败的标准vv单个的测试通过
37、单个的测试通过单个的测试通过单个的测试通过/ / / /失败失败失败失败 测测测测试试试试用例用例用例用例vv全部产品测试通过全部产品测试通过全部产品测试通过全部产品测试通过/ / / /失败失败失败失败 每每每每个阶段的通过个阶段的通过个阶段的通过个阶段的通过/ / / /失败失败失败失败阶段通过/失败的标准 项目经理和测试组长已经全部按计划到位?所有相关的信息已经传达到QA? QA.开始了测试设计?需求阶段设计审查所有设计中及文档中的问题都已经被解决?技术设计和测试设计已经结束?最高优先级的功能要求已经实现 ? 新功能已经实现 ?所有的功能是按照设计来实现的? 代码完成?功能验证确认测试回
38、归测试完成与否?是不是完全按测试计划完成了所有的测试?没有严重的缺陷?达到产品发布的标准?测试环境的检查?所有严重问题是不是都已测出?功能测试, 压力测试,安全测试,兼容性测试,易用性测试是否都已完成? 有没有阻碍产品发布的缺陷?系统测试测试计划内容构成测试计划制定的第一步就是将软件分解较小而且相对独立的功能模块,写成测试需求。测试需求有很多分类方法,最普通的一种就是按照功能分类:p 测试需求是测试设计和开发测试用例的基础,分解功能模块可以更好地进行设计;p 详细的测试需求是用来衡量测试覆盖率的重要指标;p 测试需求包括各种测试实际和开发以及所需资源。一个测试计划应包括:产品基本情况、测试需求
39、说明、测试策略和记录、测试资源配置、计划表、问题跟踪报告、测试计划的评审、结果等。1.4.2 制定测试计划制定测试计划 一个测试计划应包括:产品基本情况、测试需求说明、测试策略和记录、测试资源配置、计划表、问题跟踪报告、测试计划的评审、结果等。1、制定计划n本阶段的主要工作内容 对需求规格说明书的仔细研究 将要测试的产品分解成可独立测试的单元 为每个测试单元确定采用的测试技术 为测试的下一个阶段及其活动制定计划n制定计划包括: (1)概要测试计划 (2)详细测试计划制定测试计划制定测试计划(续)(续)2、测试用例 测试用例是软件测试的依据,包括测试项目、测试步骤、测试完成的标准。 n测试用例的
40、本质 从测试的角度对被测对象的功能和各种特性的细化和展开。 n测试用例的好处 保证测试功能不被遗漏,也不被重复测试 合理安排测试人员 使得软件测试不依赖于个人制定测试计划制定测试计划(续)(续)3 3、软件测试报告 软件测试报告是软件测试过程中最重要的文档,它的内容包括:n记录问题发生的环境 如:各种资源的配置情况n记录问题的再现步骤n记录问题性质的说明n记录问题的处理进程 问题处理进程从一定角度上反映测试的进程和被测软件的质量状况以及改善过程。测试计划标准格式测试计划标准格式 -1n n16 components of Test Plan (IEEE,1983)1.Test plan ide
41、ntifier (测试计划标识测试计划标识)2.Instruction (引言)引言)3.Test Items (定义或主题词定义或主题词)4.Features to be tested (需要被测试的功能需要被测试的功能)5.Features not to be tested (无需被测试的功能无需被测试的功能)6.Approach (方法和途径)方法和途径)7.Items pass/ fail criteria (测试通过、失败的标准测试通过、失败的标准)8.Suspension criteria and resumption requirements (延迟的标准和延迟的标准和再恢复的要
42、求再恢复的要求)9.Test deliverables (测试交付的内容测试交付的内容)10.Testing Tasks (测试任务测试任务n n16 components of Test Plan (IEEE,1983)11.Environmental needs needs (必备的环境必备的环境必备的环境必备的环境) )12.12.Responsibilities (Responsibilities (职责职责职责职责) )13.13.Staffing and training needs (Staffing and training needs (人员和必需的培训人员和必需的培训人员和
43、必需的培训人员和必需的培训) )14.14.Schedule (Schedule (时间进度表时间进度表时间进度表时间进度表) )15.15.Risk and contingencies (Risk and contingencies (风险和相关费用)风险和相关费用)风险和相关费用)风险和相关费用)16.16.Approvals Approvals (批准批准批准批准) )1.4.3 测试执行过程测试执行过程 1、测试执行过程的三个阶段(1)初测期 测试主要功能和关键的执行路径,排除主要障碍。(2)细测期 依据测试计划和测试用例、测试用例,逐一测试大大小小的功能、方方面面的特性、性能、用户界
44、面、兼容性、可用性等等;预期可发现大量不同性质、不同严重程度的错误和问题。(3)回归测试期 系统已达到稳定,在一轮测试中发现的错误已十分有限;复查已知错误的纠正情况,确认未引发任何新的错误时,终结回归测试。测试执行过程测试执行过程(续)(续)初测期初测期功能冻结功能冻结代码冻结代码冻结回归测试期回归测试期细测期细测期0 020204040606080801001001201201401401601601 12 23 34 45 56 67 78 89 91010 1111 1212 1313 1414 1515 1616 1717 1818 1919出错数出错数时间时间图1-15 三个测试期阶
45、段图示测试执行过程测试执行过程(续)(续)2、集成测试过程中的两个重要里程碑 在集成测试过程中的两个重要的里程碑是功能冻结和功能冻结和代码冻结的确定代码冻结的确定。这两个里程碑界定出回归测试期的起止界限。n功能冻结(Function/Feature Freeze) 经过测试,符合设计要求,确认系统功能和其他特性均不再做任何改变。n代码冻结(Code Freeze) 理论上,在无错误时冻结程序代码,但实际上,代码冻结只标志系统的当前版本的质量已达到预期的要求,冻结程序的源代码,不再对其做任何修改。这个里程碑是设置在软件通过最终回归测试之后。1.4.4 测试过程管理测试过程管理n n尽早测试n n
46、全面测试n n全过程测试n n独立的、迭代的测试1.5 软件质量保证概要软件质量保证概要1. 1.5 5.1 .1 软件质量保证软件质量保证1. 1.5 5.2 .2 软件能力成熟度模型软件能力成熟度模型1.5.3 1.5.3 ISO9000ISO9000标准简介标准简介1.5.4 1.5.4 建立软件测试管理和评判体系建立软件测试管理和评判体系 1.5.1 软件质量保证(SQA)SQA 概述SQA 活动SQS 与软件测试的关系什么是什么是 SQA ?软件质量保证是通过对软件产品和活动有计划的进行软件质量保证是通过对软件产品和活动有计划的进行软件质量保证是通过对软件产品和活动有计划的进行软件质
47、量保证是通过对软件产品和活动有计划的进行评审和审计来验证软件是否合乎标准的系统工程活动评审和审计来验证软件是否合乎标准的系统工程活动评审和审计来验证软件是否合乎标准的系统工程活动评审和审计来验证软件是否合乎标准的系统工程活动. . p确保确保SQA活动要自始至有计划的进行活动要自始至有计划的进行p审查软件产品和活动是否遵守适用的标准、规程和要求并得审查软件产品和活动是否遵守适用的标准、规程和要求并得到客观验证。到客观验证。pSQA的活动和结果要保证全员参与,沟通顺畅。的活动和结果要保证全员参与,沟通顺畅。p逐级解决不符合问题逐级解决不符合问题SQA活动p提出软件质量需求p确定开发方案p阶段审p
48、测试管理p文挡化管理p验证产品与相应文挡和标准一致p建立测量机制p记录并生成报告SQA活动的影响因素活动的影响因素n n知识结构:知识结构:知识结构:知识结构:专业的技术,例如质量管理与控制知识、专业的技术,例如质量管理与控制知识、统计学知识等。统计学知识等。n n经验经验经验经验n n依据:依据:依据:依据:如果没有这些标准,就无法准确地判断开发如果没有这些标准,就无法准确地判断开发活动中的问题,容易引发不必要的争论,因此组织活动中的问题,容易引发不必要的争论,因此组织应当建立文档化的开发标准和规程。应当建立文档化的开发标准和规程。n n全员参与:全员参与:全员参与:全员参与:全员参与至关重
49、要,高层管理者必须重全员参与至关重要,高层管理者必须重视软件质量保证活动。视软件质量保证活动。n n把握重点:把握重点:把握重点:把握重点:一定要抓住问题的重点与本质,尽可能一定要抓住问题的重点与本质,尽可能避免陷入对细节的争论之中。避免陷入对细节的争论之中。SQA与软件测试的关系与软件测试的关系 nSQA 是管理工作、审查对象是流程、强调以预防为主n测试测试是技术工作、测试对象是产品、主要是以事后检查nSQA指导测试、监控测试n测试为SQA提供依据1.5.2 软件能力成熟度模型软件能力成熟度模型n n软件能力成熟度模型软件能力成熟度模型( (CMM, Capability Maturity
50、ModelCMM, Capability Maturity Model) ): 是软件行业标准模型,用来定义和评价软件企业开发是软件行业标准模型,用来定义和评价软件企业开发过程的成熟度,提供如何做才能够提高软件质量的指导过程的成熟度,提供如何做才能够提高软件质量的指导。n nCMMCMM的基本原理:的基本原理: CMMCMM将软件组织的过程能力成熟度分为将软件组织的过程能力成熟度分为5 5个级别,每个级别,每一个级别定义一组过程能力目标,并描述要达到这些目标一个级别定义一组过程能力目标,并描述要达到这些目标应该采取的各种实践活动。应该采取的各种实践活动。n nCMMCMM的主要作用:的主要作用
51、: 提供了一个软件过程改进的框架。根据提供了一个软件过程改进的框架。根据CMMCMM模型,模型,软件开发者(机构或组织)能够大幅度的提高按计划、高软件开发者(机构或组织)能够大幅度的提高按计划、高效率、低成本的提交有质量保证的软件产品的能力。效率、低成本的提交有质量保证的软件产品的能力。软件能力成熟度模型软件能力成熟度模型(续)(续)1 1、CMMCMM的基本过程概念的基本过程概念n n过程:为达到目的而执行的所有步骤的系列。过程:为达到目的而执行的所有步骤的系列。n n软软件件过过程程:开开发发和和维维护护软软件件及及其其相相关关产产品品的的一一组组活活动动、方方法、实践和改革。法、实践和改
52、革。n n软软件件过过程程结结构构:对对组组织织标标准准软软件件过过程程的的一一种种高高级级别别描描述述,它它描描述述组组织织标标准准软软件件过过程程内内部部的的过过程程元元素素之之间间的的顺顺序序、接接口口、内内部部依依赖赖等等关关系系,以以及及与与外外部部过过程程之之间间的的接接口口和和依依赖赖关系。关系。n n软软件件过过程程元元素素:用用于于描描述述软软件件过过程程的的基基本本元元素素,每每一一个个过过程元素包含一组定义的、有限的、封闭的相关任务。程元素包含一组定义的、有限的、封闭的相关任务。n n软软件件过过程程定定义义:CMMCMM中中过过程程定定义义的的基基本本概概念念是是定定义
53、义组组织织的标准软件过程。的标准软件过程。软件能力成熟度模型软件能力成熟度模型(续)(续) 2 2、CMMCMM的的5 5个分级标准个分级标准 优化级(优化级(5) 已管理级(已管理级(4) 已定义级(已定义级(3) 可重复级(可重复级(2) 初始级(初始级(1) 标准一致标准一致 的过程的过程 不断改不断改 进过程进过程 可预测可预测 的过程的过程 有纪律有纪律 的过程的过程图1-16 软件过程成熟度的5个等级软件能力成熟度模型软件能力成熟度模型(续)(续)CMMCMM的分级结构和其主要特征:的分级结构和其主要特征:n n初始级初始级初始级初始级:其特点是软件过程无秩序,有时甚至是混乱的。:
54、其特点是软件过程无秩序,有时甚至是混乱的。n n可可可可重重重重复复复复级级级级:已已建建立立了了基基本本的的项项目目管管理理过过程程,可可用用于于对对成成本本、进度和功能特性进行跟踪。进度和功能特性进行跟踪。n n已已已已定定定定义义义义级级级级:用用于于管管理理的的、工工程程的的软软件件过过程程均均已已实实现现文文档档化化、标准化,并形成了整个软件组织的标准软件过程。标准化,并形成了整个软件组织的标准软件过程。n n管管管管理理理理级级级级:软软件件过过程程和和产产品品质质量量有有详详细细的的度度量量标标准准,软软件件过过程程和产品质量得到了定量的认证和控制。和产品质量得到了定量的认证和控
55、制。n n优优优优化化化化级级级级:通通过过对对来来自自过过程程、新新概概念念和和新新技技术术等等方方面面各各种种有有用用信息的定量分析,能够不断地、持续性地对过程进行改进。信息的定量分析,能够不断地、持续性地对过程进行改进。软件能力成熟度模型软件能力成熟度模型(续)(续)n n除第一级外,除第一级外,CMMCMM的每一级是按照完全相同的内部结构的每一级是按照完全相同的内部结构构成的。构成的。n n成熟度等级为顶层,不同的成熟度等级反映了软件组织成熟度等级为顶层,不同的成熟度等级反映了软件组织的软件过程能力和该组织可能实现预期的程度。的软件过程能力和该组织可能实现预期的程度。n n在每个成熟度
56、级别中(第在每个成熟度级别中(第1 1级除外),包含了实现这一级级除外),包含了实现这一级目标目标的若干的若干关键过程域关键过程域( (KPA)KPA)。每一级的每个关键过程域。每一级的每个关键过程域进一步包含若干进一步包含若干关键实践关键实践 (Key Practice, KP)(Key Practice, KP)。 无论哪一无论哪一个个KPAKPA, 其其实践都统一按实践都统一按5 5个个公共特性公共特性进行组织,即每进行组织,即每一个一个KPAKPA都包含都包含5 5类类KPKP,使整个软件过程改进工作自上,使整个软件过程改进工作自上而下形成一种有规律的步骤。而下形成一种有规律的步骤。软
57、件能力成熟度模型软件能力成熟度模型(续)(续)n n关键过程域关键过程域:是指一系列相互关联的操作活动,这些活动:是指一系列相互关联的操作活动,这些活动反映了一个软件组织改进软件过程时必须集中力量改进的反映了一个软件组织改进软件过程时必须集中力量改进的几个方面。几个方面。n n目标目标:是指某个关键过程域中的关键实践,它表示每一个是指某个关键过程域中的关键实践,它表示每一个关键过程域的范围、边界和意图。关键过程域的范围、边界和意图。n n公共特性公共特性:为了完成关键过程域中的实践活动,为了完成关键过程域中的实践活动,CMMCMM将将其活动分为具有公共特性的其活动分为具有公共特性的5 5个部分
58、,包括执行约定、执个部分,包括执行约定、执行能力、实施活动、度量和分析以及验收实施。这些部分行能力、实施活动、度量和分析以及验收实施。这些部分的特性有效地指定了一个关键区域的实现范围、结构要求的特性有效地指定了一个关键区域的实现范围、结构要求和实施内容。和实施内容。n n关键实践关键实践:关键实践就是一些主要实践活动。每个关键过:关键实践就是一些主要实践活动。每个关键过程域最终由关键实践所组成,通过实现这些关键实践来达程域最终由关键实践所组成,通过实现这些关键实践来达到关键过程域的目标。到关键过程域的目标。1.5.3 ISO 9000 标准简介标准简介n nISO 9000ISO 9000标准
59、标准 是为制造行业制定的质量管理和质量评判的一系列是为制造行业制定的质量管理和质量评判的一系列标准标准 定义了一套基本达标的做法,有助于企业能够一致定义了一套基本达标的做法,有助于企业能够一致地交付符合客户质量要求的产品(或服务)地交付符合客户质量要求的产品(或服务)n nISO 9000ISO 9000标准的目标标准的目标 在于开发过程,而不是产品在于开发过程,而不是产品 关心的是进行工作的组织方式,而不是工作成果关心的是进行工作的组织方式,而不是工作成果n nISO 9000ISO 9000只决定过程的要求是什么,而不管如何达到。即:只决定过程的要求是什么,而不管如何达到。即:ISO 90
60、00ISO 9000指出要做什么,但不指出怎样做。指出要做什么,但不指出怎样做。 ISO 9000 标准简介标准简介(续)(续)1 1、ISO 9000ISO 9000标准的构成标准的构成20002000版的版的ISO 9000ISO 9000系列标准主要由下列标准构成:系列标准主要由下列标准构成:n n ISO9000ISO9000:20002000质量管理体系:基础和术语质量管理体系:基础和术语n n ISO9000 ISO9000:20002000质量管理体系:要求质量管理体系:要求n n ISO9000 ISO9000:20002000质量管理体系:业绩改进指南质量管理体系:业绩改进指
61、南2 2、ISO 9000ISO 9000标准的要求标准的要求3 3、ISO 9000ISO 9000质量管理的原则质量管理的原则1.5.4建立软件测试管理和评判体系建立软件测试管理和评判体系 测试管理与评判的必要性测试管理与评判的必要性软件测试的管理和评判体系发展现状软件测试的管理和评判体系发展现状如何建立测试管理与评判体系如何建立测试管理与评判体系 为什么要建立管理与评判体系为什么要建立管理与评判体系?n监视和测量软件产品 n识别和控制不符合要求的产品n验证产品设计和开发 n监视和测量软件过程测试管理和评判体系发展现状测试管理和评判体系发展现状n美国质量保证研究所对软件测试的研究结果表明:
62、越早发现软件中存在的问题,开发费用就越低;在编码后修改软件缺陷的成本是编码前的10倍,在产品交付后修改软件缺陷的成本是交付前的10倍;软件质量越高,软件发布后的维护费用越低。另外,根据对国际著名IT企业的统计,它们的软件测试费用占整个软件工程所有研发费用的50% 以上。 n中国软件企业在软件测试方面与国际水准仍存在较大差距。首先,认识上重开发、轻测试,没有认识到软件项目的如期完成不仅取决于开发人员,更取决于测试人员;其次,管理上随意、简单,没有建立有效、规范的软件测试管理和评判体系;另外,缺少自动化工具的支持,大多数企业在软件测试时并没有建立软件测试管理与评判体系。 如何建立测试管理与评判体系
63、如何建立测试管理与评判体系测试规划测试规划资源管理资源管理测试设计测试设计测试实施测试实施配置管理配置管理测试管理测试管理确定目标和策略确定测试方案及用例执行用例测试配置管理资源综合调配与管理对以上过程综合管理1.6 软件测试职业软件测试职业1.6.11.6.1 对软件测试的误解对软件测试的误解1.6.21.6.2 软件测试职业和职位软件测试职业和职位1.6.31.6.3 软件测试职业素质软件测试职业素质1.6.41.6.4 软件测试人才的现状软件测试人才的现状1.6.1 对软件测试的误解对软件测试的误解n n如果发布的软件有质量问题,那是软件测试人员的错。如果发布的软件有质量问题,那是软件测
64、试人员的错。n n软件测试技术要求不高,至少比编程容易多了。软件测试技术要求不高,至少比编程容易多了。n n软件测试随便找一个能力差的人就能做。软件测试随便找一个能力差的人就能做。n n有时间就多测试一些,来不及就少测试一些。有时间就多测试一些,来不及就少测试一些。n n软件测试是测试人员的事,与开发人员无关。软件测试是测试人员的事,与开发人员无关。n n设计实现测试,软件测试事开发后期的一个阶段。设计实现测试,软件测试事开发后期的一个阶段。1.6.2 软件测试职业和职位软件测试职业和职位n n软件测试员软件测试员 n n软件测试工程师软件测试工程师/ /程序分析员程序分析员 n n高级软件测
65、试工程师高级软件测试工程师/ /程序分析员程序分析员n n软件测试组负责人软件测试组负责人 n n软件测试软件测试/ /编程负责人编程负责人 n n软件测试软件测试/ /质量保证质量保证/ /项目经理项目经理 1.6.3 软件测试职业素质软件测试职业素质n n软件测试员的目标:软件测试员的目标: 发现潜在的软件缺陷发现潜在的软件缺陷n n软件测试员应具备的素质:软件测试员应具备的素质: 具有探索精神具有探索精神 具有创造性具有创造性 坚持不懈精神坚持不懈精神 故障排除专家故障排除专家 判断准确判断准确 追求完美追求完美 沟通能力沟通能力1.6.4 软件测试人才的现状软件测试人才的现状1、软件测
66、试人员的合理比例在软件产业发达的国家: n软件测试在人员配备和资金投入方面占据相当的比重。n微软为打造Windows2000,1700多个开发人员,以及3200个测试人员,开发和测试人员之比约为三比五。nHP公司的测试人员和开发人员的比例为一比一,这是很 多先进软件企业通常的人员配比。在国内:n企业往往忽视软件测试,很多企业都没有软件测试部门,甚至不设置软件测试的岗位,造成产品质量得不到保证。n测试人员大都不到开发人员的5% ,随着产业和企业的发展,企业必然需要大量的测试人员。软件测试人才的现状软件测试人才的现状(续)(续)2 2、软件测试人才紧缺、软件测试人才紧缺n软件测试人才需求快速增长,体现在:(1)中国软件产业正在快速增长,需要大量软件相关人才;(2)软件企业的发展要求测试人才达到一个合适的比例。n近一两年软件企业开始认识到软件测试对于提高软件质量的重要性,开始重视软件测试,但由于历史的原因,找不到合适的软件测试人员。