测试-软件质量

弹奏江南夜雨,唱了一首花语

1. 软件质量的定义

  • iso(国际标准化组织)关于质量的定义:

    • 一个实体的所有特性,基于这些特性可以满足明显的或隐含的需求。而质量就是实体基于这些实体特性满足需求的程度。
  • 软件质量的三个层次

    • 符合需求规格 :符合开发者明确定义的目标,即产品是不是在做让它做的事情,目标是开发者定义的,并且是可以验证的。(例如用户目标群体)
    • 符合用户显式需求:符合用户所明确说明的目标,目标是客户所定义的,符合目标即判断我们是不是在做我们需要做的事情。(例如客户对功能和界面的需求)
    • 符合用户实际需求:实际的需求包括用户明确说明的和隐含的需求。
  • 影响软件质量的因素

    • 流程
    • 技术
    • 组织
      • 软件质量的提高需要综合考虑,需要从各个方面进行改进,同时还需要兼顾成本和进度
      • 如果有不能解决的技术问题,需要先屏蔽/跳过这个问题
  • 质量管理发展阶段

    • 第一阶段:检验质量管理 19th末-20th初
    • 第二阶段:统计质量控制。强调统计方法
    • 第三阶段:将质量控制扩展到产品生命周期全过程。强调全体员工参与

2. 软件质量管理体系

流行的质量管理体系
iso9000 cmm 六西格玛
  • iso2000八项质量管理原则

    • 1.以顾客为中心
    • 2.领导作用
    • 3.全员参与
    • 4.过程方法:做好相关过程记录
    • 5.管理的系统方法:
    • 6.持续的改进:提出建议
    • 7.基于事实的决策方法
    • 8.互利的供方关系
      • 意义:
        • 质量管理的理论基础
        • 最基本/通用的一般性规律
        • 为组织建立质量管理体系提供了理论依据
        • 是组织领导者有效实施质量管理工作必须遵循的原则
  • 八项质量管理原则的意义

    • 是质量管理的理论基础;
    • 用高度概括、易于理解的语言所表述的质量管理的最基本、最通用的一般性规律;
    • 为组织建立质量管理体系提供了理论依据;
    • 是组织的领导者有效地实施质量管理工作必须遵循的原则。
  • cmm的用途
    cmm等级

    • 评估组用来识别组织中的强处和弱点
    • 评估组用来识别选择不同的业务承包商的风险和监督合同
    • 管理者用来了解其组织的能力,并了解了提高其能力成熟度而进行软件过程改进所需要进行的活动
    • 技术人员和过程改进组用来作为指南,指导他们在组织中定义和改进软件过程
  • iso9001和cmm关系

    • 最大相似点:强调管理、过程、规范化和文档化
    • 不同点
      • cmm焦点在软件
      • iso包括硬件/软件/流程性服务
  • 六西格玛管理法

    • 以质量作为主线,以客户需求为中心,利用对数据和数据的分析,改进一个组织的业务流程能力,从而增强企业竞争力,是一套灵活,综合性的管理方法体系。
    • 要求企业完全从外部客户角度,而不是自己的角度来看待企业内部的各种流程。
    • 利用客户的要求来建立标准,设立产品与服务的标准与规格,并以此来评估企业流程的有效性和合理性

