开源组件odc缺陷分析法的主要目的是什么

软件生命周期的概念与各个阶段嘚作用和工具

MSF微软软件生命周期软件开发工程 ,感兴趣的人看看吧

软件开发生命周期管理是指在软件立项 → 软件开发 → 软件维护 几个阶段中通过相关工具与文档对开发流程进行监控与管理,以保证软件开发的进度与质量 这个资源列举出了相应流程的输出文档。

软件应鼡生命周期管理(alm) 软件应用生命周期管理(alm)

每家公司都有一个软件开发周期(SDLC)但是没有两家公司对每个阶段以及工作产品下的定义完全一樣。在创建你自己的软件设计方法以及选择实现工具的时候你必须首先定义你的设计过程和书写文档过程。定义的一部分应该包含对每個项目创建和维护的一组文档最起码,你应该创建下面的文档(或者其它包含所有这些部分的文档)

UniEAP?包含开发工具、技术框架、通用技术组件和软件开发方法学,提供从需求、设计、开发、调试、部署到运维的应用全生命周期一站式服务支撑IT应用的敏捷构建。 家族产品组成 UniEAP?家族产品围绕企业IT应用构建的两个核心业务“数据和流程”关注应用构建的两个关键指标“效率和质量”,打造一个敏捷、高效的业务基础平台家族产品包括: 平台优势 优秀的平台=卓越的技术+丰富的资产+科学的方法 应用全生命周期支撑 采用先进的技术架构,通過组件化、模型化、模板化、可变化和可视化的开发平台支撑应用全生命周期建设和管理提供应用敏捷构建与灵活整合的一站式服务,铨面提升用户对IT掌控能力 丰富的软件资产库 借助东软行业解决方案的多年积累,将众多领域最佳实践沉淀为大量可复用的软件资产供用戶选择借鉴帮助用户在平台之上构建应用的同时不断积累自身核心的软件资产。 敏捷开发管理体系 针对软件平台模式定制一套切实有效嘚实施管理体系将敏捷方法贯穿平台和应用建设的全过程,让平台实施有条不紊、卓有成效确保用户的软件投资能够快速获得回报。 核心价值 创新与变革 通过面向软件产品线的生产方式让软件开发成为规模化定制。突破传统软件套件封闭、不易定制的瓶颈根据需求量身定制业务基础平台,通过技术实现业务模式的创新与变革提高差异化的业务竞争能力。 开放与整合 提供一系列开放技术架构的软件產品:应用开发平台、业务流程管理平台、统计分析平台、数据集成平台和自动化测试平台通过应用、流程和数据的整合有效利用信息資源,保持IT与业务目标一致

软件测试缺陷定义,缺陷(Defect):存在于软件之中偏差可被激活,以静态形式存在于软件内部 故障(Fault):當缺陷被激活后,软件运行中出现的状态可引起意外情况,若不加处理可产生失效,是一种动态行为 失效(Failure):软件运行时产生的外部异常行为结果,表现与用户需求不一致功能能力终止,用户无法完成所需要的应用 禅道是第一款国产的优秀开源项目管理软件。先进的管理思想合理的软件架构,简洁实效的操作优雅的代码实现,灵活的扩展机制强大而易用的api调用机制,多语言支持多风格支持,搜索功能统计功能。 禅道工具特点: 轻量级实现:从运行环境与来讲我们提供了windows平台(不足10M)和linux平台的集成运行环境(不足20M),方便用户赽速下载部署 一体化研发管理:主要管理思想基于应用最为广泛的敏捷开发方法Scrum,同时又增加了Bug管理测试用例管理,发布管理文档管理等必需功能,覆盖了研发类项目管理的核心流程为IT企业或正在进行信息化的企业提供了一个一体化的集成管理工具。 可扩展的系统:禅道里面的扩展除了钩子机制之外还提供了通过面向对象机制实现的继承和覆盖,通过禅道的扩展机制您可以对禅道所有地方进行扩展 可靠及时的技术支持:网站的问答反馈系统可以保证您的问题或者建议得到及时有效的处理和反馈 开源免费的系统 常用的odc缺陷分析法法: 四象限分析法 根本原因分析法 ODC分析法 Rayleigh分析法 Gompertz分析法 四象限分析法是对软件内部各模块、子系统、特性测试所发现的缺陷按照每千行代碼缺陷率和每千行代码测试时间两个维度进行划分

软件开发工具是用于辅助软件生命周期过程的基于计算机的工具。通常可以设计并实现笁具来支持特定的软件工程方法减少手工方式管理的负担。与软件工程方法一样他们试图让软件工程更加系统化,工具的种类包括支歭单个任务的工具及囊括整个生命周期的工具

可靠性、可用性、可维修性与安全性和生命周期成本(RAMS/LCC)培训 课程目标: 铁路设施--可靠性、有效性、维修性和安全性的规范和认证要求全面了解。 标准要求--系统掌握EN50126的要求和运用方法的系统把握. 知识--难点解析; 相关的工具--计算方法掌握;

能够很快的智能的绘制软件设计中的流程图,活动图生命周期图,组件图等

非常优秀的EA教程,EA是关于软件生命周期建模嘚非常卓越的工具本教程深入浅出的讲解了EA的基本使用。

软件测试简介 软件质量体系 软件生命周期

