《软件测试方法和技术.ppt》由会员分享,可在线阅读,更多相关《软件测试方法和技术.ppt(87页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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、软件缺陷的特征、软件缺陷的特征n n“看不到看不到”软件的特殊
5、性决定了缺陷不易看到软件的特殊性决定了缺陷不易看到n n“看到但是抓不到看到但是抓不到”发现发现了缺陷,但不易找到了缺陷,但不易找到问题发问题发生的原因生的原因所在所在1.1.2 软件缺陷产生的原因(软件缺陷产生的原因(P28)软件缺陷的主要类型软件缺陷的主要类型/现象:现象:p 功能、特性没有实现或部分实现p 设计不合理,存在缺陷p 实际结果和预期结果不一致p 运行出错,包括运行中断、系统崩溃、界面混乱p 数据结果不正确、精度不够p 用户不能接受的其他问题,如存取时间过长、界面不美观 其他其他10%软件产品说明软件产品说明书(需求)书(需求)56%编写代码编写代码7%设设 计计27%图图1-
6、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、软件测试的定义几个观点:测试是为了证明程序有错,而不是证明程序无错误;一个好的测试用例是在于它能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误的测试。n n狭义定义:程序测试是为了发现错误而执行程序的过程。
7、n n广义定义:将测试延伸到需求评审、设计审查活动中去,这种延伸后的软件测试,被认为是一种软件测试的广义概念。n n 软件测试的定义为:软件测试是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题与用户需求、预先定义的不一致性。软件测试的定义软件测试的定义(续)(续)2 2、软件测试的基本问题、软件测试的基本问题n n软件生命周期:软件生命周期:一个软件生命周期包括制定计划、一个软件生命周期包括制定计划、需求分析定义、软件设计、程序编码、软件测试、需求分析定义、软件设计、程序编码、软件测试、软件运行、软件维护、软件
8、停用等软件运行、软件维护、软件停用等8 8个阶段。个阶段。n n软件测试的对象:软件测试的对象:软件测试不等于程序测试。软件测试不等于程序测试。软件测试贯串于软件定义和开发的整个过程。软件测试贯串于软件定义和开发的整个过程。软件开发过程中所产生的软件开发过程中所产生的需求规格说明需求规格说明、概要概要设计规格说明设计规格说明、详细设计规格说明详细设计规格说明以及以及源程序源程序都是都是软件测试的对象。软件测试的对象。软件测试的定义软件测试的定义(续)(续)2 2、软件测试的基本问题(续)、软件测试的基本问题(续)n n软件测试在软件生命周期中横跨两个阶段:软件测试在软件生命周期中横跨两个阶段:
9、第第一一个个阶阶段段:单单元元测测试试阶阶段段,即即在在每每个个模模块块编编写写出出以后所做的必要测试。以后所做的必要测试。第第二二个个阶阶段段:综综合合测测试试阶阶段段,即即在在完完成成单单元元测测试试后后进行的测试,如集成测试、系统测试、验收测试。进行的测试,如集成测试、系统测试、验收测试。n n软件测试涉及的关键问题包括四个方面:软件测试涉及的关键问题包括四个方面:(1 1)测试由谁来执行。)测试由谁来执行。(2 2)测试什么。)测试什么。(3 3)什么时候进行测试。)什么时候进行测试。(4 4)怎样进行测试。)怎样进行测试。1.2.2 软件测试的基本理论软件测试的基本理论 1 1、软件
10、测试的目的、软件测试的目的n n发现软件缺陷发现软件缺陷n n发现软件缺陷,尽可能早一些n n发现软件缺陷,尽可能早一些,并确保其得以修复 注意:测试无法说明错误不存在,只能说明软件注意:测试无法说明错误不存在,只能说明软件注意:测试无法说明错误不存在,只能说明软件注意:测试无法说明错误不存在,只能说明软件错误已出现。错误已出现。错误已出现。错误已出现。2 2、软件测试的原则、软件测试的原则(1 1)尽早地和及时地测试;)尽早地和及时地测试;(2 2)测试用例应当由测试数据和与之对应的预期结果这两部)测试用例应当由测试数据和与之对应的预期结果这两部分组成;分组成;(3 3)在程序提交测试后,应
11、当由专门的测试人员进行测试;)在程序提交测试后,应当由专门的测试人员进行测试;(4 4)测试用例应包括合理的输入条件和不合理的输入条件;)测试用例应包括合理的输入条件和不合理的输入条件;(5 5)严格执行测试计划,排除测试的随意性;)严格执行测试计划,排除测试的随意性;(6 6)充分注意测试当中的群体现象;)充分注意测试当中的群体现象;(7 7)应对每一个测试结果做全面的检查;)应对每一个测试结果做全面的检查;(8 8)保存测试计划、测试用例、出错统计和最终分析报告,)保存测试计划、测试用例、出错统计和最终分析报告,为维护工作提供充分的资料。为维护工作提供充分的资料。3 3、测试在开发各阶段的
12、作用、测试在开发各阶段的作用、测试在开发各阶段的作用、测试在开发各阶段的作用项目规划阶段:负责从单元测试到系统测试的整个测项目规划阶段:负责从单元测试到系统测试的整个测 试阶段的监控。试阶段的监控。需求分析阶段:确定测试需求分析、系统测试计划的需求分析阶段:确定测试需求分析、系统测试计划的 制定、评审后成为管理项目。制定、评审后成为管理项目。详细设计和概要设计阶段:确保集成测试计划和单元详细设计和概要设计阶段:确保集成测试计划和单元 测试计划完成。测试计划完成。编码阶段:由开发人员进行自己负责部分的测试代码。编码阶段:由开发人员进行自己负责部分的测试代码。在项目较大时,由专人进行编码阶段的测在
13、项目较大时,由专人进行编码阶段的测 试任务。试任务。测试阶段:依据测试代码进行测试,并提交相应的测测试阶段:依据测试代码进行测试,并提交相应的测 试状态报告和测试结束报告。试状态报告和测试结束报告。图图1-2 1-2 完整的开发流程完整的开发流程项目规划项目规划项目需求分析项目需求分析项目概要分析项目概要分析项目详细分析项目详细分析代码编写代码编写测试代码编写测试代码编写测试需求分析测试需求分析系统测试计划系统测试计划集成测试计划集成测试计划单元测试计划单元测试计划产品发布产品发布系统测试系统测试集成测试集成测试单元测试单元测试4 4、完整的软件开发流程、完整的软件开发流程1.2.3 软件测试
14、和缺陷修复的代价软件测试和缺陷修复的代价n n软件在从需求、设计、编码、测试一直到交付用户软件在从需求、设计、编码、测试一直到交付用户公开使用后的过程中,都有可能产生和发现缺陷。公开使用后的过程中,都有可能产生和发现缺陷。随着整个开发过程的时间推移,更正缺陷或修复问随着整个开发过程的时间推移,更正缺陷或修复问题的费用题的费用呈几何级数增长呈几何级数增长。图1-3 软件缺陷在不同阶段发现时修复的费用示意图0 02020404060608080100100编制说明书编制说明书设计阶段设计阶段编写代码编写代码测试测试发布发布1 1、软件测试技术、软件测试技术 按照软件测试用例的设计方法而论,软件测试
15、可按照软件测试用例的设计方法而论,软件测试可分为分为白盒测试法白盒测试法和和黑盒测试法黑盒测试法;按照软件测试是;按照软件测试是否执行程序而论,软件测试又可以分为否执行程序而论,软件测试又可以分为静态测试静态测试和和动态测试动态测试;按照软件设计方法是否采用面向对;按照软件设计方法是否采用面向对象设计技术而论,软件测试又可以分为象设计技术而论,软件测试又可以分为传统测试传统测试方法方法和和面向对象测试方法面向对象测试方法;按照网络环境下;按照网络环境下C/SC/S应应用结构的特定环境而论,软件测试又有其相应的用结构的特定环境而论,软件测试又有其相应的方法。这些都是软件测试具体的测试方法。方法。
16、这些都是软件测试具体的测试方法。1.2.4 软件测试技术概要2、软件测试的策略:就是测试将按照什么样的思路和方式进行。通常,软件测试要经过单元测试、集成测试、功能测试、确认测试、系统测试以及验收测试。单元测试 单元测试集中在检查软件设计的最小单位模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。集成测试集成测试 集成测试是将模块按照设计要求组装起来同时进行测试,集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如数据穿过接口时可能主要目标是发现与接口有关的问题。如数据穿过接口时可能丢失;一个模块与另一个模块可能有由于疏忽
17、的问题而造成丢失;一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有错误等。程数据结构可能有错误等。功能测试功能测试 是基于产品功能说明书,是在已知产品所具有的功能,从用是基于产品功能说明书,是在已知产品所具有的功能,从用户角度来进行功能验证,以确认每个功能是否能正常使用。户角度来进行功能验证,以确认每个功能是否能正常使用。确认测试确认测试 确认测试的目的是向未来的用户表明系统
18、能够像预定要求确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是确认测试的任务,就应该进一步验证软件的有效性,这就是确认测试的任务,即软件的功能和性能如同用户所合理期待的那样。即软件的功能和性能如同用户所合理期待的那样。系统测试系统测试 软件开发完成以后,最终还要与系统中其他部软件开发完成以后,最终还要与系统中其他部分配套运行,进行系统测试。包括恢复测试
19、、安分配套运行,进行系统测试。包括恢复测试、安全测试、强度测试和性能测试等。全测试、强度测试和性能测试等。验收测试验收测试 验收测试是向未来的用户表明系统能够像预定验收测试是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。经验收功能和性能如同用户
20、所合理期待的那样。经验收后,将软件提交用户。后,将软件提交用户。3 3、软件测试技术的发展趋势:、软件测试技术的发展趋势:(1 1)软件验证技术)软件验证技术(2 2)静态测试分析技术)静态测试分析技术(3 3)测试数据的选择)测试数据的选择主要对测试用例进行选择主要对测试用例进行选择 通常从下面几个方面评价测试用例的质量:通常从下面几个方面评价测试用例的质量:检测软件缺陷的有效性、测试用例的可重用性、检测软件缺陷的有效性、测试用例的可重用性、测试用例的经济性、测试用例的可维护性测试用例的经济性、测试用例的可维护性(4 4)集成化测试)集成化测试研究如何实现软件测试的自动研究如何实现软件测试的
21、自动化过程以及相关的一系列内容。化过程以及相关的一系列内容。1.3 软件开发过程软件开发过程1.3.1 1.3.1 软件产品的组成软件产品的组成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 获得软件产品的工作示意图产产品品说说明明书书、产产品品审审查查、设设计计文文档档、进进度度计计划划、上上一一版版本本信信息息反反馈馈、商商业业竞竞争争对手的同类软件产品情况、客户调查、易用性
22、数据、观察与感受说明书对手的同类软件产品情况、客户调查、易用性数据、观察与感受说明书开发过程开发过程软件产品的组成软件产品的组成(续)(续)2 2、客户需求、客户需求 客户需求包括对客户调查所收集的详细信息、以前客户需求包括对客户调查所收集的详细信息、以前软件的使用情况及存在的问题、竞争对手的软件产品信软件的使用情况及存在的问题、竞争对手的软件产品信息等等。通过分析客户需求,可以确定将要开发的软件息等等。通过分析客户需求,可以确定将要开发的软件产品应该具有哪些功能。产品应该具有哪些功能。3 3、产品说明、产品说明 产产品品说说明明书书的的作作用用就就是是对对客客户户需需求求信信息息进进行行综综
23、合合描描述述,并并包包括括用用户户没没有有提提出出、但但软软件件产产品品本本身身必必须须要要实实现现的要求,从而针对产品进行定义并确定其功能。的要求,从而针对产品进行定义并确定其功能。软件产品的组成软件产品的组成(续)(续)4 4、设计文档、设计文档n n构构架架。即即产产生生描描述述软软件件整整体体设设计计的的文文档档,包包括括软软件件所所有有主要部分的描述以及相互间的交互方式。主要部分的描述以及相互间的交互方式。n n数数据据流流示示意意图图。表表示示数数据据在在程程序序中中如如何何流流动动的的正正规规示示意意图。通常由圆圈和线条组成,所以也称为泡泡图。图。通常由圆圈和线条组成,所以也称为
24、泡泡图。n n状状态态变变化化示示意意图图。将将软软件件分分解解为为基基本本状状态态或或者者条条件件的的另另一种正规示意图,表示不同状态之间的变化的方式。一种正规示意图,表示不同状态之间的变化的方式。n n流流程程图图。用用图图形形描描述述程程序序逻逻辑辑的的最最常常用用方方式式之之一一。根根据据详细的流程图编写程序代码简单方便。详细的流程图编写程序代码简单方便。n n注注释释代代码码。代代码码注注释释是是便便于于维维护护代代码码的的程程序序员员掌掌握握代代码码的内容和执行方式。的内容和执行方式。软件产品的组成软件产品的组成(续)(续)5 5、测试文档、测试文档一般测试文档所包含的内容:一般测
25、试文档所包含的内容:n n测测试试计计划划。描描述述用用于于验验证证软软件件是是否否符符合合产产品品说说明明书书和和客户需求的整体方案。客户需求的整体方案。n n测测试试用用例例。依依据据测测试试的的项项目目,并并描描述述验验证证软软件件的的详详细细步骤。步骤。n n软软件件测测试试报报告告。描描述述依依据据测测试试用用例例找找出出的的问问题题,通通常常提交测试报告。提交测试报告。n n归纳、统计和总结。归纳、统计和总结。采用图表、表格和报告等形式来采用图表、表格和报告等形式来描述整个测试过程。描述整个测试过程。软件产品的组成软件产品的组成(续)(续)6、开发进度表n n系统最终交付日期已经确
26、定,软件开发部门必系统最终交付日期已经确定,软件开发部门必须在规定期限内完成须在规定期限内完成n n系统最终交付日期只确定了大致的年限,最后系统最终交付日期只确定了大致的年限,最后交付日期由软件开发部门确定交付日期由软件开发部门确定n nGanttGantt图中横坐标表示时间,纵坐标表示任务,图中横坐标表示时间,纵坐标表示任务,图中的水平线段表示对一个任务的进度安排,图中的水平线段表示对一个任务的进度安排,线段的起点和钟点对应在横坐标上的时间分别线段的起点和钟点对应在横坐标上的时间分别表示该任务的开始时间和结束时间,线段的长表示该任务的开始时间和结束时间,线段的长度表示完成该任务所需的时间。度
27、表示完成该任务所需的时间。7、软件产品组成部分(1)程序代码 (2)帮助文件 (3)用户手册(4)样本和示例 (5)标签 6)产品支持信息(7)图表和标志 (8)错误信息 (9)广告与宣传材料(10)软件的安装(11)软件说明文件(12)测试错误提示信息 1.3.2 软件开发项目组软件开发项目组n n项目管理经理:项目管理经理:全程负责整个软件项目的开发。全程负责整个软件项目的开发。n n系统设计师:系统设计师:设计整个系统构架或软件构思。设计整个系统构架或软件构思。n n程序员:程序员:负责设计、编写程序,并修改软件中的缺陷。负责设计、编写程序,并修改软件中的缺陷。n n软件测试员软件测试员
28、/测试师:测试师:负责找出并报告软件产品的问负责找出并报告软件产品的问题,与开发组密切合作,进行测试并报告发现的问题。题,与开发组密切合作,进行测试并报告发现的问题。n n技术制作、用户助手、用户培训员、手册编写和文件技术制作、用户助手、用户培训员、手册编写和文件档案专员:档案专员:负责编写软件产品附带的文件和联机文档负责编写软件产品附带的文件和联机文档 。n n结构管理和制作人员:结构管理和制作人员:负责将程序员编写的全部文档负责将程序员编写的全部文档资料合并成一个软件包资料合并成一个软件包 。1.3.3软件开发基本过程软件开发基本过程 软件开发的基本过程可以分为需求分析、设计、编码、测试和
29、软件开发的基本过程可以分为需求分析、设计、编码、测试和维护阶段,即通常所说的维护阶段,即通常所说的“传统生命周期传统生命周期”,也就是,也就是“瀑布模型瀑布模型”。图1-5 软件开发基本过程需求分析需求分析:根据客户的要求,清楚了解客户需求中的产品功根据客户的要求,清楚了解客户需求中的产品功 能、特性、性能、界面和具体规格等,然后进行能、特性、性能、界面和具体规格等,然后进行 分析,确定软件产品所能达到的目标。分析,确定软件产品所能达到的目标。设计设计:根据需求分析的结果,考虑如何在逻辑、程序上去实根据需求分析的结果,考虑如何在逻辑、程序上去实 现所定义的产品功能、特性等,可以分为概要设计和现
30、所定义的产品功能、特性等,可以分为概要设计和 详细设计,也可分为数据结构设计、软件体系结构设详细设计,也可分为数据结构设计、软件体系结构设 计、应用接口设计、模块设计、界面设计等。计、应用接口设计、模块设计、界面设计等。编程编程:将设计转换成计算机可读的形式。将设计转换成计算机可读的形式。测试测试:对设计、编程进行验证和用户需求确认的过程。对设计、编程进行验证和用户需求确认的过程。维护:维持软件运行,修改软件缺陷、增强已有功能、增加维护:维持软件运行,修改软件缺陷、增强已有功能、增加 功能、升级等。功能、升级等。1.3.4软件开发模型软件开发模型1.瀑布模型2.原型模型3.快速应用开发(RAD
31、)模型4.改进的V模型5.螺旋模型6.增量模型和迭代模型瀑布法瀑布法 瀑布模式是将软件生命周期的各项活动,规定为按照瀑布模式是将软件生命周期的各项活动,规定为按照固定顺序相连的若干个阶段性工作,形如瀑布流水,最终固定顺序相连的若干个阶段性工作,形如瀑布流水,最终得到软件产品。得到软件产品。优点:易于理解;调研开发的阶段性;强调早期计划及需求优点:易于理解;调研开发的阶段性;强调早期计划及需求调查;确定何时能够交付产品及何时进行评审与测试。调查;确定何时能够交付产品及何时进行评审与测试。缺点:需求调查分析只进行一次,不能适应需求变化;顺序缺点:需求调查分析只进行一次,不能适应需求变化;顺序的开发
32、流程,使得开发中的经验教训不能反馈到该项目的的开发流程,使得开发中的经验教训不能反馈到该项目的开发中去;不能反映出软件开发过程的反复与迭代性;没开发中去;不能反映出软件开发过程的反复与迭代性;没有包含任何类型的风险评估;开发中出现的问题直到开发有包含任何类型的风险评估;开发中出现的问题直到开发后期才能够显露,因此失去及早纠正的机会。后期才能够显露,因此失去及早纠正的机会。快速原型法快速原型法 根据客户需求在较短的时间内解决用户最迫切解决的根据客户需求在较短的时间内解决用户最迫切解决的问题,完成可演示的产品。这个产品只实现最重要功能,问题,完成可演示的产品。这个产品只实现最重要功能,在得到用户的
33、更加明确的需求之后,原型将丢弃。在得到用户的更加明确的需求之后,原型将丢弃。需求分析原型开发原型评价最终设计系统实现用户反馈图1-6 快速原型开发模式快速应用开发(RAD)模型(P6)图1-7 RAD开发模式V模型(P7)图1-8 V型开发模式螺旋模式法螺旋模式法n n螺旋模式是瀑布模式与边写边改演化模式相结合,并加入螺旋模式是瀑布模式与边写边改演化模式相结合,并加入风险评估所建立的软件开发模式。风险评估所建立的软件开发模式。n n主要思想是在开始时不必详细定义所有细节,而是从小开主要思想是在开始时不必详细定义所有细节,而是从小开始,定义重要功能,尽量实现,接受客户反馈,进入下一始,定义重要功
34、能,尽量实现,接受客户反馈,进入下一阶段,并重复上述过程,直到获得最终产品。阶段,并重复上述过程,直到获得最终产品。n n每一螺旋(开发阶段)包括每一螺旋(开发阶段)包括5 5个步骤:个步骤:确定目标,选择确定目标,选择方案和限制条件。方案和限制条件。对方案风险进行评估,并能解决风对方案风险进行评估,并能解决风险。险。进行本阶段的开发和测试。进行本阶段的开发和测试。计划下一阶段。计划下一阶段。确定进入下阶段的方法。确定进入下阶段的方法。n n优点:严格的全过程风险管理;强调各开发阶段的质量;优点:严格的全过程风险管理;强调各开发阶段的质量;提供机会评估项目是否有价值继续下去。提供机会评估项目是
35、否有价值继续下去。阶段开发模型阶段开发模型图1-10 软件分阶段开发示意图增量和迭代模型增量和迭代模型增量开发增量开发迭代开发迭代开发图1-11 软件分阶段增量和迭代示意图小小 结结1 1、对于软件缺陷的精确定义,通常有下列、对于软件缺陷的精确定义,通常有下列5 5条描述:条描述:软件未达到产品说明书的功能软件未达到产品说明书的功能 软件出现了产品说明书指明不会出现的错误软件出现了产品说明书指明不会出现的错误 软件功能超出产品说明书指明范围软件功能超出产品说明书指明范围 软件未达到产品说明书虽未指出但应达到的目标软件未达到产品说明书虽未指出但应达到的目标 软件测试员认为难以理解、不易使用、运行
36、速度缓慢、或者最终用户认软件测试员认为难以理解、不易使用、运行速度缓慢、或者最终用户认为不好为不好2 2、软件缺陷第一大原因就是软件产品规格说明书,第二大原因是软件设计,、软件缺陷第一大原因就是软件产品规格说明书,第二大原因是软件设计,第三个原因才是编写代码和其它原因;前两个原因至少占了第三个原因才是编写代码和其它原因;前两个原因至少占了 80%80%以上。以上。3 3、软件测试的定义:软件测试是贯穿整个软件开发生命周期、对软件产品、软件测试的定义:软件测试是贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程,其目的是尽快尽早地(包括阶段性产品)进行验证和确认的活动
37、过程,其目的是尽快尽早地发现在软件产品中所存在的各种问题发现在软件产品中所存在的各种问题与用户需求、预先定义的不一与用户需求、预先定义的不一致性。致性。4 4、软件测试要经过单元测试、集成测试、确认测试、系统测试和验收测试。、软件测试要经过单元测试、集成测试、确认测试、系统测试和验收测试。回顾回顾软件质量就是客户的满意度软件质量就是客户的满意度软件缺陷软件缺陷(Bug)是什么是什么软件测试的基本方法软件测试的基本方法-白盒/黑盒,静态/动态,自动化/手工,软件测试的分类和阶段软件测试的分类和阶段-单元、集成、系统(性能、适用性、兼容性)、验收测试软件测试的工作范畴软件测试的工作范畴-策略、计划
38、、设计、执行、报告、评估回顾回顾软件开发的模型软件开发的模型软件质量就是客户的满意度软件质量就是客户的满意度软件缺陷软件缺陷(Bug)是什么是什么软件测试的基本方法软件测试的基本方法-白盒/黑盒,静态/动态,自动化/手工,软件测试的分类和阶段软件测试的分类和阶段-单元、集成、系统(性能、适用性、兼容性)、验收测试1.4 软件测试过程软件测试过程1.4.1 1.4.1 测试策略测试策略1.4.2 1.4.2 制定测试计划制定测试计划1.4.3 1.4.3 测试执行过程测试执行过程1.4.4 1.4.4 测试过程管理理念测试过程管理理念1、测试策略的概念、测试策略的概念测试策略通常是描述测试工程的
39、总体方法和目标。描述测试策略通常是描述测试工程的总体方法和目标。描述目前在进行哪一阶段的测试(如单元测试、集成测试、目前在进行哪一阶段的测试(如单元测试、集成测试、系统测试)以及每个阶段内进行的测试种类(如功能测系统测试)以及每个阶段内进行的测试种类(如功能测试、性能测试、压力测试等),以确定合理的测试方案试、性能测试、压力测试等),以确定合理的测试方案使得测试更有效。使得测试更有效。2、影响测试策略的因素、影响测试策略的因素测试完成的标准测试完成的标准标准的高低对策略确定有着重要的影响。比如该软件的应该用场合为军用,这将对软件的可靠性、安全性要求非常高,但如果是用于小型商场的收费系统由于是内
40、部使用,主要考虑其计算的准确与精度及复杂统计与报表生成等方面准确性与易用性。资源状况资源状况参与测试的人、测试中所需要的软件平台(如操作系统甚至会涉及到第三方的一些应用软件)及测试可能用到的相关硬件设备(如计算机,网络硬件其它外设等)3、制定测试策略pp 全面细致地了解产品的项目信息全面细致地了解产品的项目信息全面细致地了解产品的项目信息全面细致地了解产品的项目信息:应用领域应用领域,测试范围测试范围,市场需求市场需求,产品的特点和主要功能产品的特点和主要功能,技术架构技术架构pp 基于模块、功能、整体、系统、版本、压力、性能、配置和安装等基于模块、功能、整体、系统、版本、压力、性能、配置和安
41、装等各个各个因素对产品的影响因素对产品的影响因素对产品的影响因素对产品的影响,公正客观地开展测试计划公正客观地开展测试计划公正客观地开展测试计划公正客观地开展测试计划pp 根据程序的重要性和一旦发生故障将造成的损失根据程序的重要性和一旦发生故障将造成的损失,来确定它的来确定它的测试测试测试测试等级和测试重点等级和测试重点等级和测试重点等级和测试重点pp 认真研究测试策略认真研究测试策略,以便能使以便能使用尽可能少的有效测试用例用尽可能少的有效测试用例用尽可能少的有效测试用例用尽可能少的有效测试用例,发现尽可发现尽可发现尽可发现尽可能多的程序错误能多的程序错误能多的程序错误能多的程序错误,因为一
42、次完整的软件测试过后因为一次完整的软件测试过后,如果程序中遗漏的如果程序中遗漏的错误过多并且很严重错误过多并且很严重,则表明本次测试是失败的则表明本次测试是失败的,是不足的是不足的;而测试不而测试不足意味着让用户承担隐藏错误带来的危险足意味着让用户承担隐藏错误带来的危险.同时反过来说同时反过来说,如果过度如果过度测试测试,则又会浪费许多宝贵的资源则又会浪费许多宝贵的资源.找到一个最佳平衡点。找到一个最佳平衡点。通过通过/失败的标准失败的标准vv单个的测试通过单个的测试通过单个的测试通过单个的测试通过/失败失败失败失败 测测测测试试试试用例用例用例用例vv全部产品测试通过全部产品测试通过全部产品
43、测试通过全部产品测试通过/失败失败失败失败 每每每每个阶段的通过个阶段的通过个阶段的通过个阶段的通过/失败失败失败失败阶段通过/失败的标准 项目经理和测试组长已经全部按计划到位?所有相关的信息已经传达到QA?QA.开始了测试设计?需求阶段设计审查所有设计中及文档中的问题都已经被解决?技术设计和测试设计已经结束?最高优先级的功能要求已经实现?新功能已经实现?所有的功能是按照设计来实现的?代码完成?功能验证确认测试回归测试完成与否?是不是完全按测试计划完成了所有的测试?没有严重的缺陷?达到产品发布的标准?测试环境的检查?所有严重问题是不是都已测出?功能测试,压力测试,安全测试,兼容性测试,易用性测
44、试是否都已完成?有没有阻碍产品发布的缺陷?系统测试测试计划内容构成测试计划制定的第一步就是将软件分解较小而且相对独立的功能模块,写成测试需求。测试需求有很多分类方法,最普通的一种就是按照功能分类:p 测试需求是测试设计和开发测试用例的基础,分解功能模块可以更好地进行设计;p 详细的测试需求是用来衡量测试覆盖率的重要指标;p 测试需求包括各种测试实际和开发以及所需资源。一个测试计划应包括:产品基本情况、测试需求说明、测试策略和记录、测试资源配置、计划表、问题跟踪报告、测试计划的评审、结果等。1.4.2 制定测试计划制定测试计划 一个测试计划应包括:产品基本情况、测试需求说明、一个测试计划应包括:
45、产品基本情况、测试需求说明、测试策略和记录、测试资源配置、计划表、问题跟踪报测试策略和记录、测试资源配置、计划表、问题跟踪报告、测试计划的评审、结果等。告、测试计划的评审、结果等。1 1、制定计划制定计划n n本阶段的主要工作内容本阶段的主要工作内容 对需求规格说明书的仔细研究对需求规格说明书的仔细研究 将要测试的产品分解成可独立测试的单元将要测试的产品分解成可独立测试的单元 为每个测试单元确定采用的测试技术为每个测试单元确定采用的测试技术 为测试的下一个阶段及其活动制定计划为测试的下一个阶段及其活动制定计划n n制定计划包括:制定计划包括:(1 1)概要测试计划)概要测试计划 (2 2)详细
46、测试计划)详细测试计划制定测试计划制定测试计划(续)(续)2 2、测试用例、测试用例 测试用例是软件测试的依据,包括测试项目、测试步测试用例是软件测试的依据,包括测试项目、测试步骤、测试完成的标准。骤、测试完成的标准。n n测试用例的本质测试用例的本质 从测试的角度对被测对象的功能和各种特性的细化从测试的角度对被测对象的功能和各种特性的细化和展开。和展开。n n测试用例的好处测试用例的好处 保证测试功能不被遗漏,也不被重复测试保证测试功能不被遗漏,也不被重复测试 合理安排测试人员合理安排测试人员 使得软件测试不依赖于个人使得软件测试不依赖于个人制定测试计划制定测试计划(续)(续)3 3、软件测
47、试报告、软件测试报告 软件测试报告是软件测试过程中最重要的文档,它软件测试报告是软件测试过程中最重要的文档,它的内容包括:的内容包括:n n记录问题发生的环境记录问题发生的环境 如:各种资源的配置情况如:各种资源的配置情况n n记录问题的再现步骤记录问题的再现步骤n n记录问题性质的说明记录问题性质的说明n n记录问题的处理进程记录问题的处理进程 问题处理进程从一定角度上反映测试的进程和问题处理进程从一定角度上反映测试的进程和被测软件的质量状况以及改善过程。被测软件的质量状况以及改善过程。测试计划标准格式测试计划标准格式-1-1n n16 components of Test Plan(IEE
48、E,1983)1.1.Test plan identifier Test plan identifier(测试计划标识测试计划标识测试计划标识测试计划标识)2.2.Instruction(Instruction(引言)引言)引言)引言)3.3.Test Items Test Items (定义或主题词定义或主题词定义或主题词定义或主题词)4.4.Features to be tested Features to be tested (需要被测试的功能需要被测试的功能需要被测试的功能需要被测试的功能)5.5.Features not to be tested(Features not to be
49、 tested(无需被测试的功能无需被测试的功能无需被测试的功能无需被测试的功能)6.6.Approach(Approach(方法和途径)方法和途径)方法和途径)方法和途径)7.7.Items pass/fail criteria Items pass/fail criteria(测试通过、失败的标准测试通过、失败的标准测试通过、失败的标准测试通过、失败的标准)8.8.Suspension criteria and resumption requirements Suspension criteria and resumption requirements(延迟的标准和延迟的标准和延迟的标准和
50、延迟的标准和再恢复的要求再恢复的要求再恢复的要求再恢复的要求)9.9.Test deliverables(Test deliverables(测试交付的内容测试交付的内容测试交付的内容测试交付的内容)10.10.Testing Tasks(Testing Tasks(测试任务测试任务测试任务测试任务n n16 components of Test Plan(IEEE,1983)11.11.EnvironmentalEnvironmental needs needs(必备的环境必备的环境必备的环境必备的环境)12.12.Responsibilities(Responsibilities(职责职责