软件质量管理

软件质量管理定义

目前软件质量标准最通用的是:ISO/IEC 9126:1991国际标准

它从6个方面来评价一个软件:1、功能性;2、可靠性;3、易使用性;4、效率;5、可维修性;6、可移植性。 其中,功能性指当软件在指定条件下使用时,软件产品提供满足明确和隐含要求的功能的能力。

ISO关于质量的定义如下:

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

软件质量的三个层次

从质量的定义来看,可以引申出不同层次的软件质量:

  • 符合需求规格,符合开发者明确定义的目标,即产品是不是再让做它做的事情。目标是开发者定义的,并且是可以验证的。
  • 符合用户显式需求的,符合用户所明确说明的目标。目标是客户所定义的,符合目标即判断我们是不是在做我们需要做的事。
  • 符合用户实际需求,实际的需求包括用户明确说明的和隐含的需求。

影响软件质量的因素

流程、技术、组织这三个因素是影响软件质量的的铁三角,软件质量的提高是一个综合因素,需要从各方面进行改进,同时还需要兼顾成本和进度。

软件质量管理_第1张图片

质量管理发展阶段

第一阶段,检验质量管理(19世纪末-20世纪初):

第二阶段,统计质量控制(20世纪40年代-20世纪60年代):

第三阶段,全面质量管理阶段(20世纪60年代-,TQM,Total Quality Management):

参考:http://www.tup.tsinghua.edu.cn/upload/books/yz/040375-02.pdf

常用的质量管理体系

  • ISO9000系列,通用的质量管理体系。如ISO9126质量模型就说明了怎样从不同的角度考察软件的质量。
  • CMM质量体系。其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM,简称CMM。它是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化、使企业能够更好地实现商业目标。
  • 六西格玛质量体系,非常精密的质量管理体系,适合大规模的生产中,并且保证极低的废品率。

ISO9000质量管理体系是国际标准化组织(ISO)制定的国际标准之一,在1987年提出的概念,是指“由ISO/TC176(国际标准化组织质量管理和质量保证技术委员会)制定的所有国际标准”。该标准可帮助组织实施并有效运行质量管理体系,是质量管理体系通用的要求和指南。我国在90年代将ISO9000系列标准转化为国家标准,随后,各行业也将ISO9000系列标准转化为行业标准。

它是由一族标准组成。

ISO9000:2000版标准

ISO9000族2000版标准主要由ISO9000、ISO9001和ISO9004三个核心标准组成。

ISO9000阐明了ISO9000:2000版标准制定的管理理念和原则,确定了新班标准的指导思想和理论基础、规范和确定了新版ISO9004族标准所使用的概念和术语。

ISO9001标准对组织质量管理体系必须履行的要求做了明确的规定,是对产品要求的进一步补充。

ISO9004是组织进行持续改进的标准指南。

ISO9000:2000版的八项质量管理原则

原则 内容 ISO9001标准条款
以顾客为中心 组织依存与其顾客,因此,组织应理解顾客当前和未来的需求,满足顾客要求争取超越顾客期望。 0.1、5.2、7.2.1、7.2.3、7.3、7.5.3、7.5.4、8.2.1
领导作用 领导者将本组织的宗旨、方向和内部环境统一起来,并创造使用员工能够充分参与实现组织目标的环境。 5.1、5.3、5.4.1、5.4.2、5.5.2、5.5.3、5.6、6.1
全员参与 各级人员是组织之本,只有他们的充分参与,才能使他们的才干为组织带来最大的收益。 5.1、5.3、6.2、7.5.4
过程方法 将相关的资源和活动作为过程进行管理,可以更高效的得到期望的结果。 0.3、5、6、7、8(标准的每一条款都涉及过程)
管理的系统方法 针对设定的目标,识别、理解并管理一个由相互关联的过程所组织成的体系,有助于提高组织的有效性和效率 4.1、7.1、8.2.2
持续改进 持续改进是组织的一个永恒的目标 5.2、5.6、7.5、8.2.2、8.5.1、8.5.3
基于事实的决策方法 对数据和信息的逻辑分析或者直觉判断是有效决策的基础。 7.5.2、7.5.5、7.6、8.2.3、8.3、8.4、8.5.2、8.5.3
互利的供方关系 通过互利的关系,增强组织及其供方创造价值的能力 7.4、8.3