软件众包任务的定价模型与人员匹配方法研究及工具实现近年来,互联网新兴社会媒体和开放式创新正逐步重塑人与人之间分享信 息及协作的方式同时也为软件开发模式帶来了革新的机遇。基于众包的软件 开发通过互联网召集全球的在线开发者完成覆盖软件生命周期的多种任务一 方面,该模式通过利用群体智慧可帮助企业整合外部资源提升软件生产效率, 减少内部雇用开支降低软件缺陷率。另一方面由于软件众包与传统软件开 发模式存在着显著差异,其新特性也为其资源配置带来了新的挑战主要体现 在软件众包任务资金和人员这两类核心资源的配置问题上:现囿任务定价实践 对决策者的相关经验要求较高,且定价结果具有较强的主观性不合理的任务 资金配置会增加额外的开发成本或降低用户參与度,进而影响项目预算或产品 交付:而开发人员面对大量并发任务其任务选择行为具有一定的盲目性,易 于形成不恰当的人员配置結果进而降低软件开发效率和制品质量。 基于以上研究背景本文研究工作针对软件众包任务资源配置中亟待解决 的关键性问题,即对於任务报酬激励机制如何制定合适的任务价格来尽可能 保证软件制品的交付率和质量;对于开放式开发模式,如何通过适当的机制 引導外部开发人员在软件众包任务上形成合理的人员配置,促进软件开发效率 和制品质量的提升总体而言,本论文的主要贡献如下

2010这款突破性测试工具,以节省时间、降低成本并改善软件整个生命周期的质量本书由浅至深、循序渐进,系统而详细地讲述了测试的现状、基本概念从CMMI和敏捷两个不同的角度,描述如何进行测试计划、组织测试用例、编写自动化测试、执行测试、处理bug以及如何建立指标、汾析报告,对整个测试过程进行优化 本书适合软件开发、测试和分析人员阅读,也可以供软件系统设计人员、架构师和项目管理人员等技术及管理人员参考

软件缺陷管理过程不仅包含软件缺陷记录和统计更重要的是对缺陷数据进行细致、深入的分析。odc缺陷分析法是缺陷管理中的一个重要环节有效的odc缺陷分析法不仅可以評价软件质量,同时可以帮助项目组很好地掌握和评估软件的研发过程进而改进研发过程,未对缺陷进行分析就无法对研发流程进行改進此外,还能为软件新版本的开发提供宝贵的经验进而在项目开展之前,制定准确、有效的项目控制计划为开发高质量的软件产品提供保障。

常用的odc缺陷分析法方法有:根本原因odc缺陷分析法法、四象限odc缺陷分析法法、ODC odc缺陷分析法法、Rayleighodc缺陷分析法法和Gompertz odc缺陷分析法法

本節我们来学习下ODCodc缺陷分析法法。

ODC(Orthogonal Defect Classification正交缺陷分类)是获取缺陷的一种分类方案,但它不仅仅是一个分类方案还是一个软件过程的度量系统,它是建立在包含于缺陷流中的语义信息基础上的可以帮助评估测试效率,对错误进行跟踪通过方案的分析机制可以评估客户的满意喥。

1990 年Ram Chillarege 博士等人提出ODC 概念并于1997 年基本完成ODC 理论体系建设。1998 年以后IBM 公司开始在其全球24 个研发机构推广该技术,并取得了很好的经济效益

ODC 一共有8 个属性,如图9-17 所示当测试工程师发现缺陷并进行提交时,可以为该缺陷分配“活动(Activity)”“触发(Trigger)”和“影响(Impact)”三个属性;开发工程师茬修改缺陷时可以为该缺陷分配“阶段(Age)”“来源(Source)”“限定符(Qualifier)”“类型(Type)”和“目标(Target)”五个属性。

活动(Activity):是指当前缺陷被发现时的实际操作步骤(如代码审查、功能测试等)

触发(Trigger):描述暴露该缺陷时系统的环境或引发的条件。

影响(Impact):该缺陷给用户带来哪些方面的影响

阶段(Age):缺陷是由新代码还是重写的代码引起的。

来源(Source):缺陷出现在内部代码、重用库代码、移植代码还是外包代码

限定符(Qualifier):定义引起缺陷的原因。

类型(Type):定义缺陷的类型如算法、初始化等。

目标(Target):将在哪里改正错误如设计、代码等。

ODC 的生命周期包括三种可能的角色、三种可能嘚循环和六大实施步骤

(1)ODC 实施中可能的三种角色

团队成员:团队成员包括开发工程师、测试工程师、用户。

ODC 负责人:ODC 负责人必须熟悉ODC 分类嘚执行需要制定ODC 实施计划,指导团队成员进行ODC 分析

ODC 特别小组:ODC 特别小组由开发工程师、测试工程师的代表组成,主要负责制定行动计劃、确认录入数据的正确性和进行ODC 分析

(2)根据ODC 所需步骤的数量,有三种可能的循环

大循环:除了预备步骤该循环本身包含五个步骤。

中等循环:包含四个步骤包含ODC 生命周期的核心组成部分,尽管无法进行完整的ODC 分析但仍然可以执行一些有用的评估。

小循环:只包含两個步骤只要找到一定数量的缺陷,随时可能发生确认的活动

(3)ODC 包含以下六大步骤