3. 软件质量模型

  • 质量模型:一组特性及特性之间的关系,它提供规定质量需求和评价质量的基础
    • 外部和内部质量
      • 功能性:当软件在指定条件下使用时,软件产品提供满足明确和隐含需求的功能的能力
        • 适合:软件产品为指定的任务和用户目标提供一组合适的功能的能力。
        • 准确:软件产品提供具有所需精确度的正确或相符的结果或效果的能力。
        • 互操作:软件产品与一个或更多的规定系统进行交互的能力。
        • 保密安全性:软件产品保护信息和数据的能力,以使未授权的人员或系统不能阅读或修改这些信息和数据,而不拒绝授权人员或系统对它们的访问。
      • 可靠性:在指定条件下使用时,软件产品维持规定的性能级别的能力
        • 成熟:软件产品为避免由软件中错误而导致失效的能力
        • 容错:在软件出现故障或者违反指定接口的情况下,软件产品维持规定的性能级别的能力。
        • 易恢复性:在失效发生的情况下,软件产品重建规定的性能级别并恢复受直接影响的数据的能力。
      • 易用性:在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力
        • 易理解:软件产品使用户能理解软件是否合适以及如何能将软件用于特定的任务和使用环境的能力。
        • 易学:软件产品使用户能学习其应用的能力。
        • 易操作:软件产品使用户能操作和控制它的能力。
        • 吸引性:软件产品吸引用户的能力。
      • 效率: 在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力
        • 时间特性:在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间以及吞吐率的能力。即完成用户的某个功能需要的响应时间
        • 资源利用性:在规定条件下,软件产品执行其功能时,使用合适的资源数量和类别的能力。
      • 维护性:软件可被修改的能力,修改可能包括修正,改进或软件对环境需求和功能规格说明变化的适应
        • 易分析:软件诊断软件中的缺陷或失效原因或识别待修改部分的能力
        • 易改变:软件产品使指定的修改可被变成现实的能力
        • 稳定:软件产品避免由于软件修改而造成意外结果的能力
        • 易测试性:软件产品使已修改软件能被确认的能力
      • 可移植性:软件产品从一种环境迁移到另外一种环境的能力
        • 适应:软件产品无需采用有别于为考虑该软件的目的而准备的活动或手段就可能适应不同的指定环境的能力
        • 易安装:软件产品在指定环境中被安装的能力
        • 共存:软件产品在公共环境中同与其分享公共资源的其它独立软件共存的能力
        • 易替换性:软件产品在同样环境下,替代另一个相同用途的指定软件产品的能力

4. 软件质量活动

  • 软件质量保证SQA与测试的关系

    • 软件质量由组织、流程和技术三方面决定
      • SQA从流程方面保证软件的质量
      • 测试从技术方面保证软件的质量
      • 只进行SQA活动或只进行测试活动不一定能产生好的软件质量
  • SQA的主要工作范围

    • 指导并监督项目按照过程实施;
    • 对项目进行度量、分析,增加项目的可视性;
    • 审核工作产品,评价工作产品和过程质量目标的符合度;
    • 进行缺陷分析,缺陷预防活动,发现过程的缺陷,提供决策参考,促进过程改进
  • 质量度量的概念和目的

    • 概念:
      • 度量:对事物属性的量化表示
      • 度量:指计算机软件中范围广泛的测度,包括对软件系统,构件或生命周期过程具有的某个给定属性的度的一个定量测量
    • 目的:
      • 提高软件生产率,缩短产品研发周期,降低研发成本、维护成本
      • 提高软件产品质量,提高用户满意度
      • 为组织持续改进提供量化的指标和反馈
  • 软件度量的作用

    • 理解:通过度量,获得对过程,产品,资源等的理解,确定以后预测的基线和模型,对于不同的软件组织和软件类型,过程和模型都不一样。这是评估,预测,改进活动的基础
    • 预测:根据所理解确定的模型,由已知的要素推算,估计其它要素,以便合理分配资源,合理制定计划。
    • 评估:
      • 分析活动与计划的符合度,确定是否有偏差,以便控制其执行
      • 开发活动与计划的符合程度。如工作量估计偏差、进度偏差等;
      • 产品的质量。如软件复杂度、缺陷密度、平均失效时间间隔等;
      • 新技术的影响
    • 改进:根据得到的量化信息,可以帮助我们识别要因、查找问题的根源,以及能提高产品质量和过程效率的其它方法;与以前的量化信息比较,可以验证这些方法是否有效
  • 软件度量分类

    • 四个基本度量项:
      • 规模:软件工作产品的大小
      • 工作量:完成各软件工作产品和活动所用人时
      • 进度:各软件工作产品和活动开始和结束的时间
      • 质量缺陷:在各软件工作产品和活动中产生的缺陷数
  • 软件度量分类-规模数量

    • 规模度量:
      • SRS文档页数
      • HLD文档页数
      • LLD文档页数
      • 代码量
      • UT用例数
      • IT用例数
      • ST用例数、
  • 其它度量指标

    • 依据基本度量数可以分析,综合得到其它度量数据或指标
    • 缺陷密度:
      • 研发活动发现缺陷密度
      • 研发活动引入缺陷密度
      • 工作产品缺陷密度
    • 生产率
    • 测试执行效率
    • 用例密度

软件质量管理体系
软件质量模型
软件质量活动