八项质量管理原则的意义

是质量管理的理论基础。

用高度概括、易于理解的语言所表述的质量管理的最基本、最通用的一般性规律。

为组织建立质量管理体系提供了理论依据。

是组织的领导者有效地实施质量管理工作必须遵循的原则。

CMMI

能力成熟度模型Capability Maturity Model Integration

CMM模型主要用于软件过程的改进,促进软件企业软件能力成熟度的提高,但它对于系统工程、集成化产品和过程开发、供应商管理等领域的过程改进都存在缺陷,因而人们不得不分别开发软件以外其他学科的类似模型。

CMMI共有5个级别,代表软件团队能力成熟度的5个等级,数字越大,成熟度越高,高成熟度等级表示有比较强的软件综合开发能力。

软件质量管理_第2张图片

CMMI一级,执行级。在执行级水平上,软件组织对项目的目标与要做的努力很清晰,项目的目标可以实现。但是由于任务的完成带有很大的偶然性,软件组织无法保证在实施同类项目时仍然能够完成任务。项目实施能否成功主要取决于实施人员。

CMMI二级,管理级。在管理级水平上,所有第一级的要求都已经达到,另外,软件组织在项目实施上能够遵守既定的计划与流程,有资源准备,权责到人,对项目相关的实施人员进行了相应的培训,对整个流程进行监测与控制,并联合上级单位对项目与流程进行审查。二级水平的软件组织对项目有一系列管理程序,避免了软件组织完成任务的随机性,保证了软件组织实施项目的成功率。

CMMl三级,明确级。在明确级水平上,所有第二级的要求都已经达到,另外,软件组织能够根据自身的特殊情况及自己的标准流程,将这套管理体系与流程予以制度化。这样,软件组织不仅能够在同类项目上成功,也可以在其他项目上成功。科学管理成为软件组织的一种文化,成为软件组织的财富。

CMMI四级,量化级。在量化管理级水平上,所有第三级的要求都已经达到,另外,软件组织的项目管理实现了数字化。通过数字化技术来实现流程的稳定性,实现管理的精度,降低项目实施在质量上的波动。

CMMI五级,优化级。在优化级水平上,所有第四级的要求都已经达到,另外,软件组织能够充分利用信息资料,对软件组织在项目实施的过程中可能出现的次品予以预防。能够主动地改善流程,运用新技术,实现流程的优化。

由上述的5个级别可以看出,每一个级别都是更高一级的基石。要上高层台阶必须首先踏上所有下层的台阶

CMM级别考核依据

过程能力等级 特点 关键过程域
1. 初始级 软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力,管理是反应式的。
2. 可重复级 建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功。 a.需求管理
b.软件项目计划
c.软件项目跟踪和监督
d.软件子合同管理
e.软件质量保证
f.软件配置管理
3. 已定义级 已将软件管理和工程两方面的过程文档化、标准化、并综合成该组织的标准软件过程。所有项目均使用经批准、裁剪的标准软件过程来开发和维护软件。 a.组织过程定义
b.组织过程焦点
c.培训大纲
d.集成软件管理
e.软件产品工程
f.组际协调
g.同行评审
4. 已管理级 收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解与控制。 a.定量的过程管理
b.软件质量管理
5. 优化级 过程的量化反馈和先进的新思想、新技术促使过程不断改进 a.缺陷预防
b.技术变更管理
c.过程变更管理

六西格玛

这里的西格玛指的是统计学的偏差,表示数据的离散程度。那六西格玛就是六倍的西格玛,也就是六倍的标准偏差。

六西格玛管理法

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

六西格玛模式的本质是一个全面管理概念,而不仅仅是质量提高手段

软件质量管理_第3张图片

六西格玛管理法原则

以质量为主线,以客户需求为中心:

  • 注重客户。
  • 注重流程。
  • 全员参与。
  • 预防为主。
  • 事实依据的决定。
  • 持续和突破性改进。
  • 周期时间(流程速度,回应能力)。
  • 输出物的变差(产品或服务的直通率,缺陷成本降低,客户满意升高)。
  • 营运效率(更低成本)。