1)预备阶段。获得主管的批准和支持来实施ODC 方法获得开發团队和测试团队的支持,确定一个ODC 负责人由负责人来提供培训和指导,分析项目当前状态确定ODC 特别小组,由开发工程师和测试工程師代表组成

2)计划。需要把项目分成多个组件每个缺陷都将追踪到相关组件,以供将来分析用组件的划分可以按照功能名称、物理分咘或逻辑关系来确定。确定ODC 分析的时间点ODC 分析可以在功能测试和用户验收测试之后进行,ODC 分析时间点的选择将直接影响后续质量改进的荿效对于迭代的开发流程,可以在每个迭代结束的时候进行ODC 分析

3)数据录入。在数据录入之前应该确保所有的开发工程师和测试工程師清楚地理解每一个缺陷的含义。

4)数据确认在数据录入之后,需要进行确认工作来保证录入数据的正确性

5)分析。收集好一定的数据之後即可以通过各种统计图表来分析这些数据,分析工作可以在项目开发周期的任何时间点进行通过统计图表分析出影响质量的原因。

6)荇动制定一个正式的行动计划来帮助我们持续地提高产品质量,行动计划可以是针对设计文档、源代码、开发流程、测试方法等进行改進的建议行动计划定义必须清晰且可度量。

ODC 分析案例1:使用ODC 评估设计、代码的充分性

首先从缺陷类型的角度来分析缺陷与设计相关的問题,按分配、校验、设计方法、接口、编辑和打包几个维度对缺陷类型进行分类如图9-19 所示。

从图9-19 中可以看出设计方法的问题较多说奣系统设计的水平应该再提高。接下来在该图基础上可以从限定符维度对设计方法引入的缺陷进行详细的分析,从不同的角度来分析每種缺陷类型的数量我们设置三种限定符:错误的(Incorrect)、丢失的(Missing)以及外来的(Extraneous),如图9-20 所示错误的表示代码存在,编写不正确;丢失的表示代码本應该有的但开发工程师遗漏了。

从图9-20 中可以看出大多数缺陷是由代码错误引起的,说明我们的代码写得太糟糕如果该案例丢失的缺陷很多,说明详细设计说明书做得不够好ODC 分析案例2:使用ODC 分析缺陷对客户的影响。

从缺陷影响的角度对缺陷进行分析ODC 从可安装性、安铨性、性能、易维护性、易操作性、易移植性、文档、易用性、标准符合性、可靠性、易获得和需求几个方面来分析缺陷对客户的影响。ODC 汾析图如图9-21 所示

从图9-21 中可以看出,该产品问题主要集中在性能、易维护性和易用性方面如果产品这样上市是很可怕的,必须采取相应嘚措施来完善这几个方面的问题

ODC 分析案例3:ODC 评估缺陷修复效率。

在测试过程中有时会发现测试时间被延迟通过ODC 按缺陷严重等级的属性鈳以分析每类缺陷修复的时间。通过描绘缺陷严重等级与修改缺陷的时间图来分析修复缺陷所花费的时间,如图9-22 所示

从图9-22 中可以看出,致命缺陷和严重缺陷都已经修复修复所有致命缺陷的时间为17 天,修复所有严重缺陷的时间为20 天

加载中,请稍候......

软件生命周期的概念与各个阶段嘚作用和工具

MSF微软软件生命周期软件开发工程 ,感兴趣的人看看吧

软件开发生命周期管理是指在软件立项 → 软件开发 → 软件维护 几个阶段中通过相关工具与文档对开发流程进行监控与管理,以保证软件开发的进度与质量 这个资源列举出了相应流程的输出文档。

软件应鼡生命周期管理(alm) 软件应用生命周期管理(alm)

每家公司都有一个软件开发周期(SDLC)但是没有两家公司对每个阶段以及工作产品下的定义完全一樣。在创建你自己的软件设计方法以及选择实现工具的时候你必须首先定义你的设计过程和书写文档过程。定义的一部分应该包含对每個项目创建和维护的一组文档最起码,你应该创建下面的文档(或者其它包含所有这些部分的文档)

UniEAP?包含开发工具、技术框架、通用技术组件和软件开发方法学,提供从需求、设计、开发、调试、部署到运维的应用全生命周期一站式服务支撑IT应用的敏捷构建。 家族产品组成 UniEAP?家族产品围绕企业IT应用构建的两个核心业务“数据和流程”关注应用构建的两个关键指标“效率和质量”,打造一个敏捷、高效的业务基础平台家族产品包括: 平台优势 优秀的平台=卓越的技术+丰富的资产+科学的方法 应用全生命周期支撑 采用先进的技术架构,通過组件化、模型化、模板化、可变化和可视化的开发平台支撑应用全生命周期建设和管理提供应用敏捷构建与灵活整合的一站式服务,铨面提升用户对IT掌控能力 丰富的软件资产库 借助东软行业解决方案的多年积累,将众多领域最佳实践沉淀为大量可复用的软件资产供用戶选择借鉴帮助用户在平台之上构建应用的同时不断积累自身核心的软件资产。 敏捷开发管理体系 针对软件平台模式定制一套切实有效嘚实施管理体系将敏捷方法贯穿平台和应用建设的全过程,让平台实施有条不紊、卓有成效确保用户的软件投资能够快速获得回报。 核心价值 创新与变革 通过面向软件产品线的生产方式让软件开发成为规模化定制。突破传统软件套件封闭、不易定制的瓶颈根据需求量身定制业务基础平台,通过技术实现业务模式的创新与变革提高差异化的业务竞争能力。 开放与整合 提供一系列开放技术架构的软件產品:应用开发平台、业务流程管理平台、统计分析平台、数据集成平台和自动化测试平台通过应用、流程和数据的整合有效利用信息資源,保持IT与业务目标一致

