软件质量与结构化测试已读版修正版

上传人:gb****c 文档编号:243386008 上传时间:2024-09-22 格式:PPT 页数:102 大小:1.65MB
返回 下载 相关 举报
软件质量与结构化测试已读版修正版_第1页
第1页 / 共102页
软件质量与结构化测试已读版修正版_第2页
第2页 / 共102页
软件质量与结构化测试已读版修正版_第3页
第3页 / 共102页
点击查看更多>>
资源描述
*,*,Click to edit Master title,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,信息技术培训中心,uality,Software,软件质量,与结构化测试,1,内容提要,什么是软件质量,软件质量特性与质量模型,软件质量的度量,常用软件度量方法,McCabe,复杂度,结构化测试技术,2,Testing,Maintenance,Design,Coding,软件开发,3,Maintenance,软件开发的工作分配,Design,Coding,Testing,4,什么是软件质量,“,The totality of features and characteristics of a product or service that bear on its ability to satisfy stated or implied needs” (ISO 8402),与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体,The degree of excellence,软件的优秀程度,“,The ability of a software product to satisfy its specified requirements” (DoD-STD-2168),软件产品满足其规定的需求的能力,5,什么是软件质量,“,The degree to which a system, component, or process meets specified requirements.” (IEEE standard 610.12-1990),一个系统、组件或过程满足规定的需求的程度,“,The degree to which a system, component, or process meets customer or user needs or expectations.” (IEEE standard 610.12-1990),一个系统、组件或过程满足客户或用户的需求的程度,或满足期望值的程度,6,ISO 9126,Software Quality:,软件质量,The totality of features and characteristics of a software product that bear on its ability to satisfy stated or implied needs.,与软件产品满足规定的和隐含的需求的能力有关的特征或特性的全体,Software Quality Characteristics:,软件质量特性,A set of attributes of a software product by which its ability is described and evaluated. A software quality characteristic may be refined into multiple levels of sub-characteristics.,软件质量特性是软件产品的一组属性,用来对软件的能力进行描述和评估。软件质量特性可细分为多层次的子特性。,Software Quality Metric:,软件质量度量,A quantitative scale and method which can be used to determine the value a feature takes for a specific software product.,用于确定软件产品质量特性的定量的衡量和分析方法,7,用户角度,供应商的角度,Quality in Software,软件过程,商业价值,易于修改,可实现性,可靠性,更少的,bug,多功能性,特征的多少,8,缩短时间表,“,Quality does not happen by mistake!”,为什么质量差?,压缩的预算,人员的变化,用户需求的改变,提高或增加功能或性能,Bug Fixing,无效的测试,9,软件质量保证(,QA),原则,质量不必是“最好”的,质量是用户想要的和愿意购买的,范围,QA is more than testing,QA not only at the end of the project,QA of product and process,格言,Moving from quality controlling (ex post) to prevention by quality,service.,通过质量服务把质量控制变换到预防,10,Quality Characteristics,质量特征,可靠性,性能,可维护性,健壮性,用户友好性,ISO 9126,11,Software Complexity,软件产品,系统体系复杂性,模块文本复杂性,模块的结构复杂,A software product is a solution of a problem. The complexity of the solution generally depends on the complexity of the problem.,12,Quality Models,分配用户需求,Quality Factors(,质量因素),到开发标准,Quality Criteria(,质量标准),到可证明的和测量的值,Metrics(,度量),13,软件质量的因子-标准-度量关系,质量树的概念,QUALITY,FACTOR 1,FACTOR I,FACTOR L,CRITERIA 1,CRITERIA J,CRITERIA M,METRIC K,METRIC 1,METRIC N,14,The Metrics,FACTORS,CRITERIA,METRICS,可维护性,自描述性,简单性,简明性,模块化,嵌套级别数,行数,可执行语句数,操作数频率,语句平均长度,组件级别,注释率,-,15,Boehm,质量模型,16,McCall Model,17,质量与质量管理,质量要用,需求,,,可接受性,和它们达到的,证据,来衡量,质量是通过解决问题实现的,质量管理确保前面解决过的问题不再出现,没有质量测量来做质量管理只能是幻想,18,测量工具的好处,支持质量管理系统,开发工程师可以自己检查,支持代码评审,评价外部软件,支持测试,19,uality,Software,Metrics,20,什么是度量(,Metric )?,任何测量的单位,e.g. Cm, Litre, Ohm, Second, Color,描述一个实体的属性,度量的类型:,和项目相关,时间表/开支,估算测量,功能点,软件度量,21,只有当你对你所谈到的东西进行测量,并用数量表示出来时,你就对它有了一定了解,反之,你对它并没有真正的了解,.,Lord Kelvin, 1889,You cant control what you cant measure.,De Marco, 1982,软件质量度量,22,测量非常有用,但我们必须先解决如下问题:,5.1,o-1s,测量,What do we want to measure?,测量什么,How do we measure?,如何测,n?,What do the measurements mea,测量的意义何在,23,复杂性,尺寸,测试路径,冗余,结构,模块性,可维护性,可靠性,可复用性,可测量的,不可测量的,5.2,o-2s,What to Measure?,24,直观的,Good Metrics should:,和错误出现有直接关系,好的度量,Good Metrics must:,客观的,语言独立,和测试努力直接有关,自动化,简单,25,提高质量,4.1,s,测量,确定质量,Time,Quality,防止质量退化,辅助做出决策,理解,提高生产力,确定变更的影响,风险分析,测试,确保质量,提高测试效率,26,Metrics,+,Halstead Metrics,霍尔斯特德度量,可用的软件度量包括:,Function Point,功能点,Line Count Metrics,线计数度量,McCabe Metrics,圈复杂度,Data Metrics,System Level Metrics,OO Metrics,Derived Metrics,27,Halstead Metrics,起源:,1977,年,由,Maurice Halstead,开发介绍,计算模块的操作数和操作符,直接得出模块的复杂程度的一种定量测试方法,通过源代码测量模块的复杂度,重点是复杂性的计算,应用于代码,经常作为一种维护性度量,自诞生之日起,就充满争议,28,技术,Halstead,度量主要基于以下四层源自程序代码的统计数值:,n1 = the number of distinct(,独立的 ),operators,操作符,n2 = the number of distinct operands,操作数,N1 = the total number of operators,N2 =the total number of operands,Measure,Symbol,Formula,Program length,长度,N N= N1 + N2,Program vocabulary,词汇量,n n= n1 + n2,Volume,容量,V V= N * (LOG2 n),Difficulty,难度,D D= (n1/2) * (N2/n2),Effort,工作量,E E= D * V,from the above, five measures are derived.,Halstead Metrics,29,Halstead Metrics,优势:,不必深入分析程序的结构,预测错误的数目,预测维护的工作量,对报告和计划项目的健康程度有帮助,对整个程序有帮助,计算简单,适合任何编程语言,经过很多工业研究,都支持使用,Halstead,来预测开发工作量和平均,bugs,30,Function Points,起源:,1977,由,A.J.Albrecht,开发设计,测量软件的大小和生产力,技术:,将基本功能点分为5组,:,outputs,输出,inquiries,查询,inputs,输入,files,文件,interfaces,接口,功能点就是最终用户的业务功能,比如对输入的查询,.,和软件完成的功能紧密相关,31,Function Points,优势:,对以下情况,通常被公认为是一种有效方法,:,较大的用户群;,International Function Point Group (IFPG),多于 1,200 会员公司,建立每小时功能点的生产率,评估对需求的支持,评估软件工程的大小 (以及周期),软件模块比较的标准化,评估系统变更的开销,IFPG,提供功能点实践手册,以及标准化的实践活动,Source: Software Engineering Institute Carnegie Mellon,32,Line Count Metrics,表明每个模块的行数,包括代码,注释,空白行, 混合代码和注释,.,技术,LOC,可分为以下几类:,Lines-of-Code (LOC) metrics,提供代码的总额,但是对内容的测量不太好,blanks - Lines with only space (eg. space and tabs) or no text comment,code - Source lines of code that contain only code and white space,comments - Source lines of code that are purely comments,Mixed - Lines that contain both code and comments,33,Line Count Metrics,优势:,测量软件的物理尺寸,鉴别特殊行, 如注释行和空行,帮助查明难以理解的模块,. (Comment lines often increase readability, although an unusually large number of comments can indicate that the module is difficult to understand.),34,McCabe Metrics,起源:,圈复杂度(,Cyclomatic Complexity),由,Thomas McCabe,于1976提出,测量贯穿程序模块的独立线性路径数,提供了比较两个程序复杂度的一种简单的指标,通常被称为程序复杂度或,McCabe,复杂度,35,McCabe Metrics,优势:,广泛应用的静态软件度量,和其他度量互补,独立于开发语言,扩展到可以包括设计和结构复杂度,基于软件结构的严格的数学分析,36,McCabe Metrics,优势:,可以应用到几个领域:,维护的风险分析,Code complexity tends to increase through maintenance over time. By measuring before and after complexity can be monitored, managed and minimise the risk of change.,代码开发的风险分析:,while under development, complexity can be measured for inherent risk and risk buildup.,测试的计划,Cyclomatic complexity gives the exact number of tests needed to test every decision point. This aids in test planning. Highly complex modules require a prohibitive number of test steps, that number can be reduced to a more pragmatic size by breaking the module into smaller less complex sub modules.,再工程,Cyclomatic complexity analysis provides insight to the structure of code. Reengineering risk is related to the code complexity. This insight helps with cost and risk analysis.,37,McCabe Metrics,McCabe,度量包括.,Cyclomatic complexity (v(G),Essential complexity (ev(G),Module design complexity (iv(G),Design complexity (S,0,),Integration complexity (S,1,),Data complexity,Global data complexity (gdv(G),Specified data complexity (sdv(G),38,Is constructed from written code,分析一个模块,结构流图.,一种描述软件模块逻辑的结构图,Is a visualization of the modules decision logic,39,分析一个模块,流图符号,(,箭头)称为“边”(,edge),,代表控制流,(圆圈)称为“节点”(,node),,代表一个或多个语句动作,由节点和边围成的范围称为“域”(,region),,在计算域时,图形外的区域也应算做一个“域”,判定节点,指包含条件的节点,40,If . then,If . then . else,If . and . then,If . or . then,Do . While,While . Do,Switch,分析一个模块,C,语言流图符号,41,分析一个模块,FlowgraphsC,程序举例,function_test(y),0,x=3;,1,if ( y 4),2,x=sin(y);,else,3,x=cos(y);,4,x=x*x;,5,42,分析一个模块,FlowgraphsC,程序举例,0,function_test(y),0,x=3;,1if ( y 4),2x=sin(y);,else,3x=cos(y);,4x=x*x;,5,43,分析一个模块,FlowgraphsC,程序举例,0,1,3,2,function_test(y),0,x=3;,1if ( y 4),2x=sin(y);,else,3x=cos(y);,4x=x*x;,5,44,分析一个模块,FlowgraphsC,程序举例,0,1,3,4,5,2,function_test(y),0,x=3;,1if ( y 10),printf (message2);,flaga = 1;,if (c5),moda(,x,);,else,printf (message3);,gdv(G),x,= 3,全局数据复杂度计算举例.,CALL moda (x),C1,C4,C5,x = y + n,C2,C3,C1,C4,C5,x = y + n,CALL moda (x),C2,C3,Reduced,87,全局数据复杂度的优势.,分离出具有最高外部数据耦合的模块,揭示代码的质量,结合控制流和数据分析给出软件的全面评价,数据度量,88,指定数据复杂度,Specified Data Complexity (sdv(G).,模块中与用户数据相关联的结构复杂度的一种定量描述,缩写为,sdv(G),数据度量,89,指定数据复杂度的计算方法,.,将所有不包含指定数据元素的判定和循环都视为直线代码,再计算此时的圈复杂度就得到指定数据复杂度,数据度量,指定数据复杂度就是简化后流图的圈复杂度,90,指定数据复杂度计算举例,数据度量,sdv,z,= 3,main(),if (c1),if (c2),x = y + n;,if (c3),z,= y + m;,else,pritf (message1);,if (,z, 10),printf (message2),flaga = 1;,if (c5),moda(x);,else,printf (message3);,C1,C4,C5,z = y + m,C2,C3,z 10,Reduced,C2,C5,C3,C4,z = y + m,C1,z 10,91,指定数据复杂度的优势.,表明一个模块与指定数据相关联的数据复杂程度,等于(用来测试指定数据所有应用的)基本测试路径数,可分析数据结构变化对软件的影响,数据度量,92,其他复杂度度量.,Henry and Kafura metrics,模块之间的耦合,(parameters, global variables, calls),其他度量,模块和系统复杂性; 通过参数和全局变量的耦合程度,模块性或耦合; 结构的复杂度 (结构图的最大深度); 调用,结构流图的模块性,Bowles metrics,Troy and Zweben metrics,Ligier metrics,Source: Software Engineering Institute Carnegie Mellon,93,McCabe,度量,McCabe,度量标准与软件质量.,Cyclomatic Complexity v(G),易理解,测试工作量,可靠性,Essential Complexity ev(G),结构化特性,可维护性,再工程的工作量,Module Design Complexity iv(G),集成的工作量,94,McCabe,度量,McCabe,度量标准与软件质量,.,Design Complexity S,0,设计的复杂程度,模块调用的复杂性,Integration Complexity S,1,量化集成工作,Global Complexity (gdv(G),模块与外部数据的耦合,控制流与数据分析,Specified Complexity (sdv(G),数据结构变化的影响,95,McCabe,度量,其他,McCabe,度量.,Number of Lines (nl),Normalised Complexity (nv),Pathological Complexity (pv(G),Global Data Density (global_data_density),Specified Data Reference (sdr),Specified Data Complexity Decision Severity (sdv_severity),Specified Data Reference Decision Severity (sdr_severity),96,结构化测试,Testing Techniques.,代码覆盖率,Flowgraph A,Flowgraph B,哪个函数更复杂?,2,Tests Required,2,Tests Required,代码覆盖与复杂度不成比例,97,结构化测试,Testing Techniques.,分支覆盖,需要多少个测试可以做到100%覆盖?,Branch Test #1,Branch Test #2,Branch Test #3,Branch Test #4,98,结构化测试,Testing Techniques.,基本路径覆盖,(TRUE and FALSE),(FALSE and TRUE),(TRUE and TRUE),Any other path (eg. FALSE and FALSE) exercise a combination of the above paths,+,-,= (FALSE and FALSE),99,结构化测试,Testing Techniques.,基本路径测试,基本路径数等于模块的,McCabe,圈复杂度,v(G),100,结构化测试,Testing Techniques.,基本路径覆盖,“,简单地说,结构化测试,要求贯穿模块的一组基本路径必须测试,以保证测试的充分性,结构化测试的原理,贯穿模块流图的基本路径是线性独立的,因此,任何其他路径都可以有基本路径组合而来,基本路径数等于,McCabe,圈复杂度,101,Case Studies,以下机构独立研究证明 :,美国国防部,海军武器系统,通用电子,结论,.,Software Quality, Complexity & Testing,圈复杂度能很好地预测 :,出错的可能性,理解的容易性,变更的工作量,调试的容易性,McCabe,圈复杂度被证明与错误的发生有极强的相关性,相关系数达到,0.96,.,102,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!