六西格玛的实施方式

质量模型

一组特性及特性之间的关系,它提供规定质量需求和评价质量的基础。

首先来看质量模型中的内部和外部质量。

各质量的关系是相互影响又相互依赖的关系。

过程质量

对于软件的质量好坏,要从软件的研发过程来控制,有严格的方式方法,这也是一个质量保证。

过程质量由公司的QA(Quality assurance)人员来保证,QA保证软件的研发过程是按照比较科学的方式方法进行,并将科学的方式贯彻到项目团队,这个活动我们称为软件质量保证(SQA,software quality assurance)。

内部质量

内部质量是指软件研发过程中软件的质量,在这个过程中会产生的需求文档、概要设计、详细设计等文档依据,这些文档的优劣直接影响内部质量。内部质量是由开发来把控。

外部质量

外部质量指地是软件开发完成后,整体运行时暴露出来质量特性,外部质量的界定是由系统测试的来对软件进行质量评判的工作,外部质量由测试人员把控。

使用质量

当软件交付用户后,由用户在使用时感受及目标的符合程度,简单来说就是用户说你的软件好不好,这就是使用质量。

前面的过程、内部、外部质量都是由公司的内部人员来进行评估的;使用质量由用户来评估的。

ISO9126提出了如下图的质量模型。

软件质量管理_第4张图片

六大特性包含了27个子特性,但它只是一个质量模型,我们还是要根据具体的软件环境、背景去考察其他方面的特性。

软件质量活动

之前了解各种保证软件质量的体系,那我们怎么做这件事——保证软件质量,会有怎么样的软件活动。

软件组织主要的软件质量活动:

  • 软件质量保证(SQA,Software Quality Assurance)。
  • 测试。

SQA和测试的关系

软件质量由组织、流程和技术三方面决定:

  • SQA从流程方面保证软件的质量。
  • 测试从技术方面保证软件的质量。
  • 只进行SQA活动或者只进行测试活动不一定能产生好的软件质量。

SQA监控整个项目的流程,比如项目的立项、开发、测试、发布。

测试活动就是项目流程中的一部分。

 测试分类

1、按测试阶段

 W模型

测试今早介入

V模型

局限性:仅仅把测试作为在编码之后的一个阶段,并没有在需求阶段就进入测试

软件质量管理_第5张图片

1、单元测试

是对软件的组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位——模块,故又称为模块测试。

2、集成测试

是将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试。集成测试主要目的是检查软件单元之间的接口是否正确。

3、系统测试

就是将已通过集成测试的软件系统与计算机硬件、外设、数据库、网络等其他元素结合在一起,在实际运行环境下,进行一系列的系统测试工作。包括对功能、性能及软件所运行的软硬件环境进行测试。

4、回归测试

是指修改了旧代码后,重新进行测试以确认没有引入新的错误或导致其他代码产生错误。自动回归测试将大幅降低系统测试、维护升级等阶段的成本。

5、冒烟测试

对象是每一个新编译的需要正式测试的软件版本,对主干流程进行测试,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。一般在开发人员开发完毕后,测试人员会先进行冒烟测试,保证基本功能正常,不阻碍后续的测试。

6、验收测试

是部署软件之前的最后一个测试操作,它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买者展示该软件系统满足原始需求。

探索性测试

探索性测试可以说是一种测试思维技术。它没有很多实际的测试方法、技术和工具,但是却是所有测试人员都应该掌握的一种测试思维方式。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。

探索性测试应该是未来测试领域的一个方向。

2、按测试内容

功能测试

性能测试

稳定性测试

安全测试

兼容性测试

  1、是否可以在不同的浏览器上正常运行。
    · Chrome, Firefox, IE, Edge…
  2、是否可以在不同操作系统的电脑上正常运行。
    · Windows 电脑
    · MAC 电脑
  3、是否可以在手机上正常运行。
  4、是否可以在不同的手机系统上正常运行。
    · 安卓系统
    · 苹果系统
  5、对于不同的手机版本也要进行测试。

3、代码的可见程度

白盒测试

黑盒测试

灰盒测试

4、按是否自动化

人工测试

自动化测试

你可能感兴趣的:(测试理论,测试工具)