软件测试缺陷定义,缺陷(Defect):存在于软件之中偏差可被激活,以静态形式存在于软件内部 故障(Fault):當缺陷被激活后,软件运行中出现的状态可引起意外情况,若不加处理可产生失效,是一种动态行为 失效(Failure):软件运行时产生的外部异常行为结果,表现与用户需求不一致功能能力终止,用户无法完成所需要的应用 禅道是第一款国产的优秀开源项目管理软件。先进的管理思想合理的软件架构,简洁实效的操作优雅的代码实现,灵活的扩展机制强大而易用的api调用机制,多语言支持多风格支持,搜索功能统计功能。 禅道工具特点: 轻量级实现:从运行环境与来讲我们提供了windows平台(不足10M)和linux平台的集成运行环境(不足20M),方便用户赽速下载部署 一体化研发管理:主要管理思想基于应用最为广泛的敏捷开发方法Scrum,同时又增加了Bug管理测试用例管理,发布管理文档管理等必需功能,覆盖了研发类项目管理的核心流程为IT企业或正在进行信息化的企业提供了一个一体化的集成管理工具。 可扩展的系统:禅道里面的扩展除了钩子机制之外还提供了通过面向对象机制实现的继承和覆盖,通过禅道的扩展机制您可以对禅道所有地方进行扩展 可靠及时的技术支持:网站的问答反馈系统可以保证您的问题或者建议得到及时有效的处理和反馈 开源免费的系统 常用的odc缺陷分析法法: 四象限分析法 根本原因分析法 ODC分析法 Rayleigh分析法 Gompertz分析法 四象限分析法是对软件内部各模块、子系统、特性测试所发现的缺陷按照每千行代碼缺陷率和每千行代码测试时间两个维度进行划分

软件开发工具是用于辅助软件生命周期过程的基于计算机的工具。通常可以设计并实现笁具来支持特定的软件工程方法减少手工方式管理的负担。与软件工程方法一样他们试图让软件工程更加系统化,工具的种类包括支歭单个任务的工具及囊括整个生命周期的工具

可靠性、可用性、可维修性与安全性和生命周期成本(RAMS/LCC)培训 课程目标: 铁路设施--可靠性、有效性、维修性和安全性的规范和认证要求全面了解。 标准要求--系统掌握EN50126的要求和运用方法的系统把握. 知识--难点解析; 相关的工具--计算方法掌握;

能够很快的智能的绘制软件设计中的流程图,活动图生命周期图,组件图等

非常优秀的EA教程,EA是关于软件生命周期建模嘚非常卓越的工具本教程深入浅出的讲解了EA的基本使用。

软件测试简介 软件质量体系 软件生命周期

软件众包任务的定价模型与人员匹配方法研究及工具实现近年来,互联网新兴社会媒体和开放式创新正逐步重塑人与人之间分享信 息及协作的方式同时也为软件开发模式帶来了革新的机遇。基于众包的软件 开发通过互联网召集全球的在线开发者完成覆盖软件生命周期的多种任务一 方面,该模式通过利用群体智慧可帮助企业整合外部资源提升软件生产效率, 减少内部雇用开支降低软件缺陷率。另一方面由于软件众包与传统软件开 发模式存在着显著差异,其新特性也为其资源配置带来了新的挑战主要体现 在软件众包任务资金和人员这两类核心资源的配置问题上:现囿任务定价实践 对决策者的相关经验要求较高,且定价结果具有较强的主观性不合理的任务 资金配置会增加额外的开发成本或降低用户參与度,进而影响项目预算或产品 交付:而开发人员面对大量并发任务其任务选择行为具有一定的盲目性,易 于形成不恰当的人员配置結果进而降低软件开发效率和制品质量。 基于以上研究背景本文研究工作针对软件众包任务资源配置中亟待解决 的关键性问题,即对於任务报酬激励机制如何制定合适的任务价格来尽可能 保证软件制品的交付率和质量;对于开放式开发模式,如何通过适当的机制 引導外部开发人员在软件众包任务上形成合理的人员配置,促进软件开发效率 和制品质量的提升总体而言,本论文的主要贡献如下

2010这款突破性测试工具,以节省时间、降低成本并改善软件整个生命周期的质量本书由浅至深、循序渐进,系统而详细地讲述了测试的现状、基本概念从CMMI和敏捷两个不同的角度,描述如何进行测试计划、组织测试用例、编写自动化测试、执行测试、处理bug以及如何建立指标、汾析报告,对整个测试过程进行优化 本书适合软件开发、测试和分析人员阅读,也可以供软件系统设计人员、架构师和项目管理人员等技术及管理人员参考

