嵌入式软件测试技术QUALITY.pdf
- 文档编号:3211638
- 上传时间:2022-11-20
- 格式:PDF
- 页数:64
- 大小:652.63KB
嵌入式软件测试技术QUALITY.pdf
《嵌入式软件测试技术QUALITY.pdf》由会员分享,可在线阅读,更多相关《嵌入式软件测试技术QUALITY.pdf(64页珍藏版)》请在冰豆网上搜索。
1嵌入式软件测试技术嵌入式软件测试技术(静态篇:
软件质量分析)(静态篇:
软件质量分析)皮永辉2012.9ualitySoftware2嵌入式软件静态测试技术软件度量与质量分析内容提要内容提要没有测量,何来控制没有测量,何来控制软件度量概述软件度量,各有所长软件度量,各有所长常用软件度量方法从分析结构入手-McCabe复杂度概述代码结构的复杂程度代码结构的复杂程度圈复杂度代码结构的良好程度代码结构的良好程度基本复杂度软件质量分析软件质量分析McCabe复杂度与质量的关系结构化测试3软件度量与质量分析没有测量,何来控制只有当你对你所谈到的东西进行测量,并用数量表示出来时,你就对它有了一定了解,反之只有当你对你所谈到的东西进行测量,并用数量表示出来时,你就对它有了一定了解,反之,你对它并没有真正的了解你对它并没有真正的了解.LordKelvin,1889Youcantcontrolwhatyoucantmeasure.DeMarco,19824什么是度量什么是度量(MetricMetric)?
)?
度量(Metric)度量(Metric)测量、计算,用定量的方法描述一个实体的某一属性软件的度量和项目相关和项目相关估算性测量估算性测量复杂性度量复杂性度量软件度量与质量分析没有测量,何来控制5软件代码度量软件代码度量软件是特殊产品,难以度量通过度量了解质量特性软件质量属性软件质量属性正确性健壮性可靠性性能易用性度量的好处度量的好处从定性到定量质量分析、控制为进一步的分析、评估、决策等提供依据安全性可扩展性兼容性可移植性软件度量与质量分析没有测量,何来控制65.1o-1sn?
度量要面对的问题度量要面对的问题Whatdowewanttomeasure?
我们要测量什么?
Howdowemeasure?
我们应如何测量?
Whatdothemeasurementsmea测量的意义何在?
软件度量与质量分析没有测量,何来控制7可测量的不可测量的可测量的不可测量的测什么?
测什么?
功能、性能质量属性复杂程度结构物理尺寸模块、路径如何测?
如何测?
并非所有的属性都是可直接测量的简单、易实现、直观、数字化意义?
意义?
并非可测量的都有意义好的度量如何评价软件度量与质量分析没有测量,何来控制8何谓好的度量何谓好的度量好的度量必须:
直观直观客观客观语言独立语言独立好的度量应该:
和错误的出现有直接关联和错误的出现有直接关联能反映测试的工作量能反映测试的工作量自动化自动化简单简单不少软件度量方法都是针对复杂性的不少软件度量方法都是针对复杂性的软件度量与质量分析没有测量,何来控制9常用软件度量常用软件度量LineCountMetrics行数统计度量HalsteadMetricsHalstead度量FunctionPoint功能点McCabeMetricsMcCabe度量软件产品的复杂性软件产品的复杂性文本复杂性逻辑结构复杂性功能体系复杂性软件度量与质量分析软件度量,各有所长10起源起源测量物体的尺寸是研究它的开始最简单、直接的一种方法技术技术对模块代码行进行分类统计,提供代码行、注释行、空白行、混合行提供代码的总额,但不关注内容和结构LOC复杂度:
blanks(空白行):
空行(只有空格、Tab),没有其他字符code(代码行):
纯代码行,不含注释comments(注释行):
纯注释行,不含代码mixed(混合行):
既有代码,又有注释软件度量,各有所长行数度量(LOC)11优势优势软件物理规模的直接度量易于理解计算简单语言独立定义了不同类别的代码行(如注释行和空行),有利于进一步分析、引用协助指出难以理解的模块注释行通常增加了可读性,但不寻常的大量注释意味着模块难以理解注释行通常增加了可读性,但不寻常的大量注释意味着模块难以理解软件度量,各有所长行数度量(LOC)12起源起源1977年,由MauriceHalstead提出计算模块的操作数和操作符(运算符),直接得出模块的复杂程度的一种定量测试方法通过分析源代码对模块进行度量,重点是复杂性的计算应用于代码,经常作为一种维护性度量。
也可作为对难度、工作量的一种评估自诞生之日起,就充满争议软件度量,各有所长Halstead度量13技术技术Halstead度量主要基于4种源自程序代码的统计数值:
n1=独立的操作符的数量(操作符的种类数)独立的操作符的数量(操作符的种类数)n2=独立的操作数的数量(操作数的种类数)独立的操作数的数量(操作数的种类数)N1=操作符总数操作符总数N2=操作数总数操作数总数通过以上数据,可以计算5种复杂度:
复杂度复杂度符号符号公式公式程序长度程序长度(Programlength)NN=N1+N2词汇量词汇量(Programvocabulary)nn=n1+n2容量容量(Volume)VV=N*(Log2n)难度难度(Difficulty)DD=(n1/2)*(N2/n2)工作量工作量(Effort)EE=D*V错误数预测:
错误数预测:
Error=V/3000=N*(Log2n)/3000软件度量,各有所长Halstead度量14优势优势不必深入分析程序的结构计算简单适用于任何编程语言预测错误/缺陷的数目预测测试的工作量预测维护的工作量有利于项目规划对整个开发过程有帮助经过很多机构的使用和研究,表明Halstead复杂度对预测开发工作量和平均缺陷数非常有用软件度量,各有所长Halstead度量15起源起源1979由Allan.Albrecht开发从系统的需求和设计出发,对软件的功能进行分类、统计、分析度量软件的规模和生产力和软件完成的功能紧密相关较广泛的认可国际功能点组织、标准化活动ISO/IEC标准软件度量,各有所长功能点16技术技术功能点就是最终用户的业务功能,比如对输入的查询就是最终用户的业务功能,比如对输入的查询用户业务功能需求:
数据功能数据功能内部逻辑数据内部逻辑数据外部接口数据外部接口数据事务功能事务功能外部输入外部输入外部输出外部输出外部查询外部查询再配以不同的复杂性,确定14个特征值计算调整系数,计算功能点软件度量,各有所长功能点17优势优势对以下情况,功能点度量通常被公认为是一种有效方法:
评估软件工程的大小(以及周期)评估软件工程的大小(以及周期)建立每小时功能点的生产力建立每小时功能点的生产力评估对需求的支持评估对需求的支持评估系统变更的开销评估系统变更的开销软件模块比较的标准化软件模块比较的标准化唯一与软件功能相关的度量方法语言独立较大的用户群:
InternationalFunctionPointUsersGroup(IFPUG,国际功能点用户组织国际功能点用户组织)多于1,200会员公司IFPUG提供功能点实践手册,指导标准化的实践活动软件度量,各有所长功能点18起源起源1976年,由ThomasMcCabe提出1976年发表软件复杂度的论文1976年发表软件复杂度的论文1982年发表论文结构测试:
使用圈复杂度的软件测试方法1982年发表论文结构测试:
使用圈复杂度的软件测试方法McCabe测试技术被美国国家标准技术学会(NIST)采用测试技术被美国国家标准技术学会(NIST)采用从分析结构入手,计算模块/程序的复杂程度提供了比较两个程序复杂度的一种简单、客观的指标广泛的认可McCabe复杂度又称:
程序复杂度程序复杂度循环复杂度(循环复杂度(CyclomaticComplexity)圈复杂度圈复杂度软件度量,各有所长McCabe度量19技术技术McCabe复杂度是基于对软件结构进行严格的算术分析得来,其本质上是对程序拓扑结构复杂性的度量对模块结构的复杂程度进行量化,并以该复杂度为基础分析基本复杂度等其他复杂度McCabe复杂度分为模块、类、程序3个层面McCabe复杂度种类:
圈复杂度圈复杂度基本复杂度基本复杂度模块设计复杂度模块设计复杂度设计复杂度设计复杂度集成复杂度集成复杂度数据复杂度数据复杂度软件度量,各有所长McCabe度量20优势优势基于软件结构的严格的数学分析反映代码的质量严谨、客观易于理解和程序语言无关广泛的认可与其他度量互补可扩展或派生出更多的复杂度应用优势软件度量,各有所长McCabe度量21优势优势McCabe复杂度的应用代码质量分析代码质量分析作为动态测试的指导作为动态测试的指导代码开发/维护的风险分析代码开发/维护的风险分析作为项目开发和管理指南作为项目开发和管理指南再工程再工程软件度量,各有所长McCabe度量22预备知识预备知识结构流图一种描述软件模块逻辑的结构图,类似于流程图一种描述软件模块逻辑的结构图,类似于流程图通过源代码建立通过源代码建立是模块判逻辑结构的可视化是模块判逻辑结构的可视化流图符号(箭头)称为(箭头)称为“边边”(edge),代表控制流(edge),代表控制流(圆圈或圆点)称为(圆圈或圆点)称为“节点节点”(node),代表一个或多个语句动作(node),代表一个或多个语句动作由节点和边围成的范围称为由节点和边围成的范围称为“域域”(region),在计算域时,图形外的区域也应算做一个(region),在计算域时,图形外的区域也应算做一个“域域”判定节点,指包含条件的节点。
其判定数等于派生出的分支数判定节点,指包含条件的节点。
其判定数等于派生出的分支数软件度量,各有所长McCabe度量23C常用控制结构流图C常用控制结构流图If.thenIf.then.elseIf.and.thenIf.or.thenDo.WhileWhile./ForSwitch软件度量,各有所长McCabe度量244x=x*x;51if(y4)2x=sin(y);else3x=cos(y);function_test(y)0x=3;结构流图举例1结构流图举例1function_test(y)0x=3;1if(y10)printf(message2);flaga=1;if(c5)moda(x);elseprintf(message3);gdv(G)x=3CALLmoda(x)C1C4C5x=y+nC2C3C1C4C5x=y+nCALLmoda(x)C2C3Reduced其他McCabe复杂度全局数据复杂度49指定数据复杂度(指定数据复杂度(SpecifiedDataComplexity)sdv(G)模块中与用户数据相关联的结构复杂度的一种定量描述表明一个模块与指定数据相关联的数据复杂程度等于(用来测试指定数据所需的)基本测试路径数可分析数据结构变化对软件的影响计算方法(同全局数据复杂度):
将所有不包含指定数据元素的判定和循环都去除将所有不包含指定数据元素的判定和循环都去除再计算此时的圈复杂度就得到指定数据复杂度再计算此时的圈复杂度就得到指定数据复杂度其他McCabe复杂度指定数据复杂度50什么是软件质量什么是软件质量ISO9126标准软件质量:
软件质量:
与软件产品满足规定的和隐含的需求的能力有关的特征或特性的集合与软件产品满足规定的和隐含的需求的能力有关的特征或特性的集合软件质量特性:
软件质量特性:
软件质量特性是软件产品的一组属性,用来对软件的能力进行描述和评估软件质量特性是软件产品的一组属性,用来对软件的能力进行描述和评估软件质量特性可细分为多层次的子特性软件质量特性可细分为多层次的子特性软件质量度量软件质量度量用于确定软件产品质量特性的定量的计量和分析方法用于确定软件产品质量特性的定量的计量和分析方法因此软件复杂度是软件质量度量和分析的方法之一因此软件复杂度是软件质量度量和分析的方法之一软件度量与质量分析软件质量分析51从技术上讲,软件质量是:
从技术上讲,软件质量是:
较少的错误和缺陷易于理解易于维护/变更易于测试易于实现影响软件质
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 软件 测试 技术 QUALITY