软件测试01:软件及分类和缺陷的定义

Posted lurenj

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试01:软件及分类和缺陷的定义相关的知识,希望对你有一定的参考价值。

软件测试:软件及分类和缺陷的定义

软件

  • 程序
  • 数据
  • 文档

软件分类

  • 层次分类
    • 系统软件
    • 应用软件
  • 组织分类
    • 商业软件
    • 开源软件
  • 结构分类
    • 单机软件
    • 分布式软件

软件缺陷

  • 软件缺陷的由来
    • 起源于上世纪70年代中期
      • 《测试数据选择的原理》
      • 《软件测试的艺术》
    • 20世纪80年代早起,软件行业开始逐渐关注软件产品质量,并在公司建立的软件质量保证部门QA(QUALITY ASSURANCE)或者SQA
    • Bug
    • Defect

计算机软件第一夫人:Grace Hopper

发明了Cobol计算机语言,也是找出计算机程序中第一个bug的女程序员

  • 软件缺陷的定义
    • 软件未实现产品说明书要求的功能
    • 软件出现了产品说明书指明不应该出现的功能
    • 软件实现了产品说明书未提到的功能
    • 软件未实现产品说明书虽未提及但应该实现的目标
    • 软件难以理解、不易使用、运行缓慢或者(从测试的角度看)最终用户会认为不好

所有不满足需求或超出需求的都是缺陷

没有不存在缺陷的软件,只有迄今为止尚未发现的缺陷

剖析CWE视图的层次定义和解析方式

摘要:CWE做为软件缺陷分类的重要标准, 对安全研究、安全标准、缺陷管理起了重要的纽带作用。CWE通过编号的类型(类缺陷、基础缺陷和变种缺陷等)形成了多层次的缺陷类型划分体系。本文进一步剖析了CWE视图的层次之间的定义和解析方式。

本文分享自华为云社区《CWE视图层级关系的解析 之 CWE节点的存储和定义》,作者:Uncle_Tom。

1. CWE的视图

CWE做为软件缺陷分类的重要标准, 对安全研究、安全标准、缺陷管理起了重要的纽带作用。CWE使代码缺陷不同领域的研究人员在交流安全问题时,能够采用相同的定义,减少了歧义性。

CWE通过编号的类型(类缺陷、基础缺陷和变种缺陷等)形成了多层次的缺陷类型划分体系。

CWE按照使用者视角, 给出了不同的CWE视图. CWE提供了三大类的视图.

1.1. 向导视图(Navigate CWE)

CWE提供了:

  • 研究者:CWE-1000 VIEW: Research Concepts
    该视图旨在促进对弱点的研究,包括弱点之间的相互依赖性,并可用来系统地找出CWE内部的理论差距。该视图面向的是学术研究人员、漏洞分析人员和评估工具厂商。
    它对弱点进行了分类,在很大程度上忽略了如何检测它们,它们出现在代码中的什么地方,以及它们何时被引入软件开发生命周期。相反,它主要是根据软件行为的抽象来组织的。这种分类方法不关心缺陷的检测方法,缺陷在代码中的位置,在软件开发生命周期中何时引入缺陷。该视图主要基于对软件行为进行抽象描述的方法组织归类。
  • 软件开发: CWE-699 VIEW: Software Development
    该视图围绕软件开发中经常使用或遇到的弱点。因此该视图可以用于开发人员、教育工作者和评估供应商。分类基础是软件开发中经常使用和碰到的概念, 它提供了多种类别,旨在简化导航、浏览和映射。
  • 硬件设计: CWE-1194 VIEW: Hardware Design

1.2. 扩展试图(External Mappings)

基于一些外部组织生成的视图. 这里有我们熟悉的CWE TOP 25,OWASP TOP 10,以及 SEC CERT的编程规范和CISQ 质量测量标准等。

1.3. 帮助试图(Helpful Views)

这里基于特定的标准提供了特定领域的试图.

1.4. 过期的视图(Obsolete Views)

因为新的视图发布,而不再使用的视图, 例如以往的CWE TOP 25, OWASP TOP 10等.

2. CWE的存储结构

2.1. CWE定义的xml schema文件

CWE 每个版本的所有信息是存放在一个xml文件中。xml中各个字段的格式和定义是由一个xsd文件来定义xml的schema。这些两个文件可以从CWE的下载页面得到

