软件测试系列-软件质量

软件测试系列--软件质量

一、软件质量的定义

1、什么是质量?

ISO(International Standard Organization国际标准化组织)关于质量的定义表示为:一个实体的所有特性,基于这些特性可以满足明显的或隐含的需求,而质量就是实体基于这些特性满足需求的程度。

质量的定义包含三个要素:实体、特性集合、需求。

2、质量大师

在质量行业发展的历史上,涌现出多位质量大师,而我们当今的质量理念,都源于这些大师。

(1)戴明Deming

--戴明提出的是PDCA,我们现在做的很多事情都可以利用这个观点。

P(Plan):规划质量目标;

D(Do):根据计划去实施;

C(Check):计划再缜密,但也与可能会出现偏差,监督控制实施和计划的差别。

A(Action):第一层含义:调整偏差;第二层含义:积累沉淀经验。

--戴明学说简洁易明,其主要观点有十四个,一下简单描述一下:

1.	创造产品与服务改善的恒久目的

	最高管理层必须从短期目标的迷途中归返,转回到长远建设的正确方向。也就是把改进产品和服务作为恒久的目的,坚持经营,这需要在所有领域加以改革和创新。
	
2.	采纳新的哲学

	必须绝对不容忍粗劣的原料,不良的操作,有瑕疵的产品和松散的服务。

3.	停止依靠大批量的检验来达到质量标准

	检验其实是等于准备有次品,检验出来已经是太迟,且成本高而效益低。正确的做法,是改良生产过程。

4.	废除"价低者得"的做法

	价格本身并无意义,只是相对于质量才有意义。因此,只有管理当局重新界定原则,采购工作才会改变。公司一定要与供应商建立长远的关系,并减少供应商的数目。采购部门必须采用统计工具来判断供应商及其产品的质量。

5.	不断地及永不间断地改进生产及服务系统

	在每一活动中,必须降低浪费和提高质量,无论是采购、运输、工程、方法、维修、销售、分销、会计、人事、顾客服务及生产制造。

6.	建立现代的岗位培训方法

	培训必须是有计划的,且必须是建立于可接受的工作标准上。必须使用统计方法来衡量培训工作是否奏效。

7.	建立现代的督导方法

	督导人员必须要让高层管理知道需要改善的地方。当知道之后,管理当局必须采取行动。

8.	驱走恐惧心理

	所有同事必须有胆量去发问,提出问题,表达意见。

9.	打破部门之间的围墙

	每一部门都不应只顾独善其身,而需要发挥团队精神。跨部门的质量圈活动有助于改善设计,服务,质量及成本。

10.	取消对员工发出计量化的目标

	激发员工提高生产率的指标、口号、图像、海报都必须废除。很多配合的改变往往是在一般员工控制范围之外,因此这些宣传品只会导致反感。虽然无须为员工订下可计量的目标,但公司本身却要有这样的一个目标:永不间歇地改进。

11.	取消工作标准及数量化的定额

	定额把焦点放在数量,而非质量。计件工作制更不好,因为它鼓励制造次品。

12.	消除妨碍基层员工工作畅顺的因素

	任何导致员工失去工作尊严的因素必须消除,包括不明何为好的工作表现。

13.	建立严谨的教育及培训计划

	由于质量和生产力的改善会导致部分工作岗位数目的改变,因此所有员工都要不断接受训练及再培训。一切训练都应包括基本统计技巧的运用。

14.创造一个每天都推动以上13项的高层管理结构。

(2)朱兰(全名叫 DR.J.M.JURAN:约瑟夫.莫西.朱兰)

他对实行组织内部质量策划的主要观点包括:

1.识别客户和客户需求;

2.制定最佳质量目标;

3.建立质量衡量方式;

4.设计策划在运作条件下满足质量目标的过程;

5.持续增加市场份额;

6.优化价格,降低公司或工厂中的错误率。

朱兰认为大部分质量问题是管理层的错误而并非工作层的技巧问题,总的来说,他认为管理层控制的缺陷占所有质量问题的80%还要多。

朱兰是首创人力与质量管理结合取来,如今,这一观点已经包含于全面质量管理的概念之中。

(3)克劳士比(全名:飞利浦.克劳士比 Philip B.Crosby)

