《软件工程综合幻灯片.ppt》由会员分享,可在线阅读,更多相关《软件工程综合幻灯片.ppt(92页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件工程综合第1页,共92页,编辑于2022年,星期三2软件规模估算1、代码行技术代码行技术是从过去开发类似产品的经验和历史数据出发,估算出所开发软件的代码行数。采用代码行数以LOC,常用千行代码数KLOG来度量。(1KLOG=103 LOC)代码行技术方法首先给出软件的范围描述;将项目分解的尽可能小,且可独立估算的子功能,估算每一个子功能并将其代码行累加得到整个系统的代码行数。第2页,共92页,编辑于2022年,星期三3代码行技术方法:为了更客观、准确,代码行估算可以由多名有经验的开发人员分代码行估算可以由多名有经验的开发人员分别给出,最终计算出所有估算的平均值。别给出,最终计算出所有估算的
2、平均值。开发人员还可以提出一个有代表性的估算值范围,分别按照最佳(a)、可能(m)、悲观(b)给出估算值。利用下列公式计算期望值:代码行期望值:L=(a+4m+b)/6 其中:a:最佳值;m:可能值;b:悲观值软件规模估算第3页,共92页,编辑于2022年,星期三4进一步度量软件开发的其他规模指标软件生产率:PkLOC/PM,其中:PM为软件开发总的工作量,常用人月(PM)度量,这样P就为每人月完成的千行代码数。每千行代码的平均成本:C=S/kLOC,即:软件每行代码的平均成本,S用人民币(或其它货币)进行表示。注意:工作量和成本是指整个软件工程活动(包括分析、设计、编码和测试)的工作量和成本
3、,而不仅仅指编码活动,文档代码比D=Pe/kLOC;Pe为软件项目相关文档页数代码错误率EQR=N/kLOC;N为代码中的总错误数。软件规模估算第4页,共92页,编辑于2022年,星期三5软件规模估算优点简单方便,在历史数据可靠的情况下可以很快估算出比较准确的代码行数。可度量软件代码的生成率、开发每行代码的平均成本、文档与代码的比例关系、每千行代码的软件错误数等缺点需要依赖比较详细的功能分解,难以在开发初期进行估算估算结果与所用开发语言紧密相关,无法适用于非过程语言第5页,共92页,编辑于2022年,星期三6例如:某软件公司统计发现该公司每一万行 C 语言源代码形成的源文件约为250K。某项目
4、的源文件大小为3.75M,则可估计该项目源代码大约为15万行,该项目累计投入工作量为240人月,每人月费用为10000元(包括人均工资,福利,办公费用公滩等),则该项目中 1 LOC 的价值为:(24010000)/150000 16 元/LOC 那么,项目的人月均代码行数为:150000/240=625 LOC/人月。软件规模估算第6页,共92页,编辑于2022年,星期三7在软件公司中,常用一个表格来记录项目中面向规模的度量。表表1 1 软件项目记录软件项目记录 表表2 2 软件项目规模估算示例软件项目规模估算示例 项目工作量(人月)成本(千元)代码行KLOC文档页数错误审计项目609002
5、002500300书店管理24150145123089酬金管理101205585021项目代码行KLOC每行代码成本C文档代码比D代码错误率EQR审计项目2004.512.51.5书店管理1451.038.480.61酬金管理552.1815.450.38软件规模估算第7页,共92页,编辑于2022年,星期三8软件规模估算2 2、功能点技术:、功能点技术:依据软件信息域的基本特征和对软件复杂性的估计,估算出软件规模。软件信息域的5个基本特征,包括:外部输入、外部输出、外部查询、内部逻辑文件和外部接口。外部输入:用户进行外部输入:用户进行添加添加或或修改修改数据的数据的屏幕或表格屏幕或表格外部输
6、出:软件为用户产生的外部输出:软件为用户产生的输出屏幕或报表输出屏幕或报表外部查询:软件以联机输出方式产生的外部查询:软件以联机输出方式产生的独立查询独立查询内部逻辑文件:软件修改或保存的内部逻辑文件:软件修改或保存的逻辑记录集合逻辑记录集合外部接口:与其他系统进行外部接口:与其他系统进行信息交换或共享的文件信息交换或共享的文件这种方法适合于在软件开发初期进行估算,并以功能点为单这种方法适合于在软件开发初期进行估算,并以功能点为单位度量软件规模。位度量软件规模。第8页,共92页,编辑于2022年,星期三9功能点估计方法步骤:1)计算外部输入、外部输出、外部查询、内部逻辑文件和外部接口的数目;2
7、)每类特征划分为简单、中等和复杂三个等级,每一个特征在不同等级上将分配不同的加权因子。如,每类特征加权因子确定为:简单:输入3、输出4、查询3,主控文件7、接口5;中等:输入4、输出5、查询4,主控文件10、接口7;复杂:输入6、输出7、查询6,主控文件25、接口10然后,将这些数据进行加权乘软件规模估算第9页,共92页,编辑于2022年,星期三103)估计者根据软件受到的多种技术因素的影响,如:性能、数据处理、可维护性等多种技术的影响,再对计算出的未调整功能点总数(UFP)进行适当的调整。如P52表列出的14种技术因素,Fi的取值为05,:F1:系统需要可靠的备份和恢复吗?F2:系统需要数据
8、通信吗?Fi,定义为:1:偶然影响、2:轻度影响、3:一般影响:4:重要影响、5:非常重要影响软件规模估算第10页,共92页,编辑于2022年,星期三11软件规模估算第11页,共92页,编辑于2022年,星期三12举例:软件规模估算例:某公司大约有3000 名员工,准备开发一个简单的工资系统系统要求用户从屏幕上输入员工的基本信息(包括员工编号、基本工资、所在等级、所属部门等)和每月的考勤情况,这两个屏幕输入的复杂度为“复杂”;另外,还有一个所得税信息的输入,其复杂度为“中等”。系统生成员工的工资单,列出工资的所有收入项和纳税扣除额,并在屏幕上显示工资单,工资单的功能复杂度是“复杂”;另外,系统
9、产生7个报表,每个报表的复杂度是“简单”。系统提供20个查询,每个查询的复杂度是“简单”。系统内部维护一个员工信息文件,该文件的复杂度是“复杂”。系统引用了3个数据表,包括员工基本信息、部门信息和所在等级,其中员工基本信息的复杂度是“中等”,其他两个的复杂度是“简单”。第12页,共92页,编辑于2022年,星期三13举例:软件规模估算计算未调整功能点第13页,共92页,编辑于2022年,星期三14举例:软件规模估算计算调整后的功能点第14页,共92页,编辑于2022年,星期三15举例:软件规模估算部分开发语言中一个功能点对应的代码行数行(LOC)/功能点(FP)假设用假设用VB VB 开发开发
10、,源程序行数源程序行数SLOCSLOC241382413833123312第15页,共92页,编辑于2022年,星期三16软件成本估算软件成本估算一般包括:专家判断、类比估算和经验模型等3种技术。自上而下方法对整个项目的总开发时间和总工作量做出估算,然后把它们按阶段、步骤和工作单元进行分配;自下而上方法分别估算各工作单元所需的开发时间,然后汇总得出总的工作量和开发时间。第16页,共92页,编辑于2022年,星期三17专家判断专家判断是依靠一个或多个专家对项目成本作出估计,这是一种近似的猜测,要求专家具有专门知识和丰富的经验。Delphi 方法是最流行的专家评估技术,它鼓励参与者就问题相互讨论,
11、互相说服对方,最终达成共识。步骤:o协调人向各专家提供项目规格和估计表格;o专家匿名填写迭代表格;o协调人汇总,返回专家;o如估计差异较大;o专家复查估计,总结、迭代,重新提交估计;o重复,直到达到一个最低和最高估计的一致。软件成本估算第17页,共92页,编辑于2022年,星期三18软件成本估算第18页,共92页,编辑于2022年,星期三19软件成本估算类比估算类比估算适合评估一些与历史项目在应用领域、环境和复杂度上相似的项目,通过新项目与历史项目的比较得到成本估算。类比估算的精确度取决于历史项目数据的完整性和准确度。步骤:整理出项目功能列表和实现每个功能的代码行;标识出每个功能与历史项目的相
12、同点/不同点;通过步骤 1 和 2 得出各个功能的估计值,产生成本的估计。注:软件项目中的类比法,往往还要解决可重用代码的估算问题。第19页,共92页,编辑于2022年,星期三20重用代码量的估计:由程序员或系统分析员详细地考查已存在的代码。新项目可重用的代码中需重新设计的百分比;需重新编码或修改的百分比;需重新测试的百分比。利用计算公式计算等价新代码行:等价代码行=(重新设计%+重新编码%+重新测试%)/3已有代码行 软件成本估算第20页,共92页,编辑于2022年,星期三21 例如:有 10,000 行代码重用,假定 30%要重新设计,50%要重新编码,70%要重新测试,那么其等价的代码行
13、可以计算为:(30%+50%+70%)/3 10,000=5,000 等价代码行.意即:重用这 10000 代码相当于编写 5000 代码行的工作量。软件成本估算第21页,共92页,编辑于2022年,星期三22软件成本估算COCOMO模型结构性成本模型COCOMO(Constructive Cost MOdel)是一种利用经验模型进行成本估算的方法基本COCOMO 模型这是一个静态单变量模型,用一个以源代码行数为自变量的经验函数来计算软件开发工作量。计算公式:E=aLb D=cEdE:开发工作量(人月),D:开发时间(月),L:千行代码数,a,b,c与软件系统有关。第22页,共92页,编辑于2
14、022年,星期三23软件成本估算中间COCOMO 模型中间 COCOMO 模型以基本 COCOMO 模型为基础,通过对影响工作量的若干因素进行估计,确定出调节因子,再对工作量估算公式进行修正。计算公式 EaLbFE:开发工作量(人月),F是调节因子,与计算机环境、人员和项目等因素有关,见表39,L:千行代码数,a,b取值见表38。第23页,共92页,编辑于2022年,星期三24软件成本估算第24页,共92页,编辑于2022年,星期三25举例:软件成本估算如:工资系统用如:工资系统用VbVb开发,代码行数开发,代码行数33123312第25页,共92页,编辑于2022年,星期三26软件项目计划软
15、件项目计划是一个用来协调所有其他计划、以指导软件项目计划是一个用来协调所有其他计划、以指导项目实施和控制的文件,它应该随着项目的进展和信项目实施和控制的文件,它应该随着项目的进展和信息的补充进行定期完善。息的补充进行定期完善。软件项目计划包括项目可用的资源、工作分解以及完成软件项目计划包括项目可用的资源、工作分解以及完成工作的进度安排,另外还有各种支持性计划。工作的进度安排,另外还有各种支持性计划。质量计划:描述质量过程和质量标准质量计划:描述质量过程和质量标准确认计划:描述系统确认的方法、资源和进度确认计划:描述系统确认的方法、资源和进度配置管理计划:描述配置管理的过程和结构配置管理计划:描
16、述配置管理的过程和结构维护计划:预期系统维护需求和所需的成本与人力维护计划:预期系统维护需求和所需的成本与人力人员开发计划:描述如何开发项目人员的技能和经验人员开发计划:描述如何开发项目人员的技能和经验第26页,共92页,编辑于2022年,星期三27软件项目计划项目进度计划的过程工作分解工作分解将项目整体分解成较小的、易于股哪里和控制的若干子项目或工作将项目整体分解成较小的、易于股哪里和控制的若干子项目或工作单元,直到可交付成果定义的足够详细,足以支持将来的活动单元,直到可交付成果定义的足够详细,足以支持将来的活动第27页,共92页,编辑于2022年,星期三28项目工作分解模板:按照项目实施过
17、程的顺序分解第28页,共92页,编辑于2022年,星期三29甘特图第29页,共92页,编辑于2022年,星期三30SPMP(IEEE 10581998)软件项目管理计划(软件项目管理计划(Software project Management PlanSoftware project Management Plan,SPMPSPMP)用来协调所有其他计划、以指导项目实施和控制的文)用来协调所有其他计划、以指导项目实施和控制的文件件1.1.记录计划的假设条件以及方案选择;记录计划的假设条件以及方案选择;2.2.确定关键管理审查的内容、范围和时间;确定关键管理审查的内容、范围和时间;3.3.为进度
18、评测和项目控制提供一个基线。为进度评测和项目控制提供一个基线。第30页,共92页,编辑于2022年,星期三31SPMP(IEEE 10581998)第31页,共92页,编辑于2022年,星期三32本节掌握内容软件项目规划三步需求分析;分解任务、估算规模、成本,写出计划书规模估算代码行技术步骤:确定范围、分解功能、估算千行代码数期望值:L=(a+4m+b)/6软件生产率:P=kLOC/PM;千行代码成本:C=S/kLOC文档代码比:P=Pe/kLOC;错误代码率:EQR=N/kLOC功能点技术5个基本特征数:外部输入、外部输出、外部查询、内部逻辑文件、外部接口步骤:计算特征数;划分等级加权乘;修
19、正偏差Fp=总计数*0.65+0.01Fi第32页,共92页,编辑于2022年,星期三33掌握内容成本估算专家判断:Delphi方法(迭代方法)类比估算列出功能点和实现代码行;分析不同点/相同点,估算成本重码工作量计算COCOMO方法计算基本模型:E=aLb D=cEd修正:EaLbF,a,b,c,d:应用程序、实用程序编译等;控制程序,操作系统。第33页,共92页,编辑于2022年,星期三34内容提纲人员组织与管理软件项目组织形式、微软公司的开发团队项目沟通管理醒目沟通的复杂性与活动软件项目规划软件项目估算与计划软件风险管理风险识别、风险分析、风险规划、风险监控软件配置管理软件配置管理的概念
20、与活动第34页,共92页,编辑于2022年,星期三35软件风险管理项目风险是一种不确定的事件或情况,项目风险是一种不确定的事件或情况,一旦的发生,就会对项目一旦的发生,就会对项目目标产生正面或负面的影响。目标产生正面或负面的影响。风险分为两类:风险分为两类:可预见风险:可以根据开发经验或逻辑推理来预见的,是可以可预见风险:可以根据开发经验或逻辑推理来预见的,是可以计划和管理的。计划和管理的。不可预见风险:不能根据所拥有的资料进行预见的,是不可计不可预见风险:不能根据所拥有的资料进行预见的,是不可计划和管理的,要求做好应急措施。划和管理的,要求做好应急措施。风险管理是风险管理是ITIT软件项目减
21、少失败的一种重要手段。软件项目减少失败的一种重要手段。采取结构化风险管理来发现计划中的缺陷采取结构化风险管理来发现计划中的缺陷采取行动来减少潜在问题发生的可能性和影响采取行动来减少潜在问题发生的可能性和影响在危机发生之前就对它进行处理在危机发生之前就对它进行处理这样就会提高项目成功的机会和减少不可避免风险所产生的后果这样就会提高项目成功的机会和减少不可避免风险所产生的后果第35页,共92页,编辑于2022年,星期三36举例:软件项目的一些风险类型可能的风险技术数据库事务处理速度不够;拟采用的系统组件存在缺陷,影响系统功能。人员招聘不到所需技能的人员;关键的人员在项目的关键时刻生病或不在;无法进
22、行所需的人员培训。组织组织结构发生变化;组织财政问题导致项目预算削减。工具CASE 工具生成的代码效率低;CASE 工具无法集成。需求需求变更导致主要的设计和开发重做;客户无法理解需求变更带来的影响。估算开发所需时间估计不足;缺陷修复估计不足;软件规模估计不足。软件开发项目由于自身的特点而具有极大风险软件开发项目由于自身的特点而具有极大风险第36页,共92页,编辑于2022年,星期三37项目风险管理过程软件风险管理是贯穿在项目开发过程中的一系列管理步骤。通过软件风险管理是贯穿在项目开发过程中的一系列管理步骤。通过主动而系统主动而系统地对地对项目风险进行全过程的项目风险进行全过程的识别、分析和监
23、控识别、分析和监控,最大限度地降低风险对软件开发的影响。,最大限度地降低风险对软件开发的影响。第37页,共92页,编辑于2022年,星期三38风险识别风险识别是试图采用风险识别是试图采用系统化的方法系统化的方法,识别特定项目,识别特定项目已知的和可已知的和可预测预测的风险,项目管理者就有可能避免这些风险,必要时控制这些风险。的风险,项目管理者就有可能避免这些风险,必要时控制这些风险。常用的风险识别方法常用的风险识别方法头脑风暴法头脑风暴法由项目小组根据由项目小组根据项目目标项目目标、项目的、项目的制约因素和假设条件制约因素和假设条件,在项目具有的,在项目具有的历史历史资料以及过去的经验教训资料
24、以及过去的经验教训等基础上综合判断等基础上综合判断项目的可能风险项目的可能风险。风险检查表风险检查表列出了所有可能的与每一个列出了所有可能的与每一个风险因素有关的提问风险因素有关的提问,使,使项目管理者可以集项目管理者可以集中识别常见的、已知的和可预测的风险中识别常见的、已知的和可预测的风险,诸如软件规模、商业影响、客户,诸如软件规模、商业影响、客户特性、软件过程、开发技术、开发环境、开发人员等方面的风险。特性、软件过程、开发技术、开发环境、开发人员等方面的风险。第38页,共92页,编辑于2022年,星期三39举例:头脑风暴法举例:识别举办短期培训班项目的风险举例:识别举办短期培训班项目的风险
25、列出项目的工作分解结构;列出项目的工作分解结构;项目小组一起进行头脑风暴,对每一项任务进行讨论,识别所有可能的风险,项目小组一起进行头脑风暴,对每一项任务进行讨论,识别所有可能的风险,防止遗漏重要的风险。防止遗漏重要的风险。第39页,共92页,编辑于2022年,星期三40举例:头脑风暴法可能的风险确定培训项目题目选择不当,可能招不来学生,导致亏本。寻找培训讲师讲师可能生病或者临时有重要事情来不了。招生可能没有学员报名。授课投影仪可能出问题。结束课程学员不满意,大闹课堂。问题:还有哪些可能的风险?第40页,共92页,编辑于2022年,星期三41举例:风险检查表第41页,共92页,编辑于2022年
26、,星期三42举例:风险检查表第42页,共92页,编辑于2022年,星期三43风险分析风险分析是对已识别的风险进行估计和评价,确定风险发生的概率与后果。定性分析评估已识别出的项目风险的影响和可能性,并按照可能产生的影响进行排序。定量分析量化分析每一风险的概率及其对项目目标造成的后果,并得出每种风险的大小和严重程度等。软件开发风险通常包括性能、成本、支持和进度等,这些风险对项目目标可能产生的影响可以划分为可忽略的、轻微的、严重的、灾难性的等四个级别。第43页,共92页,编辑于2022年,星期三44举例:软件项目风险分析第44页,共92页,编辑于2022年,星期三45风险规划在识别和分析项目风险之后
27、,项目管理者应该在识别和分析项目风险之后,项目管理者应该关注关注那那些些影响较大的风险影响较大的风险,并制定出具体的,并制定出具体的风险应对策略风险应对策略。常用的风险应对策略包括常用的风险应对策略包括风险规避、风险缓解、风险转移、风险规避、风险缓解、风险转移、风险接受风险接受等。等。风险规避风险规避是设法降低风险出现的可能性是设法降低风险出现的可能性风险缓解风险缓解是设法减少风险产生的影响是设法减少风险产生的影响风险转移风险转移是将风险转移给第三方是将风险转移给第三方风险接受风险接受是采取应急方案应对风险的发生是采取应急方案应对风险的发生第45页,共92页,编辑于2022年,星期三46举例:
28、风险应对策略第46页,共92页,编辑于2022年,星期三47风险监控风险监控是跟踪和监视项目的执行状态,洞察由于人员、技术、环境等方面的变化而给项目目标实现产生的影响。监控风险发生的情况,及早发现风险事件的征兆和苗头监控风险管理计划的落实情况,确保该计划的有效实施风险监控可能产生的结果随机应变措施纠正行动变更请求修改风险应对计划第47页,共92页,编辑于2022年,星期三48举例:风险监控类型潜在的迹象技术硬件或支持软件拖延交付,许多技术问题暴露出来人员员工士气低落,团队成员关系不融洽,工作分配不当组织组织内流言蜚语,缺少高层管理的支持工具团队成员不愿使用工具,抱怨CASE 工具需求很多需求变
29、更请求和客户怨言估算无法达到规定的进度,无法消除已发现的缺陷第48页,共92页,编辑于2022年,星期三49内容提纲人员组织与管理人员组织与管理软件项目组织形式、微软公司的开发团队软件项目组织形式、微软公司的开发团队项目沟通管理项目沟通管理醒目沟通的复杂性与活动醒目沟通的复杂性与活动软件项目规划软件项目规划软件项目估算与计划软件项目估算与计划软件风险管理软件风险管理风险识别、风险分析、风险规划、风险监控风险识别、风险分析、风险规划、风险监控软件配置管理软件配置管理软件配置管理的概念与活动软件配置管理的概念与活动第49页,共92页,编辑于2022年,星期三白盒测试及测试用例设计白盒测试及测试用例
30、设计 语句覆盖 判定覆盖 条件覆盖 判定判定条件覆盖条件覆盖 条件组合覆盖条件组合覆盖 路径覆盖。路径覆盖。常用的白盒测试方法:常用的白盒测试方法:逻辑覆盖测试,基本路径测试,数据流测试,循环测试。逻辑覆盖测试,基本路径测试,数据流测试,循环测试。(1 1)逻辑覆盖)逻辑覆盖:以程序内部的逻辑结构为基础设计测以程序内部的逻辑结构为基础设计测试用例的方法,关注对程序逻辑的覆盖程度。试用例的方法,关注对程序逻辑的覆盖程度。第50页,共92页,编辑于2022年,星期三例:PROCEDURE SAMPAL (A,B:REAL;VAR X:REAL);BEGIN IF(A1)AND(B=0)THEN X
31、:=X/A IF(A=2)OR(X1)THEN X:=X+1 END;例:对下列子程序进行测试例:对下列子程序进行测试白盒测试及测试用例设计白盒测试及测试用例设计入口入口入口入口(A1)AND(B=0)(A1)AND(B=0)(A=2)OR(X1)返回返回返回返回X=X/AX=X/AX=X+1X=X+1F FF FT TT Ta ab bd dc ce e第51页,共92页,编辑于2022年,星期三521)语句覆盖:被测程序中每个语句至少执行一次入口入口入口入口 (A1)AND(B=0)(A1)AND(B=0)(A=2)OR(X1)(A=2)OR(X1)返回返回返回返回 X=X/A X=X/A
32、 X=X+1 X=X+1F FF FT TT Ta ab bd dc ce e语句覆盖是语句覆盖是语句覆盖是语句覆盖是最弱最弱最弱最弱的逻辑覆盖的逻辑覆盖的逻辑覆盖的逻辑覆盖测试数据预期结果B=0,A=2,X=4,X=3白盒测试及测试用例设计白盒测试及测试用例设计第52页,共92页,编辑于2022年,星期三532)2)2)2)判定覆盖判定覆盖判定覆盖判定覆盖(分支覆盖分支覆盖分支覆盖分支覆盖):使每个判定的真假分支都至少执行一次使每个判定的真假分支都至少执行一次使每个判定的真假分支都至少执行一次使每个判定的真假分支都至少执行一次测试数据预期结果执行路径判定1判定2A=2,B=1,X=1 x=2
33、abeftA=3,B=0,X=3 x=1acdtf两组测试用例可覆盖所有判定的真假分支,满足判定覆盖标准。入口入口(A1)AND(B=0)(A=2)OR(X1)返回返回X=X/AX=X+1FFTTabdce白盒测试及测试用例设计白盒测试及测试用例设计第53页,共92页,编辑于2022年,星期三54 入口入口入口入口 (A1)AND(B=0)(A1)AND(B=0)(A=2)OR(X1)(A=2)OR(X1)返回返回返回返回X=X+1X=X+1F FF FT TT Ta ab bd dc ce eX=X/AX=X/A测试数据预期结果执行路径覆盖的条件A=2,B=0,X=1X=1.5aceA 1,
34、B=0,A=2,XAA=1,B=1,X=2X=3abeA 1,B 0,A 2,X 1未覆盖d分支,条件覆盖通常比判定覆盖强,但有时不满足判定覆盖的要求,条件覆盖不一定包含判定覆盖,判定覆盖也不一定包含条件覆盖3)3)条件覆盖条件覆盖:使每个判定的每个条件的可能取值至少执行一次使每个判定的每个条件的可能取值至少执行一次A 1A 1A 1A 1,B=0B=0B=0B=0,A=2A=2A=2A=2,X X X X A A A A A A A A 1 1 1 1,B B B B 0 0 0 0,A A A A 2 2 2 2,X 1X 1X 1X 1白盒测试及测试用例设计白盒测试及测试用例设计第54页
35、,共92页,编辑于2022年,星期三.4)4)判定判定/条件覆盖条件覆盖 选取足够多的测试用例,使判断中的每个条件的所有可能选取足够多的测试用例,使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。少执行一次。首先选择路径进行判定覆盖测试,首先选择路径进行判定覆盖测试,同时考虑条件覆盖,这时就可能同时考虑条件覆盖,这时就可能得到满足判定得到满足判定/条件覆盖标准的最条件覆盖标准的最少的测试用例。少的测试用例。白盒测试及测试用例设计白盒测试及测试用例设计第55页,共92页,编辑于2022年,星期三56
36、测试数据预期结果执行路径判定1判定2覆盖的条件A=2,B=0,X=4X=3acettA1,B=0;A=2,XAXAA=1,B=1,X=1X=1abdffA A 1,1,B B 0;0;A A 2 2,X 1 1满足判定条件覆盖标准的测试用例个数总是大于等于满足判定覆盖标准和条件覆盖标准的测试用例个数中的最大数。4)4)判定判定/条件覆盖条件覆盖A 1A 1,B=0B=0,A=2A=2,X X A A A A 1 1,B B 0 0,A A 2 2,X 1X 1判定判定1 1:T,F T,F 判定判定2 2:T,FT,Fc 入口入口 (A1)AND(B=0)(A=2)OR(X1)返回返回FFTT
37、abde X=X/A X=X+1白盒测试及测试用例设计白盒测试及测试用例设计第56页,共92页,编辑于2022年,星期三5)条件组合覆盖 条件组合覆盖条件组合覆盖:选择足够的测试用例,使得运行这些测选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定中的条件的所有可能组合都试用例时,被测程序的每个判定中的条件的所有可能组合都至少出现一次。至少出现一次。必须注意的是,这里的条件组必须注意的是,这里的条件组合是指每个判定中的条件的所有合是指每个判定中的条件的所有可能组合,而不是整个程序的所可能组合,而不是整个程序的所有条件的所有可能组合。有条件的所有可能组合。白盒测试及测试用例设计白盒测
38、试及测试用例设计第57页,共92页,编辑于2022年,星期三58判定1中条件结果的所有可能组合有如下四种情况:(1)A 1,B=0;(2)A 1,B 0;(3)A 1,B=0;(4)A 1,B 0;入口入口 (A1)AND(B=0)(A=2)OR(X1)返回返回 X=X/A X=X+1FFTTabdce白盒测试及测试用例设计白盒测试及测试用例设计5)条件组合覆盖 第58页,共92页,编辑于2022年,星期三59 入口入口 (A1)AND(B=0)(A=2)OR(X1)返回返回 X=X/A X=X+1FFTTabdce判定2中条件结果的所有可能组合有如下四种情况:(5)A=2,X1(或XA);(
39、6)A=2,x1(或XA);(7)A2,X1(或XA);(8)A2,X1(或XA)。5)条件组合覆盖 白盒测试及测试用例设计白盒测试及测试用例设计第59页,共92页,编辑于2022年,星期三60测试数据预期结果执行路径判定1判定2覆盖的条件A=2,B=0,X=4X=3acettA 1,B=0A=2,X X A AA=2,B=1,X=1X=2abeftA 1,B 0A=2,X 1A=1,B=0,X=2X=3abeftA 1,B=0 A 2,X 1A=1,B=1,X=1X=1abdffA A 1 1,B B 0 0A A 2 2,X 1 1条件组合覆盖是上述五种覆盖标准中最强的一种,满足条件组合覆
40、盖条件组合覆盖是上述五种覆盖标准中最强的一种,满足条件组合覆盖条件组合覆盖是上述五种覆盖标准中最强的一种,满足条件组合覆盖条件组合覆盖是上述五种覆盖标准中最强的一种,满足条件组合覆盖标准的测试用例一定也满足判定覆盖、条件覆盖、判定标准的测试用例一定也满足判定覆盖、条件覆盖、判定标准的测试用例一定也满足判定覆盖、条件覆盖、判定标准的测试用例一定也满足判定覆盖、条件覆盖、判定/条件覆盖、条件覆盖、条件覆盖、条件覆盖、语句覆盖标准。然而,语句覆盖标准。然而,语句覆盖标准。然而,语句覆盖标准。然而,条件组合覆盖仍不能保证程序中所有可能的路径都条件组合覆盖仍不能保证程序中所有可能的路径都被覆盖,如:被覆
41、盖,如:acdacd没有经过。没有经过。第60页,共92页,编辑于2022年,星期三6)路径覆盖路径覆盖是指选择足够的测试用例,使得运行这些测试用路径覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每条可能执行到的路径都至少经过一次例时,被测程序的每条可能执行到的路径都至少经过一次(如包含环路,则每条环路至少经过一次)(如包含环路,则每条环路至少经过一次)本例中所有可能执行的路径有:本例中所有可能执行的路径有:aceace(判断(判断1 1为为“t”“t”且判断且判断2 2为为“t”“t”)abdabd(判断(判断1 1为为“f”“f”且判断且判断2 2为为“f”“f”)abea
42、be(判断(判断1 1为为“f”“f”且判断且判断2 2为为“t”“t”)acdacd(判断(判断1 1为为“t”“t”且判断且判断2 2为为“f”“f”)。)。白盒测试及测试用例设计白盒测试及测试用例设计第61页,共92页,编辑于2022年,星期三开始开始 (A1)AND(B=0)(A=2)OR(X1)返回返回 X=X/A X=X+1FFTTabdce测试数据预期结果执行路径判定1判定2A=2,B=0,X=4X=3acettA=3,B=0,X=3X=1acdtfA=1,B=0,X=2X=3abeftA=1,B=1,X=1X=1abdff第62页,共92页,编辑于2022年,星期三 路径覆盖实
43、际上考虑了程序中各种判路径覆盖实际上考虑了程序中各种判定结果的所有可能组合,定结果的所有可能组合,但它未必能覆盖判定中条件结果的各但它未必能覆盖判定中条件结果的各种可能情况。种可能情况。它是一种比较强的覆盖标准,但不能替它是一种比较强的覆盖标准,但不能替代条件覆盖、判定代条件覆盖、判定/条件覆盖和条件组条件覆盖和条件组合覆盖标准。合覆盖标准。6)路径覆盖白盒测试及测试用例设计白盒测试及测试用例设计第63页,共92页,编辑于2022年,星期三 逻辑覆盖测试强调逻辑覆盖测试强调“运行这些测试用例时运行这些测试用例时”覆盖了被覆盖了被测程序的哪些判定、条件或路径。测程序的哪些判定、条件或路径。语句覆
44、盖:语句覆盖:对程序中每个语句至少执行一次;对程序中每个语句至少执行一次;适合于简单的顺序语句;适合于简单的顺序语句;分支覆盖:分支覆盖:使每个判定的分支都至少执行一次,满足语句覆盖使每个判定的分支都至少执行一次,满足语句覆盖适合于简单的分支语句;适合于简单的分支语句;逻辑覆盖小结:逻辑覆盖小结:第64页,共92页,编辑于2022年,星期三条件覆盖:条件覆盖:使每个判定的每个条件的可能取值至少执行一次使每个判定的每个条件的可能取值至少执行一次条件覆盖通常比判定覆盖强,但条件覆盖与判定覆盖不一定条件覆盖通常比判定覆盖强,但条件覆盖与判定覆盖不一定相互包含;相互包含;分支分支/条件覆盖条件覆盖 使
45、判断中的每个条件的所有可能取值至少执行一次,同时使判断中的每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。每个判断本身的所有可能判断结果至少执行一次。满足判定满足判定/条件覆盖的测试用例一定也满足判定覆盖、条件条件覆盖的测试用例一定也满足判定覆盖、条件覆盖、语句覆盖覆盖、语句覆盖 ,但条件组合欠缺,但条件组合欠缺逻辑覆盖小结:逻辑覆盖小结:第65页,共92页,编辑于2022年,星期三条件组合覆盖条件组合覆盖使得被测程序的每个判定中的条件结果的所有可能使得被测程序的每个判定中的条件结果的所有可能组合都至少出现一次。组合都至少出现一次。条件组合是指每个判定中的条
46、件结果的所有可能组合,条件组合是指每个判定中的条件结果的所有可能组合,而不是整个程序的所有条件结果的所有可能组合。而不是整个程序的所有条件结果的所有可能组合。缺陷:没有覆盖所有的程序路径。缺陷:没有覆盖所有的程序路径。逻辑覆盖小结:逻辑覆盖小结:第66页,共92页,编辑于2022年,星期三路径覆盖路径覆盖使得被测程序的每条可能执行到的路径都至少经过一次。使得被测程序的每条可能执行到的路径都至少经过一次。路径覆盖实际上考虑了程序中各种判定结果的所有可能路径覆盖实际上考虑了程序中各种判定结果的所有可能组合,但它未必能覆盖判定中条件结果的各种可能情况。组合,但它未必能覆盖判定中条件结果的各种可能情况
47、。它是一种比较强的覆盖标准,但不能替代条件覆盖、判定它是一种比较强的覆盖标准,但不能替代条件覆盖、判定 /条件覆盖和条件组合覆盖标准。条件覆盖和条件组合覆盖标准。逻辑覆盖小结:逻辑覆盖小结:根据程序代码的情况选择合适测试方法;根据程序代码的情况选择合适测试方法;根据测试的重点选择合适的测试方法;根据测试的重点选择合适的测试方法;第67页,共92页,编辑于2022年,星期三基本路径测试:基本路径测试是基本路径测试是Tom McCabeTom McCabe提出的一种白盒测提出的一种白盒测试技术,这种方法步骤:试技术,这种方法步骤:首先根据程序画出控制流图,并计算其区域数,首先根据程序画出控制流图,
48、并计算其区域数,然后确定一组独立的程序执行基本路径,然后确定一组独立的程序执行基本路径,最后为每一条基本路径设计一个测试用例。最后为每一条基本路径设计一个测试用例。在实际问题中,包含循环的程序其路径数往往非常多,测在实际问题中,包含循环的程序其路径数往往非常多,测试常常难以做到覆盖程序中的所有路径,如何把测试的程试常常难以做到覆盖程序中的所有路径,如何把测试的程序路径数压缩到一定的范围内?序路径数压缩到一定的范围内?白盒测试及测试用例设计白盒测试及测试用例设计第68页,共92页,编辑于2022年,星期三流图:由流图:由节点节点和和边边组成的一种简单的控制流表示方法。组成的一种简单的控制流表示方
49、法。首先,将含复合条件的设计图转化为只含简单条件的设计图首先,将含复合条件的设计图转化为只含简单条件的设计图a a)含复合条件的设计图)含复合条件的设计图)含复合条件的设计图)含复合条件的设计图 a a b or c b or c d dx=1x=1x=2x=2t tf fy=0y=0b b)只含简单条件的设计图)只含简单条件的设计图)只含简单条件的设计图)只含简单条件的设计图白盒测试及测试用例设计白盒测试及测试用例设计第69页,共92页,编辑于2022年,星期三流图:其次流图:其次 设计图中一个设计图中一个连续的处理框连续的处理框(对应于程序中的顺序语句)序列和一(对应于程序中的顺序语句)序
50、列和一个个判定框判定框(对应于程序中的条件控制语句)映射成流图中的一个(对应于程序中的条件控制语句)映射成流图中的一个节点节点;设计图中的设计图中的箭头箭头(对应于程序中的控制转向)映射成流图中的一条(对应于程序中的控制转向)映射成流图中的一条边边。设计图中设计图中多个箭头的交汇点多个箭头的交汇点映射成流图中的一个节点:映射成流图中的一个节点:空节点空节点 把流图中由节点和边组成的闭合部分称为一个区域,在计算区域数时,图把流图中由节点和边组成的闭合部分称为一个区域,在计算区域数时,图把流图中由节点和边组成的闭合部分称为一个区域,在计算区域数时,图把流图中由节点和边组成的闭合部分称为一个区域,在