我们来看下视图和具体的CWE的存储关系是怎么定义在schema中的。

2.2. CWE xml文件的框架(Weakness_Catalog节点)

这个节点下定义了组成xml文件的四个主要节点:

  • Weaknesses:各个CWE的定义,由WeaknessType类型具体定义;
  • Categories:弱点的分类定义,由CategoryType类型具体定义;
  • Views:弱点视图的定义,由ViewType类型具体定义;
  • External_References: 外部参考信息,由ExternalReferenceType类型具体定义。

接下来我们重点说下四个节点中的:Weaknesses和Views。

2.3. 弱点节点(Weaknesses)定义

Weaknesses的定义是由WeaknessType类型定义的。

2.3.1. 弱点类型(WeaknessType)的定义

这个节点下定义每个CWE弱点的主要地方,这里有我们了解的必须的节点,例如CWE的ID,名字(Name), 描述(Description)等,以及组成每个CWE的其他节点的定义。

这里我们重点关注CWE间的关系:Related_WeaknessesType。

2.3.2. 弱点关系类型(Related_WeaknessesType)的定义

这个节点定义个当前CWE在不同视图下与其他节点的关联关系。主要字段包括:

  • Nature: 关系类型,由另一个枚举(RelatednatureEnumeration)定义。见下图:

  • CWE_ID: 与之关联的CWE编号ID;
  • VIEW_ID: 与之关联的CWE视图(View)编号(ID);

通常这里只定义父节点,也就是当前节点在视图(VIEW_ID)中的父节点(Nature为ChildOf)的CWE节点是CWE_ID。

2.4. 视图节点(Views)定义

Views的定义是由ViewType类型定义的。

2.4.1. 视图类型(ViewType)的定义

这里定义了视图的主要组成:

  • ID:视图的ID;
  • Name: 视图的名字;
  • Members:视图的成员,由RelationshipsType类型具体定义。

2.4.2. 视图节点关系类型(RelationshipType)的定义

该类型具体的定义了视图的成员,以及和视图成员之间的关系。

  • Has_Member: 由结构体Member_Type定义,具体如下图:

每个视图成员由成员的CWE_ID,和所属的视图编号View_ID组成。

2.5. CWE层级关系的举例

2.5.1. 研究者视图CWE-1000

  • 研究者视图CWE-1000页面关系展示

从这个图示可以看到编号:CWE-1000的研究者视图由以下节点组成:

  • 视图的成员:
    • CWE-284:访问控制不恰当(Improper Access Control);
    • CWE-435: 交互错误(Improper Interaction Between Multiple Correctly-Behaving Entities);
    • CWE-664:在生命周期中对资源的控制不恰当(Improper Control of a Resource Through its Lifetime);
  • 视图的子节点:
    这里以CWE-120为例,从图中可以看到:
    • CWE-120:未进行输入大小检查的缓冲区拷贝(传统缓冲区溢出),它的父节点是:CWE-119;
    • CWE-119:内存缓冲区边界内操作的限制不恰当,它的父节点是: CWE-118;
    • CWE-118: 对可索引资源的访问不恰当(越界错误), 它的父节点是: CWE-664;
    • CWE-664:在生命周期中对资源的控制不恰当,它的父节点是: CWE-1000;
    • CWE-1000:研究者视图。

2.5.2. 对应的xml定义

  • 研究者视图CWE-1000的定义

  • CWE-120的定义

  • CWE-119的定义

  • CWE-118的定义

3. 小结

  • 介绍了CWE的四种主要视图类型:向导视图、扩展试图、帮助试图和过期的视图;
  • 介绍了CWE通过xsd完成xml存储的定义方式,重点介绍了如何建立各个CWE之间的层级关系;
  • 以CWE120为例说明了CWE在xml文件中如何建立与CWE-1000之间的层级关系。

 

点击关注,第一时间了解华为云新鲜技术~

以上是关于软件测试01:软件及分类和缺陷的定义的主要内容,如果未能解决你的问题,请参考以下文章

2017012.01-构建之法:现代软件工程-阅读笔记4

APP测试要点及常见Bug分类

Bug的分类和管理流程

测试中缺陷等级分类

剖析CWE视图的层次定义和解析方式

软件测试体系学习及构建(19)-测试活动之缺陷管理