克劳士比质量四项基本原则:

1.质量就是满足要求;

2、工作的标准是零缺陷;

3、产生质量的系统是预防;

4、用不符合要求的代价(PONC)来衡量质量。

他提出来“零缺陷”的概念。

(4)石川馨

石川馨总结了QC小组的七种常用工具,我们称其为质量控制(QC)的七大手法:

1、帕累托(Pareto)图:用来分析质量问题,确定产生质量问题的主要因素。

2、鱼骨图;(因果图/石川图):是一种发现问题“根本原因”的方法。

3、散点图:散点图通常用于比较跨类别的聚合数据,用于显示和比较数值,比如科学数据、统计数据等。

4、直方图:通过研究质量波动状况之后,掌握过程的状况,从而确定在什么地方集中力量进行质量改进工作。

5、检查表:记录类检查表和检查类检查表。

6、控制图:用于检测生产监测过程是否处于控制。

7、流程图:配合各项目的数据。
	

3、质量铁三角

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

流程、技术、组织,三者共同决定软件质量。

二、软件质量管理体系

软件质量管理体系共有三个:1、ISO; 2、CMM; 3、6Sigma

1、ISO(International Organization for Standardization):不具体针对某个行业的质量标准,是普通适用的质量管理体系。

ISO的主要内容有以下八点:

(1)以顾客为中心。

(2)领导作用。

(3)全员参与。

(4)过程方法。

(5)管理的系统方法。

(6)持续改进。

(7)基于事实的决策方法。

(8)互利的供方关系。

2、CMM(Capability Maturity Model):特定针对软件行业的质量管理体系。

CMM已经发展成为了众多标准的集合体,比如关于人力资源的People-CMM,关于软件采办的SA-CMM等等,最新的研究成果是CMMI。

如今的CMMI模式包含了系统工程(Systems Engineering)、软件工程(Software Engineering)、整合产品与流程发展(Integrated Product and Process Development),以及委外作业(Supplier Sourcing)四个专业领域。

CMM模型概要:

CMM的精髓在于:过程决定质量。关键过程域**KPI**(Key Process Area)。

过程能力分为五个等级:

(1)初始级

*特点:软件过程是无序的,有时甚至是混乱的,对过程几乎没有定义,成功取决于个人努力,管理是反应式(消防式)的。


(2)可重复级

*特点:建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功。

*KPI:需求管理;软件项目计划;软件项目跟踪和监督;软件子合同管理;软件质量保证;软件配置管理。

(3)已定义级

*特点:已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件。

*KPI:组织过程定义;组织过程焦点;培训大纲;集成软件管理;软件产品工程;组际协调;同行评审。

(4)已管理级

*特点:收集对软件过程和产品质量的详细度量,对软件过程和产品都有定量的理解和控制。

*KPI:定量的过程管理;软件质量管理。

(5)优化级

*特点:过程的量化反馈和先进的新思想、新技术促使过程不断改进。

*KPI:缺陷预防;技术变更管理;过程变更管理。

CMMI继承并发扬了CMM的优良特性,借鉴了其他模型的优点,融入了新的理论和实际研究成果。

CMMMI各阶段的过程域如下:

(1)初始级

没有过程域(CMM模型中也没有关键域)。

(2)管理级(7个)

配置管理;过程和产品质量保证;供应商合同管理;项目监控和控制;项目计划;需求管理;测量和分析。

(3)定义级(13个)

群组集成;产品集成;集成项目管理;组织培训;组织过程重点;需求开发;技术解决方案;验证(CMM里面的同行评审);确认;风险管理;决策分析和解决;组织环境的集成。

(4)定量管理级(2个)

项目定量管理;组织过程性能。

(5)优化级(2个)

组织革新和实施;原因分析和解决。

3、6Sigma:不具体针对某个行业,不只关注质量,还关注成本、进度等。

6Sigma管理原则:

(1)注重客户;

(2)注重流程;

(3)全员参与;

(4)预防为主;

(5)事实依据的决定;

(6)持续和突破性改进。

6Sigma改进区域:

(1)周期时间(流程速度,回应能力);

(2)输出物的变差(产品或服务的直通率,缺陷成本降低,客户满意度升高);