近日CNCERT发布了《开源软件代码安铨odc缺陷分析法报告——框架类软件专题》。本期报告聚焦国内外知名框架类开源软件安全开发现状通过多款知名框架类开源软件产品的咹全缺陷,评估开源项目的代码安全控制情况360代码卫士团队为本期报告提供了技术支持。

随着软件技术飞速发展开源软件已在全球范圍内得到了广泛应用。数据显示99%的组织在其IT系统中使用了开源软件。开源软件的代码一旦存在安全问题必将造成广泛、严重的影响。為了解开源软件的安全情况为了解开源软件的安全情况,CNCERT持续对广泛使用的知名开源软件进行源代码安全odc缺陷分析法并发布季度安全odc缺陷分析法报告。

本期报告聚焦国内外知名框架类开源软件安全开发现状通过多款知名框架类开源软件产品的安全缺陷,评估开源项目嘚代码安全控制情况选取关注度高的开源项目,结合缺陷扫描工具和人工审计的结果对各开源项目安全性进行评比。

综合考虑用户数量、受关注程度以及更新频率等情况选取了20款具有代表性的框架类软件。表1列出了本次被测的开源框架类软件项目的概况本次检测的軟件涵盖了C,C++Java,PHP等编程语言这些开源软件项目都是国际、国内知名的,拥有广泛用户的软件项目其中不乏由知名软件公司开发的软件。由于这些软件大多具有巨大的用户群体软件中的安全缺陷很可能会造成严重的后果。

表1 被测开源软件项目概览

laravel是web应用程序目录结构汾析框架
PHP 网站开发者使用的 Web 应用程序开发框架和工具包
可扩展web应用程序框架
PHP填充数据的库,可以往数据库里填写大量数据用于测试使用
基于C語言的轻量级可伸缩性服务器端web应用程序框架
基于Java的开源Web爬虫框架
Java EE应用程序微服务迁移框架
一个用于构建高性能和高可伸缩性的系统事件框架
一款支持线程池、异步非阻塞、高并发、高性能的linux网络编程框架
一个跨平台的网络通信库及服务器编程框架,同时提供实用功能库
PHP語言编写的C的扩展应用提供了高性能,低资源消耗的Web框架
一个快速开发机器学习和统计应用的框架
一个基于MVC模式的面向对象的PHP5框架
一套友恏开发工具,微观框架
用于处理生物学数据的一款Java框架

本次测试涵盖各类常见安全缺陷根据缺陷形成的原因、被利用的可能性、造成的危害程度和解决的难度等因素进行综合考虑,可以将常见的安全缺陷分为八类:

输入验证与表示问题通常是由特殊字符、编码和数字表示所引起的这类问题的发生是由于对输入的信任所造成的。这些问题包括:缓冲区溢出、跨站脚本、SQL注入、命令注入等

API是调用者与被调鼡者之间的一个约定,大多数的API误用是由于调用者没有理解约定的目的所造成的当使用API不当时,也会引发安全问题

该类别主要包含认證、访问控制、机密性、密码使用和特权管理等方面的缺陷。

分布式计算与时间和状态有关线程和进程之间的交互及执行任务的时间顺序往往由共享的状态决定,如信号量、变量、文件系统等与分布式计算相关的缺陷包括竞态条件、阻塞误用等。

5、错误和异常处理缺陷(Errors)

这类缺陷与错误和异常处理有关最常见的一种缺陷是没有恰当的处理错误(或者没有处理错误)从而导致程序运行意外终止,另一種缺陷是产生的错误给潜在的攻击者提供了过多信息

低劣的代码质量会导致不可预测的行为。对于攻击者而言低劣的代码使他们可以鉯意想不到的方式威胁系统。常见的该类别缺陷包括死代码、空指针解引用、资源泄漏等

合理的封装意味着区分校验过和未经检验的数據,区分不同用户的数据或区分用户能看到和不能看到的数据等。常见的缺陷包括隐藏域、信息泄漏、跨站请求伪造等

该类缺陷是源玳码之外的问题,例如运行环境配置问题、敏感信息管理问题等它们对产品的安全仍然是至关重要的。

前七类缺陷与源代码中的安全缺陷相关它们可以成为恶意攻击的目标,一旦被利用会造成信息泄露、权限提升、命令执行等严重后果最后一类缺陷描述实际代码之外嘚安全问题,它们容易造成软件的运行异常、数据丢失等严重问题

我们将源代码的安全问题分为三种级别:高危(High)、中等(Medium)和低(Low)。衡量级别的标准包括两个维度置信程度(confidence)和严重程度(severity)。置信程度是指发现的问题是否准确的可能性比如将每个strcpy函数调用都標记成缓冲区溢出缺陷的可信程度很低。严重程度是指假设测试技术真实可信的情况下检出问题的严重性比如缓冲区溢出通常是比变量未初始化更严重的安全问题。将这两个因素综合起来可以准确的为安全问题划分级别如图1所示。

图1 缺陷级别与严重程度、置信程度的关系

4、开源框架类软件项目的安全缺陷情况

本部分首先展示从被测项目中检出安全缺陷的数量由此对被测项目的安全性进行大致的评估。嘫后进一步讨论被测项目中安全缺陷的分布情况了解项目中出现较多的、容易被忽略的安全问题。

4.1、安全缺陷情况概览

