软件质量与软件度量
上一篇 / 下一篇 2006-12-10 17:33:27 / 个人分类:软件质量保证
1 质量、质量特性与质量职能
现代质量管理认为,质量是客户要求或者期望的有关产品或者服务的一组特性,落实到软件上,这些特性可以是软件的功能和安全性等。软件产品质量是最终的检验标准,而最终的检验者是客户,从这个意义上说,软件质量就是客户的满意度。
1.1 质量的重要性
质量是企业的生命,没有质量,企业就不能生存和发展。以质量求生存、求发展,是现代企业经营管理的质量理念。
产品质量。产品质量是指产品能够满足使用需求所具备的特性。一般包括性能、可靠性、安全性、经济性,以及外观质量等。
1.2 什么是软件质量
保证软件质量就是要满足明确声明的功能和性能需求、明确文档化的开发过程以及专业人员开发软件所具有的所有隐含特性。
从这个定义可以理解:
软件需求是质量度量的基础,与需求不符就是质量不高。
正确性(Correctness):所制作的功能达到设计规范并满足使用者需求的程度;
可靠性(Reliability):于规定的期间和条件下,仍能维持其性能水准的程度;
易使用性(Usability):使用者学习、操作、准备输入、理解输出所做努力的程度;
效率(Efficiency):软件执行某项功能所需电脑资源的有效程度;
可维护性(Maintainability):当环境改变或软件发生错误时,执行修改所做努力的程度;
可移植性(Portability):从一个电脑系统或环境移到另一电脑系统或环境的容易程度。
2 质量管理
2.1 质量管理的定义
质量管理是确定质量方针、目标和职责,并在质量体系中通过诸如质量策划、质量控制、质量保证和质量改进使其实施的全部管理职能的所有活动。
质量管理是各级管理的职责,但必须有最高管理者领导。质量管理的实施涉及到组织中的所有成员。
质量管理任务是正确制订和贯彻执行质量方针和政策;保证和提高产品质量和服务质量,生产出物美价廉的产品,以满足用户需要;不断降低物质消耗,降低质量成本,提交经济效益;提高领导和职工的质量意识和素质,促进企业素质和管理水平的提高;研究和发展质量理论和质量科学。质量管理是揭示产品生产、形成和实现运动的规律,运用规律以指导质量管理活动。
3 质量保证和测试
软件质量保证(Software Quality Assurance,即SQA)与测试(Testing)有相同之处,但Quality Assurace和Testing又具有两个显著不同的流程和职能。
3.1 SQA与测试的不同
正规化的测试流程基于标准化的软件开发生命期。强调书写正式的测试文档(比如测试计划、测试设计、测试用例和测试过程),以实现可重复的结构化软件测试。测试文档应以正式的需求规格说明书为基础,模型中的测试计划是用来验证需求的,有了测试文档就可以执行测试。
之后是检查测试文档、基于文档执行测试、召开测试前和测试后的会议,以及书写测试报告等。
正规化的测试流程包含5个重要的子流程:
检查项目计划
创建测试计划
创建测试设计、测试用例、测试软件和测试过程;
执行正式的测试
更新测试文档
类似的,QA流程模型是建立在项目早期的QA计划基础上的,象测试一样,QA也是一个贯穿整个开发生命周期的流程。
SQA计划形成后,QA要进行以下活动:
协调度量工作
协调风险管理工作
执行审查
协调风险管理工作
执行审查
协调文档检查会议
促进/协助流程改进
监察测试工作
1. SQA组织的职能是向管理层提供正确的信息,以开发程序正确执行;
2. SQA最主要的职能是促进和协助流程的改进,收集度量数据(有些来自文章检查的结果)、确定和管理风险都能够帮助流程改进。
3. SQA的另一个主要职能是充当测试工作的监督者,管理人员和开发人员不必再担心“谁来监督测试人员”,有了独立的SQA组织,测试工作就可以被客观的检查和评价。SQA可以确保测试工作是按照他们定义好的流程(如同测试计划和其他测试文档中所写的那样)执行的,并且可以协助测试部门和人员改进测试流程。
4. 从另一个角度看,通过比较SQA和测试的不同,我们也看到了测试和SQA是如何通过协作建立起一个正规化的质量支持基础构架来支持项目开发的
3.2 对于SQA与测试工作的一些误解
1. 误解一:如果发布出去的软件有质量问题,那时软件测试人员的错;
这种观点是错误的,因为软件质量是“做”出来的,而不是“测”出来的。
2. 误解二:软件技术要求不高,比编程容易多了;
很多人认为软件测试技术要求不高就是运行一下软件,然后看结果对不对。但实际上,如何在有限的投入下,提高软件质量的效率和产出是一件很见功底的事情。所以,好的测试人员不仅要掌握各种测试技术和测试工具,还要具备丰富的编程经验和对bug的敏感性。另外,测试统计技术也是一项很特别的技术
3. 误解三:设计——实现——测试,软件测试是开发后期的一个阶段;
实际上,软件测试贯穿整个软件产品生命期。一方面,软件测试也要经历测试计划、测试用例的设计和实现,以及测试运行一系列的阶段,因此,早在软件需求阶段,甚至更早,软件测试的工作就要开始了。另一方面,软件测试越早进行越好,因为bug越早发现,bug造成的影响和修改bug的代价就越小。而且,软件测试并不仅仅针对程序,软件的需求、设计等也要被测试;
4. 误解四:SQA工作就是要做测试;
软件测试就是一种有效的提高软件质量的手段,但测试毕竟是一种事后的,检验性的,任何在软件生产过程中保证软件过程的质量和效率其实比单纯的产品检验具有更重要的意义。不断的改进我们的软件过程是SQA的一项最重要的任务。
SQA和测试虽然具有上面所述的不同之处,当他们需要协作和共同作用才能有效提高软件产品的质量。
4 软件度量
只有可度量的才是可控制的,也才是可测试的。度量的目的是为了判断SQA活动的成本和进度状态,进而改善SQA活动。本节介绍软件度量对研发的意义,以及如何进行度量活动。
4.1 为什么需要进行软件度量
可能人们有疑问:度量活动对我们的研发工作有上面所述的作用吗?我们花费时间和人力来做度量,值得吗?
度量活动可以对我们的软件开发项目状态和产品质量给予量化的表示,为我们加强和改进研发工作提供详细的指导。