(3)营运效率(更低成本)。

6Sigma实施方法:DMAIC(define measure analyze improve control)

Define:确定要解决的问题(项目章程)

Measure:测量结果。

Analyze:何时,何地,为何产生缺陷。

Improve:如何改进进程。

Control:如何保持过程的改善。

三、软件质量模型

ISO9126软件质量模型由6个特性、27个子特性组成。这个模型是软件质量标准的核心,测试工作需要从这6个特性、27个子特性中去测试、评价一个软件。

需要记住的是:我们在评价一个软件之前,需要先了解需求规格说明书(SRS),然后再从上面的特性中去评价。

1、功能性(functionality):当软件在指定条件下使用时,软件产品提供满足明确和隐含需求的功能的能力。

功能性包含以下子特性:

(1)适合性(suitability):软件产品为指定的任务和用户目标提供一组核实的功能的能力。

例如:计算器是否有加法功能。

(2)准确性(accuracy):软件产品提供具有所需精确度的正确和相符的结果或者效果的能力。

例如:计算器的加法功能是否准确。

(3)互操作性(interoperability):软件产品与一个或更多的规定系统或者接口进行交互的能力。

例如:在qq中能否打开浏览器,在qq中能否传送文件,在qq中能否拍照等等。

(4)保密安全性(security):软件产品保护信息和数据的能力。

例如:用户登录中,输错密码是否可以登录;对于系统文件或者用户密码文件是否进行隐藏、密码验证等等。

(5)功能性的依从性(functionality compliance):软件产品遵循与功能性相关的标准、约定或法规以及类似规定的能力。

例如:编写文档的时候从左到右(约定的规范)。

2、可靠性(reliability):在指定条件下使用时,软件产品维持规定的性能级别的能力。

三要素(三规):规定的环境、规定的时间、规定的性能。

可靠性三大指标:

(1)MTTF(Mean time to failure):平均无故障时间。

(2)MTTR(Mean time to restoration):平均恢复时间。

(3)MTBF(Mean time before failure):平均失效间隔时间。

可靠性包含以下特性:

(1)成熟性(maturity内部借口防范):软件产品为避免由软件中错误而导致失效的能力。

(2)容错性(fault tolerance外部接口防范):在软件出现故障或者违反指定接口的情况下,软件产品维持规定的性能级别的能力。

(3)易恢复性(recoverability):在失效发生的情况下,软件质量重建规定的性能级别并恢复受直接影响的数据的能力。

(4)可靠性的依从性(reliability compliance):软件产品遵循与可靠性相关的标准、约定或法规的能力。

3、易用性(usability):在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。

易用性包含的子特性:

(1)易理解性(understandability):软件产品使用户能理解软件是否合适以及如何能将软件用于特定的任务和使用环境的能力。

(2)易学性(learnability):软件产品能够使用用户学习其应用的能力。

(3)易操作性(operability):软件产品使用户能够操作和控制它的能力。

(4)吸引性(attractiveness):软件产品吸引用户的能力。

(5)易用性的依从性(usability compliance):软件产品遵循与可靠性相关的标准、约定或法规的能力。

4、效率(efficiency):在规定条件下相对于所用资源的数量,软件产品可提供适当性能的能力。

效率特性包含以下几个子特性:

(1)时间特性(time behavior):在规定条件下,完成用户的某个功能需要的响应时间。

(2)资源利用性(resource utilization):在规定条件下,软件产品执行其功能时,使用合适的资源数量和类别的能力。

例如:完成某个功能需要的CPU占有率、内存占用率、通信带宽等。

(5)效率依从性(efficiency compliance):软件产品遵循与可靠性相关的标准、约定或法规的能力。

例如:用户打开一个网站:3秒是很快,5秒可以接受,8秒就是效率的极限。		

5、可维护性(maintainability):软件产品可被修改的能力。

可维护性包含以下几个子特性:

(1)易分析性(analyzability):软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力。

(2)易改变性(changeability):软件产品使指定的修改可以被实现的能力。

(3)稳定性(stability):软件产品避免由于软件修改而造成意外结果的能力。

(4)易测试性(testability):软件产品使的已修改的软件能被确认的能力。