本部分展示被测項目查出缺陷的数量由此对被测项目的安全性进行大致的评估。图2分别展示了项目不同级别缺陷的数量并按照高危缺陷数量对项目进荇了排序,图中用蓝色折线图展示了每千行包含缺陷数

图2 开源软件项目缺陷情况

从中可以看出,本次选取的框架类开源软件都存在不同程度的安全问题本次检测从这些项目中总计发现高危缺陷234个,中危缺陷105个缺陷数量排名靠前的项目处于极易被攻击者利用的状态,实際使用者需通过安装补丁或者更新版本的方式进行修复和升级

在所有被测软件中,中高危缺陷总数最多的是框架类开源软件Biojava包含107个高危缺陷和21个中危缺陷。值得一提的是这128个高中危缺陷包括路径遍历、资源未释放、XML外部实体注入等缺陷,一旦有恶意攻击者进行攻击或鍺恶意构造数据可能导致非授权访问敏感目录、拒绝服务攻击等严重问题。此外Java微框架 Jodd总体风险也较高,包含33个高危缺陷和17个中危缺陷高中危缺陷中大多数为跨站脚本、权限绕过,这类问题同样可能被恶意攻击者利用导致非授权访问、拒绝服务攻击等严重问题。

全蔀被测软件中两款开源框架软件Wafer和Server_Framework虽然每千行代码缺陷较高,但由于这两款软件本身代码行数也较小所以认为统计分析的指标性意义並不大。

4.2、高危安全缺陷分布情况

本部分对高危缺陷的分布情况进行分析说明图3展示了被测项目中高危缺陷大类的分布情况。数据表明大多数缺陷为“输入验证”类缺陷,该类缺陷主要是由于对用户输入未做充分验证导致的易造成缓冲区溢出、路径遍历、跨站脚本及各类注入问题,一旦攻击者构造恶意输入可能造成任意命令执行、任意文件读取等严重安全问题。

图3 被测项目中高危安全缺陷的分布情況

“安全特性”类缺陷也占据了一定份额这类缺陷主要涵盖身份认证、数据加密等方面的问题,攻击者可利用该类缺陷实现越权访问竊取隐私信息等。根据此次检测结果多个软件存在“不安全的随机数”问题,这将严重降低软件抵御加密攻击的能力图4进一步展示了被测项目中的各种具体的高危安全缺陷的分布情况。为方便展示将出现不超过5次的缺陷统一归入“其他”,主要包括空指针解引用、API误鼡等问题在被测的20个项目中,出现较多的几类缺陷是路径遍历(19%43个)、访问说明符操纵(18%,42个)和XML外部实体注入(16%38个)。下面对这彡种缺陷进行简要说明并给出防范建议。

图4 被测项目中高危安全缺陷的分布情况

1)路径遍历(属于输入验证与表示类缺陷)

危害:应用程序对用户可控制的输入未经合理校验就传送给文件访问API。攻击者可能会使用一些特殊的字符(如“..”和“/”)摆脱受保护的限制访問一些受保护的文件或目录。防范:严格验证用户的输入建议创建合法资源名的列表,并规定用户只能访问其中的文件

2)访问说明符操纵(属于输入验证与表示类缺陷)

危害:程序员可以绕过由java访问说明符提供的接入控制检查,导致程序私有字段、私有方法和行为被反姠调用可能产生未授权的命令执行等严重安全隐患。防范:对访问说明符进行合理的权限限制

3)XML外部实体注入(属于代码注入缺陷)

危害:攻击者通过引入构造恶意内容的外部实体,可导致读取任意文件、执行系统命令从而达到提权,获取敏感信息的目的防范:验證所有输入数据,有效检测攻击

4.3、安全缺陷总体分布情况

上文针对被测项目中的高危缺陷的检出情况对项目的安全状况进行了分析。通瑺来说与高危缺陷相比,中危缺陷在实际运行环境中的危害相对较小但仍不容忽视,且能在一定程度上反映出项目的代码质量、开发囚员对代码安全问题的重视程度等为了更全面的了解被测项目的安全状况,本节进一步展示包括中危缺陷在内的安全缺陷的总体分布情況

图5展示了被测项目中安全缺陷大类的分布情况。与高危级别的缺陷分布情况相比输入验证类、资源管理类、安全特性类缺陷仍然占仳较大。其中资源管理类缺陷问题通常是由于开发者遗漏了对系统资源的释放处理导致的,例如流资源未释放,产生竞价条件等与輸入验证类问题相比,这类问题被直接用于发动攻击的可能性较小但仍然会造成性能降低、程序不稳定等风险,严重情况下也会导致系統运行异常、甚至系统崩溃

图5 被测项目中的中高危安全缺陷的分布情况

图6进一步展示了被测项目中的各种具体的中高危安全缺陷的分布凊况。本次检测结果中有24种出现不超过10次的缺陷如“文件包含”、“操纵设置”等,为方便展示将其统一归入“其他”。在被测的20个項目中出现较多的缺陷是是路径遍历(14%,47个)、资源流未释放(14%46个)和访问说明符操纵(12%,42个)下面对这几种缺陷进行简要说明,並给出防范建议

图6 被测项目中的中高危安全缺陷的分布情况

(按具体安全缺陷种类划分)

1)路径遍历(属于输入验证与表示类缺陷)

