1、2000标准。同时参考了业界同行写的相关方案或文章,吸收了他们的优秀见解。目 录1.引言1.1软件质量概述随着信息技术的飞速发展,使软件产品应用到社会的各个领域,也造就了软件行业激烈竞争的生存环境,随着软件规模及复杂性急剧加大,软件质量已经成为人们共同关注的焦点。技术是软件企业的生命,而质量则是它的灵魂,软件企业要在竞争中占有一席之地,软件质量保证是第一要素。由此,软件质量的重要性是不言而喻的。软件质量是指与软件产品满足规定的和隐含的需求的能力有关的特征和特性的总和。通常来说,软件质量应该包含六方面的特性: 功能性、可靠性、易使用性、效率、可维护性、可移植性。软件质量管理包括:软件质量计划编制
2、、软件质量保证和软件质量控制三个过程域。质量计划就是为了实现质量目标的计划,它主要结合各个公司的质量方针,产品描述以及质量标准和规则通过收益、成本分析和流程设计等工具制定出来实施方略,其容全面反应用户的要求,为质量小组成员有效工作提供了指南,为项目小组成员以及项目相关人员了解在项目进行中如何实施质量保证和控制提供依据,为确保项目质量得到保障提供坚实的基础。质量保证(Quality Assurance ,QA)的目的是提供一种有效的人员组织形式和管理方法,通过客观地检查和监控“过程质量”与“产品质量”,从而实现持续地改进质量。质量保证是一种有计划的、贯穿于整个产品生命周期的质量管理方法。质量控制
3、是对阶段性的成果进行检测、验证,为质量保证提供参考依据,它是一个PDCA循环过程。1c d)EMs:b&p7u Q7f48371 1.2公司软件质量现状分析公司的软件开发历经多个生产个环节,产生大量的中间产品,每个环节都有可能带来产品质量问题;同时由于软件产品是逻辑体,不具备实体的可见性,因而难以度量,质量也难以把控,因此如何有效地管理软件产品的质量一直是我们面临的挑战。虽然我公司在研发电力行业信息化相关软件方面取得很大成绩,但是其软件能力成熟度与国同行业知名企业相比,还有一定的差距。我公司研发的软件产品,除了产业规模偏小、自主创新能力不足之外,在易用性、可靠性、可移植性、可维护性、可扩展性及
4、系统集成等方面也存在着一定的质量问题,导致“用户抱怨较多、产品投产后缺陷纠正过多、公司售后服务投入过大”的不利局面,制约了我公司在电力软件行业的持续快速健康发展。究其原因,可能是以下几种原因造成的:(1)对软件工程标准化重视不够。(2)软件质量管理体系不健全,实施效果不佳。(3)企业对测试工作投入不足,测试管理和测试环境有待完善,测试技术有待提升。1.3软件质量管理的特点要解决软件的质量问题,同时保证开发的成本和项目的进度控制、解决研发中的诸多不规问题,关键是要建立起完善的软件质量管理体系,把软件开发过程合理地监控起来,管理起来,进而达到提高产品的质量,控制产品开发的进度和成本的目的。分析软件
5、质量管理的特点,主要有以下几点:1、软件质量管理是贯穿软件研发的全过程,而不能仅局限于软件本身软件质量不仅仅是一些测试数据、统计数据、客户满意度调查反馈表等等,衡量一个软件质量的好坏,应该首先考虑完成该软件生产的整个过程是否达到了一定的质量要求。在软件开发实践中,软件质量控制可以依靠流程管理(如需求管理、缺陷管理、配置管理、软件发布等),严格按照软件工程执行, 确保软件的功能性、可靠性、易使用性、效率、可维护性、可移植性。2、对技术文档的评审是控制软件质量的有效方式研发过程中的很多技术文档作为产品的组成部分,也需要像对产品一样进行检验,而对技术文档的评审就构成了产品检验的重要方式。技术评审主要
6、有以下好处:通过消除工作成果的缺陷而提高产品的质量;技术评审可以在任何开发阶段执行,不必等到软件可以运行之际,越早消除缺陷就越能降低开发成本;开发人员能够及时地得到同行专家的帮助和指导,无疑会加深对工作成果的理解,更好地预防缺陷,一定程度上提高了开发效率。3、运用技术手段保证质量利用多种工具软件进行质量保证的各种工作,如用Svn软件进行配置管理、文档管理和软件变更控制。采用先进的系统分析方法和软件设计方法(OOA、OOD、软件复用等)来促进软件质量的提高。4、应用质量管理思想满足顾客需求 缺陷预防分析已经产生的缺陷并采用相应的措施以避免这类缺陷重复出现, 找出并确定引起缺陷的通常原因。不公如此
7、,还要规划缺陷预防活动, 对引起缺陷的通常原因划分优先级并系统地予以消除。紧紧抓住用户需求充分地满足客户的需求,不管是付钱的顾客,还是软件的使用者,都要尽可能地满足。 采用快速原型法,尽快演示(Demo)给用户并及时获取用户的反馈,根据用户的反馈不断修改软件,而不是全部完工后再最后交给用户。否则,要改的地方可能很多。甚至推翻重来。充分设计之后再编码,防止因考虑不周而造成返工。 牢牢控制对缺陷的修改通过诸如TD之类的强大的软件缺陷管理平台,记录、跟踪和控制软件缺陷的修复。 对软件进行充分的系统测试在软件通过集成测试后,还需要进行充分的、完整的系统测试和回归测试,直至所有的缺陷关闭为止。 把握软件
8、放行的尺度商业目标决定质量目标。提高软件质量的最终目的是为了赢利,而不是创造完美无缺的产品。因此对于普通商业软件而言,并不是“质量越高越好”,而是恰好让广大用户满意,并且将提高质量所付出的代价控制在预算之。 软件零缺陷几乎是不可能的,对遗留的缺陷要进行充分分析,只要能满足用户需求,软件遗留的缺陷可以在今后升级版本中解决。1.4软件质量责任分配K _ Pxs0VFt$w48371我们公司已经建立了初步的研发管理体系,项目开发具备一定的规化,在研发流程上采用ISO9001:2000的标准进行。我们公司目前每个项目除配备了项目开发所需角色外,还专门配备了配置管理组、测试组和质量保证组(目前此角色由项
9、目管理部的监理来履行此项职责,但尚未真正开展活动)确保软件质量管理的实施,下面针对这三种角色进行说明:51Testing软件测试网0hie.U-V S1、配置管理组职责51Testing软件测试网8J Dne!zUcC 配置管理组是保证项目开发完毕的同时,内部文档和外部文档都同时完成。内部文档的及时产生和规范,是保证项目开发各小组能够更好的接口和沟通的重要前提,从另一个方面讲,也是保证项目不被某个关键路径所阻塞而延滞的前提。如上所述,配置管理小组还是保证质量保证小组得以发挥作用的基础。配置管理小组的主要职责包括: 完善各个部门发送需要存档和进行版本控制的代码、文档(包括外来文件)和阶段性成果;
10、 对代码、文档等进行单向出入的控制; 对所有存档的文档进行版本控制; 提供文档规范,并传达到开发组中。2、测试组职责,sf$O:O7YN48371 测试组作为质量控制的主要手段,负责软件的测试设计和执行工作。如同软件开发一样,测试在执行之前,同样需要进行测试计划和测试策略的设计,通常情况下测试可以分为如下几种类型,如:功能性测试、性能测试、安全测试和系统测试等。而这些测试均需要在测试计划和测试策略中进行描述用以指导测试组成员进行测试用例编写和测试执行。程序员在交给测试人员之前应该是进行过一定的单元测试,确保程序编译、运行正确。51Testing软件测试网2WD Z6RWh#M 测试人员只有根据
11、软件需求规格说明书和详细设计说明书所提及的功能进行检测,才能确保项目组开发的软件产品满足用户需求。在正确性测试完成之后,需要测试的是软件的性能,软件的性能在本项目中占有重要的地位,性能要求有可能改变软件的设计,为避免造成软件的后期返工,测试在性能上需要较大的侧重。如果有必要的话,测试小组还需要做安全测试,以确保系统使用安全可靠。51Testing软件测试网;PszPRGW2i(NW3、质量保证组职责51Testing软件测试网4Wv%m 质量保证小组作为质量保证的实施小组,主要职责是保证软件透明开发的主要环节。在项目开发的过程中几乎所有的部门都与质量保证小组有关。质量保证组对项目经理提供项目进
12、度与项目真正开发时的差异报告,提出差异原因和改进方法。51Testing软件测试网:o M r0a)k)CL 在质量保证组认为某阶段开发质量有问题时,提请项目经理、项目负责人等必要的相关人员举行质量会议以解决当前存在的和潜在的问题。质量保证是建立在文档的复审基础之上,因而文档版本的控制,特别是软件配置管理,直接影响软件质量保证的影响力和力度。质量保证小组的检测范围包括:系统分析人员是否正确的反映了用户的需求; 软件执行体是否正确的实现了分析人员的设计思想; 测试人员是否进行了较为彻底的和全面的测试; 配置管理员是否对文档的规范化进行的比较彻底,版本控制是否有效。&K$o7c%a&RB/t WD
13、h48371 2.软件质量管理体系建设总体方案软件的质量的重要性日益凸现,国大型软件企业不断在CMMI上投入大量资源提高软件能力成熟度,而中小软件企业也纷纷积极行动起来,不断改进软件质量。目前我公司实施软件质量管理在过去一段时间效果不是太好,分析其原因,可能有以下几点:1、公司过去面对的是项目多,项目杂的复杂情况。因此无暇在软件质量的方面投入过多的资源。2、公司是项目型软件企业,主要以承接客户的委托开发项目为主,它主要的关注焦点是在项目的合同期,在项目成本许可的条件下,交付出客户满意的开发项目。而软件质量并没有成为大家关注的焦点,暂时也不会影响公司的生存。 3、在实施的过程中,易发生质量控制人
14、员和研发人员的矛盾,降低实施的有效性;因此针对我公司质量管理实践的现状,我们不能操之过急,急于求成,应该对质量管理体系的建设进行有计划有步骤的稳步规划和推进,特别需要根据客观情况,制定一定的实施原则,才可能有效地推动公司软件质量管理工作。2.1进一步推动软件质量管理体系建设的原则 1、首先作检验型质量管理,再延伸至过程型质量管理 所谓的检验型质控,是指在产品在某个阶段结束的时候,通过有效的评审和测试验证其是否达到了预期的质量需求,主要的步骤有需求评审、概要设计评审、详细设计评审、代码走查或评审、测试、测试评审等过程。而过程型质控是针对软件研发过程的不断改进,来提高软件的质量。在中小软件企业中提
15、倡首先作检验型质控,再作过程型质控是基于下面的几点考虑:首先,检验型质控(评审、测试)是解决显性问题的最有效方法。通过检验型质控,使软件质量得到较快提高,增强质量人员和公司领导对公司质量管理工作的信心,为过渡到过程型质量控制奠定坚实的基础。其次,目前普遍存在的软件研发人员质量意识薄弱,须通过有效的检验型质控为研发人员进行初级的质量意识教育。当我们的检验型质控发展到一定的阶段,真正起到了作用后,再开始进行过程型质控的工作,使质量的深层次问题不断得到解决。2、过程型质量管理要循续渐进,尊重客观规律,避免拔苗助长 过程型质控是对研发工作流程的改动,这种改动对项目组成员来说改动了他过去多年形成的一些习
16、惯,并且改动会增加项目组的工作量,这种改动或多或少地会遭受到项目组成员有意无意的抵制。因此,在制定过程型质控方案的时候要判断好优先级,从最需要改动的过程着手,一步一步地做。避免急于求成,使工作得不到研发人员的理解和支持。3、软件质量管理是一种服务,需要经验丰富的质量管理人才才能够胜任 质量管理实际上是对项目的一种质量服务,目的是对项目人员在质量上的一种帮助,帮助其发现问题、提供解决方法。因此作为质量控制人员的能力需求上是比较高的。同时,质量控制人员通过提供这种服务,能够拉近和研发人员的距离,研发人员能够更加接受过程型质控的改动,使质控工作的矛盾更小。因此,建议从事质量管理的人员应该是从事较长时
17、间项目研发、项目管理的人员,只有一个资历深的质量管理人员才能够真正地对项目研发提供一种高质量的服务。 4、加强相关人员的培训是工作中的重中之重培训工作应该包括两个方面的容:一方面,在实施过程型质控过程中制定的过程、标准需要通过培训的方式来让所有的人员都理解并接受。另一方面,需要通过培训的方式提高研发人员的质量意识。只有质量意识提高了,才能大大减少质量管理人员的工作量。2.2软件质量管理体系完善需要解决的主要问题1、 识别和建立软件研发的过程通用的软件的研发过程一般归结为:项目立项需求分析概要设计详细设计编码测试运行维护。我们公司在研发流程上采用ISO9000的标准进行,已经具备一定的规性。我们
18、可以应用ISO12207信息技术软件生存周期过程,对照CMMI软件能力成熟度模型框架,结合软件企业的具体情况,进行过程建模优化,这是建立一个适宜的软件质量管理体系的前提。2、 明确管理职责、调整组织结构第一步就是要进行软件质量管理情况诊断,根据企业的实际情况和依据ISO9001标准的要求,进行软件质理管理组织架构重构。第二步就是有明确岗位分工与职责,特别要明确与软件质量管理有关的岗位和职责,为建立软件质量管理体系打下基础,以适应建立软件质量管理体系的需要。由于公司在近几年一直再做软件质量管理的基础工作,因此这项工作具备一定的基础,例如:构建了较稳定的配置管理体系、测试管理体系也在不断的改进之中
19、。我们目前的最主要问题是在于缺乏一个有效的质量保证组织。3、 建立文件化工作程序。再好的管理方法如果没有写成文件化的程序,也是空谈。建立文件化程序就是为了将软件质量管理体系固化下来,相关的过程和操作都要做到有章可循。建立文件化程序的过程实际上是对流程的一次全面整理的过程。4、 解决好软件配置管理和软件变更控制。由于软件需求的不确定性,软件设计的变更是不可避免的。建立基线是加强变更控制的前提。在设计发生变更时软件的配置也必须随之改变,所以将软件配置管理作为一个关键过程纳入软件质量管理体系是一项重要的任务。2.3配置管理实施软件质量管理的重要步骤软件配置管理简称SCM(Software Confi
20、guration Management的缩写),是在项目开发中,标识、控制和管理软件变更的一种管理。配置管理的目标是记录软件产品的演化过程,确保项目组成员在软件生命周期中各个阶段都能得到精确的产品配置。其最终目标是实现软件产品在其生命周期全过程中的一致性、完整性和可追溯性,使产品极大程度地与用户需求吻合。其主要工作和研究容和包括:标识配置项、定义基线、建立配置库和基线库、控制配置项和基线的变更、做好配置项和基线的定期备份和异地备份、定期进行配置审计、及时报告配置状态。在软件质量体系的诸多支持活动中,配置管理处在支持活动的中心位置,它有机地把其它支持活动结合起来,形成一个有机整体,相互促进,相互
21、影响,有力地保证了软件质量体系的实施。从现在软件企业的发展战略来说,如何在技术日新月异、人员流动频繁的情况下建立本公司的知识库及经验库,把个人的知识及经验转变成公司的知识和经验,这对于提高工作效率,缩短产品周期,加强公司的竞争力具有至关重要的作用。同时良好的配置管理有利于规管理,量化工作量考核,规测试,加强协调和沟通。采用科学的配置管理思想,辅之以先进的配置管理工具,已经成为必不可少的手段。配置管理工作是一个默默无闻,不受人关注,但是极为重要的工作。这二年来,我们尽心尽责地配合所有项目组,为各个项目制定配置管理计划,建立配置管理系统,并且制定了配置管理制度和配置管理流程,构建了功能强大,安全有
22、效,可操作性强的SVN(subversion)配置管理平台。通过不断的实践摸索,积累了较为丰富的配置管理经验,随时可以为各项目组提供精确的良好的配置管理。通过建立完整的代码对象库、业务经验库,将会给项目组以及软件测试的工作带来很大的便利,同时将会最大程度上降低了由于人员流失所造成的损失。由于有了配置管理平台,目前研发部软件代码和文档都得到了良好的管理,也使软件开发人员以及软件测试人员能够很好的协同合作开发产品,从整个公司层面来说也是一个不断地为公司积累业务经验和技术财富的过程。通过努力,目前项目管理部已经建立了较为完整的软件配置管理体系,并且初步制定了配置管理制度和配置管理流程,构建配置管理信
23、息化支撑平台,项目管理部将进一步加强配置管理工作,进一步完善软件配置管理体系。2.4进一步完善我们的测试管理体系我们公司采用的传统的软件测试流程一般是先在软件开发过程中进行少量的单元测试,然后在整个软件开发结束阶段,集中进行大量的测试,包括功能和性能的集成测试和系统测试。在实际工作当中,随着开发的软件项目越来越复杂,传统的软件测试流程已经不能适应工作的需求。针对传统软件测试模式的弊端,根据我们和研发部门相关人员的讨论,认为软件测试不能只发生在软件代码已经编写完毕之后,而应该在软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正。这就是软件软件
24、工程界的一种新的观点:“尽早测试”, 所谓尽早测试是指在整个软件开发生命周期过各种软件工程技术尽量早的完成各种软件测试任务的一种思想。软件的整个测试生命周期是与软件的开发生命周期基本平齐的过程,即当需求分析基本明确后我们就应该基于需求分析的结果和整个项目计划来进行软件的测试计划;伴随着分析设计过程同时应该完成测试用例的设计;当软件的第一个发布出来后,测试人员要马上基于它进行测试脚本的实现。2.4.1.软件测试的组织与管理规划1、测试的过程及组织 当设计工作完成以后,就应该着手测试的准备工作了,一般来讲,由一位对整个系统设计熟悉的设计人员编写测试大纲,明确测试的容和测试通过的准则,设计完整合理的
25、测试用例,以便系统实现后进行全面测试。在开发组将所开发的程序经验证后,提交测试组,由测试负责人组织测试,测试一般可按下列方式组织:(1)首先,测试人员要仔细阅读有关资料,包括规格说明、设计文档、使用说明书及在设计过程中形成的测试大纲、测试容及测试的通过准则,全面熟悉系统,编写测试计划,设计测试用例,作好测试前的准备工作。(2)为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试、确认测试和系统测试。(3)代码会审 代码会审是由一组人通过阅读、讨论和争议对程序进行静态分析的过程。会审小组在充分阅读待审程序文本、控制流程图及有关要求、规等文件基础上,召开代码会审会,程序员逐
26、句讲解程序的逻辑,并展开热烈的讨论甚至争议,以揭示错误的关键所在。实践表明,程序员在讲解过程中能发现许多自己原来没有发现的错误,而讨论和争议则进一步促使了问题的暴露。(4)单元测试 单元测试集中在检查软件设计的最小单位模块上,通过测试发现实现该模块的实际功能与定义该模块的功能说明不符合的情况,以及编码的错误。(5)集成测试 集成测试是将模块按照设计要求组装起来同时进行测试,主要目标是发现与接口有关的问题。如数据穿过接口时可能丢失;一个模块与另一个模块可能有由于疏忽的问题而造成有害影响;把子功能组合起来可能不产生预期的主功能;个别看起来是可以接受的误差可能积累到不能接受的程度;全程数据结构可能有
27、错误等。(6)系统测试 软件开发完成以后,最终还要与系统中其他部分配套运行,进行系统测试。包括恢复测试、安全测试、强度测试和性能测试等。经过上述的测试过程对软件进行测试后,软件基本满足开发的要求,测试宣告结束,经验收后,将软件提交用户。2、测试的人员组织 为了保证软件的开发质量,软件测试应贯穿于软件定义与开发的整个过程。因此,对分析、设计和实现等各阶段所得到的结果,包括需求规格说明、设计规格说明及源程序都应进行软件测试。基于此,测试人员的组织也应是分阶段的。(1)软件的设计和实现都是基于需求分析规格说明进行的。需求分析规格说明是否完整、正确、清晰是软件开发成败的关键。为了保证需求定义的质量,应
28、对其进行严格的审查。(2)设计评审 软件设计是将软件需求转换成软件表示的过程。主要描绘出系统结构、详细的处理过程和数据库模式。按照需求的规格说明对系统结构的合理性、处理过程的正确性进行评价,同时利用关系数据库的规化理论对数据库模式进行审查。(3)程序的测试 是指软件测试。是整个软件开发过程付用户使用前的最后阶段,是软件质量保证的关键。软件测试在软件生存周期中横跨两个阶段:通常在编写出每一个模块之后,就对它进行必要的测试(称为单元测试)。编码与单元测试属于软件生存周期中的同一阶段。该阶段的测试工作,由编程组部人员进行交叉测试(避免编程人员测试自己的程序)。这一阶段结束后,进入软件生存周期的测试阶
29、段,对软件系统进行各种综合的测试。测试工作由专门的测试组完成,负责整个测试的计划、组织工作。测试组的其他成员由具有一定的分析、设计和编程经验的专业人员组成,人数根据具体情况可多可少。3、软件测试文件 软件测试文件描述要执行的软件测试及测试的结果。由于软件测试是一个很复杂的过程,同时也是设计软件开发其他一些阶段的工作,对于保证软件的质量和它的运行有着重要意义,必须把对它们的要求、过程及测试结果以正式的文件形式定义清楚。测试文件的编写是测试工作规化的一个组成部分。测试文件不只在测试阶段才考虑,它在软件开发的需求分析阶段就开始着手,因为测试文件与用户有着密切的关系。在设计阶段的一些设计方案也应在测试
30、文件中得到反映,以利于设计的检验。测试文件对于测试阶段工作的指导与评价作用更是非常明显的。需要特别指出的是,在已开发的软件投入运行的维护阶段,常常还要进行再测试或回归测试,这时仍须用到测试文件。2.4.2.测试管理体系过程控制 为了保证测试管理体系能够正确并且无误的实施与执行,我们设计了一套测试管理体系流程,用来控制测试管理体系执行。2.4.2.1测试流程模型2.4.2.2测试流程控制 1、需求分析需求分析(Requirment Analyzing)应该说是软件测试的一个重要环节,测试开发人员对这一环节的理解程度如何将直接影响到接下来有关测试工作的开展。一般而言,需求分析包括软件功能需求分析、
31、测试环境需求分析、测试资源需求分析等。其中最基本的是软件功能需求分析,测一款软件首先要知道软件能实现哪些功能以及是怎样实现的。测试需求分析的依据有软件需求文档、软件规格书以及开发人员的设计文档等。2、测试计划 测试计划(Test Plan)一般由测试负责人来编写。测试计划的依据主要是项目开发计划和测试需求分析结果而制定。3、测试设计测试设计主要包括测试用例编写和测试场景设计两方面。一份好的测试用例对测试有很好的指导作用,能够发现很多软件问题。测试场景设计主要也就是测试环境问题了。4、测试环境搭建不同软件产品对测试环境有着不同的要求。如C/S及B/S架构相关的软件产品,那么对不同操作系统,如Windows系列、u
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1