6、可移植性(portability):软件产品从一种环境迁移到另外一种环境的能力。

可移植性包含以下子特性:

(1)适应性(adaptability):软件产品不需要采用其他方法就可以适应不同的指定环境的能力。

(2)易安装性(installability):软件产品在指定环境中被安装的能力。

(3)共存性(co-existence):软件产品在公共环境中和其他分享相同资源的软件共存的能力。

(4)易替换性(replaceability):软件产品在同样环境下,替代另一个相同用途的软件产品的能力。

(5)可移植性性的依从性(portability compliance):软件产品遵循与可靠性相关的标准、约定或法规的能力。

范例:基于以上特性对微信进行测试

适合性(功能性):

1、微信是否能够正常发送、接收文本。
2、能否实现语音信息的发送和接收。
3、能否使用通讯录功能。

准确性(功能性):

1、网络畅通的情况下,聊天的文本信息能否及时接收和发送。
2、语音信息是否清晰、音量适中。

互操作性(功能性):

1、能否在浏览器中打开聊天信息中的链接。
2、能否调用手机中的录音功能。
3、能否实现文件上传或下载。 
4、能否快速调用输入法。

保密安全性(功能性):

1、登录要求密码。
2、是否绑定手机号码。
3、是否绑定了手机物理地址。
4、支付时要求输入单独的支付密码。
5、支持手机进行应用锁定。

成熟性(可靠性):

1、在误删好友的情况下能否找回好友。
2、能否在网络恢复后自动重连。

容错性(可靠性):

1、录音系统损坏的情况下,不影响文本发送接收。
2、断网情况下,不影响查看通讯录。
3、摇一摇功能不能使用的情况下,不影响聊天和其他功能。

易恢复性(可靠性):

1、断网后重新恢复网络连接时,自动登录,自动接收断网期间的消息和数据。
2、断网恢复后,之前上传或下载的文件能够自动续传或下载。
3、系统崩溃后,重新打开不丢失数据和信息。

易理解性(易用性):

1、很容易知道这是干什么用的--聊天工具。
2、容易理解使用条件--智能手机+网络条件。
3、很容易看得明白能干什么--聊天+微博(朋友圈)。

易学性(易用性):

1、跟之前的聊天工具类似。
2、不同文化程度、年龄的人学起来都不费劲。
3、不需专业知识。

易操作性(易用性):
1、中文界面。
2、不会打字的人也能聊天。
3、可以使用中文输入法。
4、摇一摇就能加陌生好友。

吸引性(易用性):

1、新潮好玩。
2、跟朋友沟通非常方便。
3、有很多好玩的游戏。
4、在朋友圈里能学到东西。

时间特性(效率):

1、打开软件时的响应时间。
2、网络畅通时,信息的发送和接收能否及时到达。
3、网络畅通时能在多少秒内打开朋友圈。

资源利用性(效率):

1、刚打开软件时的内存占用量。
2、在朋友圈看电影的内存占用量。
3、持续聊天时的耗电量。
4,在朋友圈看电影的网络占用量

易分析性(可维护性):

1、无法输入中文时,很容易想到输入法问题。
2、无法联网出错时,自动提示连接网络。
3、无法录入语音信息时,很容易想到是手机录音功能的原因。

稳定性(可维护性):

1、发布微信新游戏时,不会导致其他游戏出错。
2、添加新功能时,其他功能不受到意外影响。
3,使用过程中突然有电话.....

适应性(可移植性):

1、在安卓系统和苹果系统下都能完美运行。

易安装性(可移植性):

1、安装过程简单。
2、可以很方便地运用系统自带功能或者别的软件管理工具进行完全卸载。

共存性(可移植性):

1、能和易信、QQ同时运行。
2、存在安全软件的情况下仍能安装。
3、运行时不会导致其他软件出现异常。

易替换性(可移植性):

1、能够自动升级和被动升级。
    

四、软件质量活动

软件质量活动主要包括:软件质量保证(SQA)和测试。

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

(1)SQA从流程方面保证软件质量。

(2)测试从技术方卖弄保证软件的质量。

(3)只进行SQA活动或只进行测试活动不一定能产生好的软件质量。

你可能感兴趣的:(软件测试)