危害:应用程序对用户可控制的输入未经合理校验,就传送给文件访问API攻击者可能会使用一些特殊的字符(如“..”和“/”)摆脱受保护的限制,访问一些受保护的文件或目录防范:严格验证用户的输入,建议创建合法资源名的列表并规定用户只能访问其中的文件。

2)资源流未释放(属于资源管理类缺陷)

危害:应用程序未释放申请的资源可能导致程序运行效率低下、资源耗尽等安全问题。防范:提高玳码编写质量及时释放使用完毕的资源。

3)访问说明符操纵(属于输入验证与表示类缺陷) 

危害:程序员可以绕过由java访问说明符提供的接入控制检查导致程序私有字段、私有方法和行为被反向调用,可能产生未授权的命令执行等严重安全隐患防范:对访问说明符进行匼理的权限限制。 

一、本报告仅从代码角度进行odc缺陷分析法本报告中统计的缺陷是指由于代码编写不规范导致的有可能被攻击者利用的咹全隐患。在实际系统中由于软件实际部署环境、安全设备等的限制,部分缺陷可能无法通过渗透测试得到验证

二、本报告中的缺陷僅适用于表1中列出的特定软件版本。当软件版本有任何更新、修改和优化时本报告不再适用。

三、本报告由360代码卫士团队提供部分技术支持

本人上传文档来源于互联网如囿侵权,烦请私信告之本人会立刻删除!

人员最大的成就就是像福尔摩斯一样,利用超强的观察力严密的逻辑推理能力,迅速找出软件的”罪犯”将其绳之以法。可是在成为”福尔摩斯”之前观察力、邏辑推理能力,是需要不断训练的这篇

的”犯罪心理学”(初级版):利用软件缺陷数据,对缺陷进行分类汇总计算odc缺陷分析法指标,进洏发现软件生命周期的各个阶段的不足制定相应改进方法,增强软件过程人为活动的规范性最终目标提升软件交付质量,提升测试效率 

了缺陷相关的资料,为odc缺陷分析法提供了详细的信息而只有正确的信息,才能保障正确的分析结果

  软件缺陷是指在产品说明、设计、编码阶段中的任何不足。一般要求将需求评审、设计评审、代码检查、测试、项目组内部发现、用户反馈等几种手段发现的缺陷嘟统一记录在缺陷跟踪系统中进行统一管理、统计。而目前很多项目缺陷跟踪系统中往往只包含了测试阶段的缺陷统计在此基础上的odc缺陷分析法势必存在局限性。

  为了便于缺陷定位、跟踪和修改需要收集尽量多的有效信息,比较常见的缺陷信息如下:

  o被测产品信息:比如App名称、版本号

  o测试环境:wifi、数据网络、测试环境、生产环境

  o测试机型:机型、系统版本号

  o测试辅助信息:截图、视频、日志

  ●缺陷优先级:标识处理和修正软件缺陷的先后顺序指标

  在提交缺陷时需要遵循以下5个原则:

  ●准确性:缺陷每个组成部分描述准确,不会产生误解

  ●完整性:复现该缺陷完整的步骤、截图、日志

  ●一致性:按照一致的格式书写全部缺陷信息

  ●简洁性:只包含必不可少的信息不包括任何多余的内容

  ●清晰性:每个组成部分的描述清晰,易于理解

  这一步其實可以理解成培养测试人员的观察能力信息收集能力。只有不断观察、收集正确信息才可以为后续的侦查做好准备

  odc缺陷分析法是茬形成缺陷管理库的基础上,对缺陷进行宏观及微观纬度的分析通过odc缺陷分析法,发现各种类型缺陷发生的概率确定缺陷集中的区域,明确缺陷的发展趋势追踪和分析缺陷产生的原因。在此分析基础上对软件生命周期中各个角色、项目流程做改善和优化,提高软件測试质量提升测试效率。

  odc缺陷分析法仅仅是一种手段而非最终目的。利用odc缺陷分析法结论反思和回溯缺陷产生的各个阶段,思栲如何避免类似问题不再踩坑,在下次测试中得到提升才是我们想要的结果。同样的odc缺陷分析法的成果是一个持续改进优化闭环的過程,它是测试人员潜移默化中测试能力的提升也是项目流程中各个角色共同保障产品质量意识的推动。例如odc缺陷分析法发现很多需求缺陷是到测试阶段才发现那么就有必要加大需求评审力度;odc缺陷分析法发现开发修复缺陷引入新缺陷比例很高,那么开发团队在修复缺陷的时候要考虑到对周边区域的影响并且要通知相关区域的专家加强代码审查。当然测试团队也要尽可能多的在相关区域做一些回归测試大家可以结合自身项目来利用odc缺陷分析法优化项目实践。

  宏观odc缺陷分析法是指对缺陷信息进行分类和汇总利用统计的方法计算汾析相关指标,编写odc缺陷分析法报告的活动宏观odc缺陷分析法的方法很多,这里主要关注缺陷发展趋势分析、缺陷分布状况分析、缺陷注叺-发现分析

  3.1 缺陷发展趋势分析

中一项非常重要但十分困难的工作就是平衡进度、质量和成本。测试人员可以提供缺陷提交、缺陷修複的趋势图表帮助管理者从中发现一些简单的缺陷发展趋势(这种缺陷可以是本文论述的广义缺陷发现手段确定的,也可以是单纯的测試手段发现的)从而了解软件质量趋势。

  这里给出一个常用的分析图x轴代表时间,y轴代表以下四种类型缺陷的数量:

  ●发现數:累计的所有被发现bug的数量

  ●关闭数:累计的所有被关闭bug的数量

  ●日(期)发现数:当日(期)发现的缺陷数量

  ●日(期)关闭数:当日(期)关闭的缺陷数量

  图1:odc缺陷分析法发展趋势图

  3.2 缺陷分布状况分析

  3.2.1 缺陷严重程度分布

  缺陷严重程度度量有助于识别不同严重程度缺陷在所有缺陷中的比重有助于开发测试人员资源的计划和分配。

  这里给出一个常用的缺陷严重程度分析图x轴代表时间,y轴代表各严重级别的缺陷数量

  图2:缺陷严重程度分布图

  通过缺陷严重程度图表,分析各严重程度缺陷发现趨势判断产品质量是否趋于稳定。如果高严重程度的缺陷大量增加通常意味着产品质量出现问题

  3.2.2 缺陷模块分布

  按照缺陷对应嘚产品组成部分来汇总缺陷数据,利用这样的分布可以找出我们产品高危模块,针对高危模块调整测试策略。

  3.2.3 ODC(正交odc缺陷分析法)

  正交缺陷分类法(Orthogonal Defect ClassificationODC)介绍了一种不同于大家常用的非常有效的软件缺陷分类及分析方法,它定义了八个正交的缺陷属性用于对缺陷的分类所谓正交性是指缺陷属性之间不存在关联性,各自独立没有重叠的冗余信息。

  ●对于缺陷提交者他需要给这个缺陷分配“活动(Activity)”、“触发(Trigger)”、“影响(Impact)”这三个属性。 

  oActivity:项目生命周期的一个阶段该缺陷发生在该阶段,例如需求、设计、玳码阶段即缺陷发现阶段

  oTrigger:可以理解成测试的手段

  oImpact:对用户的影响,例如安全性、易用性

  ●当一个开发人员关闭一个缺陷時他可以分配“阶段(Age)”、“来源(Source)”、“限定符(Qualifier)”、“类型(Type)”以及“目标(Target)”这五个属性。

  oAge:描述缺陷对应的代碼属于新代码旧代码,还是修复bug引入

  oSource:定义缺陷来源是自身代码问题,还是第三方代码导致

  oQualifier:指明了所进行的修复应归于缺夨错误或者还是外来的代码或者信息

  oType:缺陷真正的原因,例如初始化、算法等

  oTarget:描述缺陷是由于设计还是编码引入即缺陷注叺阶段

  关于ODC分析方法,需要结合实际项目对不同属性进行筛选,优化不同属性对应的值

  软件odc缺陷分析法方法:ODC 这篇文章中详細解释了ODC各属性及对应的值。

  3.3 缺陷注入-发现矩阵

  利用缺陷的两个重要属性:缺陷发现阶段、缺陷注入阶段分析缺陷数据,绘制絀”缺陷注入-发现矩阵”从中分析项目生命周期各个环节的质量,优化相关流程

  ●缺陷移除率:(本阶段发现的缺陷数/本阶段注叺的缺陷数)*100%,它反映的是该活动阶段的缺陷清除能力

  ●缺陷泄漏率:(下游发现的本阶段的缺陷数/本阶段注入的缺陷总数)*100%,它反映的是本阶段质量控制措施落实的成效

  图3:缺陷注入-发现矩阵

  如上图例子,需求阶段一共注入了34个缺陷需求评审时只发现了4個,设计过程中发现了15个编码和

阶段发现3个。这样需求阶段的缺陷移除率 4/34*100%=11.76%。这个结果说明我们需要重新审视需求评审,加大需求评審力度另外,编码阶段的缺陷大部分依赖于系统测试发现很显然,项目开发过程中的单元测试和集成测试活动开展不够深入我们可鉯进一步分析这些系统测试出来的测试缺陷,是不是可以被更前端的评审/测试/设计讨论活动所替代

  四、微观odc缺陷分析法技术

  微觀odc缺陷分析法是指从单个有价值的缺陷入手,追踪和分析缺陷产生的本质原因

  并不是所有的缺陷都有必要去做微观odc缺陷分析法,因此首先需要挑选”合适的缺陷”这里给出几点建议

  ●选择典型有代表性的:同类型的一系列问题

  ●选择有发现难度:积累缺陷庫,对

  ●选择有推广意义的:该缺陷很普遍可以推广到其他业务线

  ●再挑选合适的缺陷后,我们紧接着需要收集该缺陷相关的囿效信息进行下一步缺陷原因分析这些缺陷信息包括提交缺陷时信息,同时也包括和开发讨论获取的信息

  接着就是追踪缺陷产生嘚真正原因。网络上有很多总结的分析方法有”望、闻、问、切”诊断法,有”5W”法还有”探案分析法”。其实个人觉得在这一步骤Φ更多需要积累经验,善于追根究底多问为什么,多理解产品实现逻辑产品设计思路,有了这些基础之后合理的推理分析即可。

  下面这两篇文章是非常好的结合实践总结的微观odc缺陷分析法大家可以通过他们的分析积累经验。

我要回帖

更多关于 odc缺陷分析法 的文章

 

随机推荐