软件质量保证 简答题.docx
《软件质量保证 简答题.docx》由会员分享,可在线阅读,更多相关《软件质量保证 简答题.docx(11页珍藏版)》请在冰豆网上搜索。
软件质量保证简答题
1.软件质量保证活动的实施步骤。
答:
(1)SQA活动——
①识别质量需求②参与项目计划制订③制订SQA计划④SQA小组评审工作产品⑤SQA小组实施审核工作⑥SQA小组报告⑦处理不合格项⑧监控软件产品质量⑨收集项目各个阶段数据
(2)SQA的实施——
①首先,要考虑SQA人员的素质。
SQA人员的责任是审查软件设计、开发人员的活动,验证他们是否将选定的标准、方法和规程应用到活动中去。
因此,SQA工作的有效执行需要SQA人员掌握专业的技术,例如质量控制知识、统计学知识等。
②其次,SQA人员的经验对任务的实现同样重要。
应该选择那些经验丰富的人来做SQA,同时为SQA人员进行专门的培训,以使他们能够胜任这项工作。
③第三,组织应当建立文档化的开发标准和规程,使SQA人员在工作时有一个依据、判断的标准,如果没有这些标准,SQA人员就无法准确地判断开发活动中的问题,容易引发不必要的争论。
④第四,高级管理者必须重视软件质量保证活动。
在一些组织的软件生产过程中,高级管理者不重视软件质量保证活动,对SQA人员发现的问题不及时处理。
如此一来,软件质量保证就流于形式,很难发挥它应有的作用。
⑤第五,SQA人员在工作过程中一定要抓住问题的重点与本质,不要陷入对细节的争论之中。
SQA人员应集中审查定义的软件过程是否得到了实现,及时纠正那些疏漏或执行的不完全的步骤,以此来保证软件产品的质量。
⑥此外,做好软件质量保证工作还应该有一个计划,用以规定软件质量保证活动的目标,执行审查所参照的标准和处理方式。
对于一般性的项目,可采用通用的软件质量保证计划,而对于那些有着特殊要求的项目,则必须根据项目自身的特点来制定专门的计划。
2.简述软件质量保证的基本目标和任务。
答:
(1)SQA的基本目标——
软件质量保证的目标是以独立审查方式监控软件生产任务的执行,给开发人员和管理层提供反映产品质量的信息和数据,辅助软件工程组得到高质量的软件产品,其主要工作包括以下三个方面:
①通过监控软件的开发过程来保证产品的质量。
②保证生产出的软件和软件开发过程符合相应的标准与规程。
③保证软件产品、软件过程中存在的不符合问题得到处理,必要时将问题反应给高级管理者。
(2)任务——
①SQA审计与评审
SQA审计包括对软件工作产品、软件工具和设备的审计,评价这几项内容是否符合组织规定的标准。
SQA评审的主要任务是保证软件工程组的活动与预定义的软件过程一致,确保软件过程在软件产品的生产中得到遵循。
②SQA报告
SQA人员应记录工作的结果,并写到报告之中,发布给相关的人员。
SQA报告的发布应遵循三条基本原则:
SQA和高级管理者之间应有直接沟通的渠道、SQA的报告必须发布给软件工程组但不必发布给项目管理人员、在可能的情况下向关心软件质量的人发布SQA报告。
③处理不符合问题
通过在软件开发周期中尽可能早地预期或检测到不符合情况(错误),来防止错误的发生,并减少错误纠正的成本。
这是SQA的一个重要的任务,SQA人员对工作过程中发现的不符合问题进行处理,及时向有关人员及高级管理者反映。
3.什么是软件评审?
为什么需要进行软件评审?
答:
(1)评审是一些用于开发过程早期检查和纠正缺陷的有效方法。
它们可以用来检查未形成执行代码的文档的缺陷。
用评审发现缺陷的成本与测试相比较是相当低的,但是,作为缺陷检测技术,评审也不能完全代替代码的运行测试。
评审与测试是以不同的效益和效率发现不同类型缺陷的不同技术,它们相辅相成。
通过评审,可以为测试提供更有把握的编码,因而可以减少测试工作量。
同时,通过对测试规范进行评审,还可以改善测试过程本身的效率。
在软件开发期间,评审可以改善生产率、减少差错,以便在开发结束时可以得到更高质量的软件产品。
由此可见,评审确实是一种经济有效的静态测试形式,在软件寿命期的所有阶段都应当使用。
(2)在开发过程中,评审可以让我们获得以下收益:
①提高项目的生产率。
这是由于早期发现了错误,因而减少了返工时间,还可能减少测试时间。
②改善软件的质量。
③在评审过程中,使开发团队的其他成员更熟悉产品和开发过程。
④通过评审,标志着软件开发的一个阶段的完成。
⑤生产出更容易维护的软件。
主要原因是:
对于被评审的软件,评审者必须是非常熟悉的;同时,在评审过程中,一定会产生并利用很多证明文档,于是评审就迫使开发者产生出许多有用的文档,而这些文档如果不是因为评审,则在整个项目期间可能都不会生产。
此外,评审过程也将增加对所开发软件的理解。
4.软件评审包括哪些内容?
答:
(1)管理评审:
是最高管理者为评价管理体系的适宜性、充分性和有效性所进行的活动。
管理评审的主要内容是组织的最高管理者就管理体系的现状、适宜性、充分性和有效性以及方针和目标的贯彻落实及实现情况进行正式的评价。
其目的就是通过这种评价活动来总结管理体系的业绩,并从当前业绩上考虑找出与预期目标的差距,同时还应考虑任何可能改进的机会,并在研究分析的基础上,对组织在市场中所处地位及竞争对手的业绩予以评价,从而找出自身的改进方向。
(2)技术评审:
是一种同行审查技术。
其主要特点是由一组评审者按照规范的步骤对软件需求、设计、代码或其他技术文档进行仔细检查,以找出和消除其中的缺陷。
技术评审的目的是确保需求说明、设计说明书与最初的说明书保持一致,并按照计划对软件进行了正确的开发。
技术评审后,需要以书面形式对评审结果进行总结。
技术评审会分为正式和非正式两种,通常由技术负责人(技术骨干)制定详细的评审计划,包括评审时间、地点以及定义所需的输入文件。
(3)文档评审:
在软件开发的每个阶段,对该阶段所形成的文档进行评审,尽早发现问题,并及时采取措施予以解决,确保文档的内容正确,为软件产品的质量提供保障。
(4)过程评审:
是对软件开发过程的评审。
其主要任务是通过对流程的监控,保证SQA组织定义的软件过程在项目中得到了遵循,同时保证方针能更快更好地执行。
过程评审的对象是质量保证流程,而不是针对产品质量或者其他形式的工作产出。
5.软件评审主要有哪些方法(需简要说明)?
他们的异同点是什么?
答:
(1)特别检查:
最不正式的一种评审方法,通常应用于平常的小组合作。
(2)轮查:
又称为分配审查方法。
作者向评审者作简要介绍,但不参加评审过程;评审者独立进行评审,并记录发现的结果,准备报告。
(3)走查:
一种非正式的评审方法,在软件企业中被广泛应用。
产品的作者将产品向一组同事介绍,并收集他们的意见。
在走查中,作者占有主导地位,由作者描述产品的功能和结构以及完成任务的情况等。
走差的目的是希望参与评审的其他同事可以发现产品中的错误,了解产品,并对模块的功能和实现达成一致的意见。
(4)团队评审:
是有计划的和结构化的,非常接近于最正式的评审技术。
评审的参与者在评审会议前几天就拿到了评审材料,并对该材料独立研究。
同时,评审还定义了评审会议中的各种角色和相应的责任。
然而,评审的过程还不够完善,特别是评审后期的问题跟踪和分析往往被简化和忽略。
(5)检视:
和团队评审很相似,比团队评审更严格,是最系统化、最严密的评审方法。
普通的检视过程包括:
制定计划、准备和组织会议、跟踪和分析检视结果等。
在软件企业中,广泛采用的评审方法有检视、团队评审和走查。
作为重要的评审技术,它们之间的异同点如下表所示:
6.简述CMM的作用和关键域等级。
答:
(1)CMM的作用——
能力成熟度模型(CMM)是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。
CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化、使企业能够更好地实现商业目标。
实施CMM是改进软件质量的有效方法:
控制软件生产过程、提高软件生产者组织性和软件生产者个人能力的有效合理的方法软件工程和很多研究领域及实际问题有关,主要相关领域和因素有:
需求工程、软件复用,还有软件检查、软件计量、软件可靠性、软件可维修性、软件工具评估和选择等。
(2)关键域等级——
①成熟度等级1:
初始级。
处于这个最低级的组织,基本上没有健全的软件工程管理制度。
每件事情都以特殊的方法来做。
大多数行动只是应付危机,而非事先计划好的任务。
软件过程完全取决于当前的人员配备,具有不可预测性,人员变化了,过程也跟着变化。
结果,要精确地预测产品的开发时间和费用之类的重要项目,是不可能的。
②成熟度等级2:
可重复级。
在这一级,有些基本的软件项目的管理行为、设计和管理技术是基于相似产品中的经验,故称为“可重复”。
在这一级采取了一定的措施,这些措施是实现一个完备过程所必不可少的一步。
典型的措施包括仔细地跟踪费用和进度。
③成熟度等级3:
已定义级。
在第3级,已为软件生产的过程编制了完整的文档。
软件过程的管理方面和技术方面都明确地做了定义,并按需要不断地改进过程,而且采用评审的办法来保证软件的质量。
在这一级,可引用CASE环境来进一步提高质量和产生率。
而在第一级过程中,“高技术”只会使这一危机驱动的过程更混乱。
④成熟度等级4:
已管理级。
一个处于第4级的公司对每个项目都设定质量和生产目标。
这两个量将被不断地测量,当偏离目标太多时,就采取行动来修正。
利用统计质量控制,管理部门能区分出随机偏离和有深刻含义的质量或生产目标的偏离。
(统计质量控制措施的一个简单例子是每千行代码的错误率。
相应的目标就是随时间推移减少这个量。
)
⑤成熟度等级5:
优化级。
一个第5级组织的目标是连续地改进软件过程。
这样的组织使用统计质量和过程控制技术作为指导。
从各个方面获得的知识将被运用在以后的项目中,从而使软件过程融入正反馈循环,使生产率和质量得到稳步的改进。
7.测试计划的目的是什么?
测试计划文档的内容应该包括什么?
其中哪些是最重要的?
答:
(1)测试计划的目的——
测试计划将确定测试的具体目标,测试工作都应该是按计划进行的,没有测试计划的测试很难到达测试目的。
(2)测试计划文档的内容——
测试计划也属于测试准备活动之一,它是测试工作的详细指南,包含测试风险分析、策略、方法、资源、进度等重要内容。
8.简要描述主要的软件可靠性参数。
答:
(1)ETF:
在软件中的固有差错总数。
这个数假定是固定的和有限的。
(2)ETV:
在软件中的固有差错总数。
这个数假设是变化的,因为在开发或维护过程中,随时可能将一个新的差错引入到编码中。
(3)EC(t):
在某一时刻t已纠正的差错总数,或在使用或测试t时间后已检测出的差错总数。
(4)ED(t):
在某一时刻t已检测出的差错总数,或在使用或测试t时间后已检测出的差错总数。
(5)P:
在差错纠正活动期间所发生的测试循环次数或测试间隔数。
(6)EC(p):
直到第p次测试循环才被纠正的差错数。
它不包括在第p次循环期间纠正的差错。
(7)θ:
差错加速度,或故障率的变化。
(8)t:
累积到当前时间或累计到当前差错数的测试或运行时间。
(9)τ:
累积执行时间。
(10)κ:
常系数。
(11)λ0:
起始故障率。
(12)λp:
当前故障率。
(13)α:
增长率。
(14)N:
测试用例运行的总数。
(15)S:
成功的测试用例运行的总数。
9.简要描述提高软件可靠性的方法和技术(6条,每一点再略加说明)
答:
(1)建立以可靠性为核心的质量标准
①在软件项目规划和需求分析阶段就要建立以可靠性为核心的质量标准。
这个质量标准包括实现的功能、可靠性、可维护性、可移植性、安全性、吞吐率等等,②虽然还没有一个衡量软件质量的完整体系,但还是可以通过一定的指标来指定标准基线。
③软件质量从构成因素上可分为产品质量和过程质量。
(2)选择开发方法
①软件开发方法对软件的可靠性也有重要影响。
②目前的软件开发方法主要有Parnas方法、Yourdon方法、面向数据结构的Jackson方法和Warnier方法、PSL/PSA方法、原型化方法、面向对象方法、可视化方法、ICASE方法、瑞理开发方法等,其他还有BSP方法、CSF方法等。
(5)软件重用
软件重用不仅仅是指软件本身,也可以是软件的开发思想方法、文档,甚至环境、数据等,包括三个方面内容的重用:
①开发过程重用,指开发规范、各种开发方法、工具和标准等。
②软件构件重用,指文档、程序和数据等。
③知识重用,如相关领域专业知识的重用。
(6)使用开发管理工具
①开发一个大的软件系统,离不开开发管理工具,作为一个项目管理员,仅仅靠人来管理是不够的,需要有开发管理工具来辅助解决开发过程中遇到的各种各样的问题,以提高开发效率和产品质量。
②如Intersolv公司的PVCS软件开发管理工具,在美国市场占有率已超过70%,使用PVCS可以带来不少好处:
规范开发过程,缩短开发周期,减少开发成本,降低项目投资风险;自动创造完整的文档,便于软件维护;管理软件多重版本;管理和追踪开发过程中危及软件质量和影响开发周期的缺陷和变化,便于软件重用,避免数据丢失,也便于开发人员的交流,对提高软件可靠性,保证质量有很大作用。
(7)加强测试
①测试规范包括以下三类文档:
测试设计规范:
详细描述测试方法,规定该设计及其有关测试所包括的特性。
还应规定完成测试所需的测试用例和测试规程,规定特性的通过/失败判定准则。
测试用例规范:
列出用于输入的具体值及预期输出结果。
规定在使用具体测试用例时对测试规程的各种限制。
测试规程规范:
规定对于运行该系统和执行指定的测试用例来实现有关测试所要求的所有步骤。
②测试的方法多种多样:
走查,即手工执行,由不同的程序员(非该模块设计者)读代码,并进行评论。
机器测试,对给定的输入不会产生不合逻辑的输出。
程序证明或交替程序表示。
模拟测试,模拟硬件、I/O设备等。
设计审查,关于设计的所有各方面的小组讨论会,利用所获得的信息,找出缺陷及违反标准的地方等。
(8)容错设计
提高可靠性的技术一般可以分为两类,一类是避免故障,在开发过程中,尽可能不让差错和缺陷潜入软件,这类常用的技术有:
①算法模型化,把可以保证正确实现需求规格的算法模型化。
②模拟模型化,为了保证在确定的资源条件下的预测性能的发挥,使软件运行时间、内存使用量及控制执行模型化。
③可靠性模型,使用可靠性模型,从差错发生频度出发,预测可靠性。
④正确性证明,使用形式符号及数学归纳法等证明算法的正确性。
⑤件危险分析与故障树分析:
从设计或编码的结构出发,追踪软件开发过程中⑦潜入系统缺陷的原因。
⑥分布接口需求规格说明:
在设计的各阶段使用形式的接口需求规格说明,以便验证需求的分布接口实现可能性与完备性。
10.简述影响软件质量的因素。
答:
软件业通过多年的实践,总结出软件质量是人、过程和技术的函数,即Q={M,P,T}。
其中,Q表示软件质量,M表示人,P表示过程,T表示技术。
11.简述自动化测试的优点,并例举两种以上的自动化测试工具软件。
答:
(1)自动化测试的优点——
正确合理地实施自动化测试,能够充分地利用计算机计算的能力,提高软件测试的效率,缩短软件开发周期。
(2)自动化测试工具软件——
①白盒测试工具:
Logicscop软件、PRQA软件等。
②功能测试工具:
WinRunner、QARun等。
③负载压力测试工具:
LoadRunner、QALoad等。
④测试管理工具:
TestDirector、TestManager等。
12.简述软件过程度量的目标、对象、方法和结果。
答:
(1)软件过程度量的目标——
软件过程度量的目标是为了对软件过程的行为进行目标管理,并在度量的基础上对软件过程进行控制、评价和改善。
软件过程度量最终为项目管理和软件过程管理服务。
(2)软件过程度量的对象——
软件过程度量的对象主要包括三个:
工作产品、软件项目和过程。
工作产品指软件项目执行过程中产生的交付的和不交付的过程产品,如用户手册、同行评审记录。
同行评审记录虽然一般情况下不交付给顾客,但属于工作产品。
软件项目的度量主要集中在项目质量、成本、进度等方面。
过程度量主要从组织的角度考虑。
过程度量主要指对项目定义软件过程和组织标准软件过程的度量。
(3)软件过程度量的方法——
对软件过程的度量方法是过程性方法,软件过程行为是事件行为,对过程的度量也具有过程性,从制定度量目标到收集数据再到数据分析表示出了典型的度量阶段。
并且随着软件过程的进化,度量过程也随之进化发展,度量过程中各个阶段所用到的技术、方法是动态更新的。
软件过程度量的方法主要包括常用的采集方法、常用的数据分析方法。
(3)软件过程度量的结果——
产品度量的结果通常是软件产品的复杂度模型和可靠性模型等。
对过程度量的结果是模型(例如花费模型、质量模型等)、关系(例如人员投入与质量的关系、进度与质量的关系等)和由过程量化特征组成的过程基线。
软件产品度量和软件过程度量虽然存在不同,它们之间也有联系。
产品度量的内容可以是过程度量内容的一部分,因为对产品的度量结果是对产品的评价,而产品又是过程的结果,产品的好坏从一个方面体现了过程的好坏。
13.简要描述软件配置管理过程。
答:
(1)项目计划阶段
①CCB根据项目的开发计划确定各个里程碑和开发策略;
②CMO根据CCB的规划,制定详细的配置管理计划,交CCB审核;
③CCB通过配置管理计划后交项目经理批准,发布实施。
(2)项目开发和维护阶段:
这一阶段是项目研发的主要阶段。
①主要由CMO完成的管理和维护工作;
②由SIO和DEV具体执行软件配置管理策略;
③变更流程。
14.简述软件质量控制的基本概念并例举三种软件质量控制的基本方法。
答:
(1)软件质量控制的基本概念——
软件质量控制是一组由开发组织使用的程序和方法,使用它可在规定的资金投入和时间限制的条件下,提供满足客户质量要求的软件产品并持续不断地改善开发过程和开发组织本身,以提高将来生产高质量软件产品的能力。
(2)软件质量控制的基本方法——
目标问题度量法风险管理法PDCA质量控制法*
15.简述软件质量控制的实施过程。
答:
(1)预开发阶段
主要活动包括买主与客户研究建立需求,发布招标请求,选择资源,与开发者签订合同等。
(2)开发阶段
开发阶段的质量控制活动涵盖从产品开发到移交产品并获得客户的满意度结束的全过程。
(3)维护阶段
维护阶段的活动主要是对产品的更新,其目的是修复缺陷、适应需求变更或提高性能。
16.简要描述软件质量保证体系的目标。
答:
SQA的目的是向管理者提供对软件过程进行全面监控的手段,包括评审和审计软件产品和活动,验证它们是否符合相应的规程和标准,同时给项目管理者提供这些评审和审计的结果。
17.软件测试要经过哪些阶段?
这些测试阶段与软件开发各阶段之间有什么关系?
答:
(1)测试过程一般包括测试计划、测试设计、生成测试用例、执行测试用例、测试结果分析5个阶段。
(2)
18.简述软件配置管理的关键活动。
答:
(1)配置项识别
软件配置项包括计算机程序、描述计算机程序的文档和数据。
配置项的识别是配置管理活动的基础,也是制定配置管理计划的重要内容。
配置项可分基线配置项和非基线配置项。
配置项的标识和控制是指所有的配置项都应按照相关规定统一编号,按照相应的模板生成,并在模板中规定章节(部分)记录对象的标识信息。
在引入软件配置管理工具进行管理后,这些配置项都应以一定的目录结构保存在配置库中。
(2)工作空间管理
在引入配置管理工具之后,所有开发人员都会被要求把工作成果存放到由软件配置管理工具所管理的配置库中去,或是直接在软件配置管理工具提供的环境下工作。
所以为了让每个开发人员和各个开发团队能更好地分工合作,同时又互不干扰,对工作空间的管理和维护也成为了软件配置管理的一个重要的活动。
一般来说,比较理想的情况是把整个配置库视为一个统一的工作空间,然后再根据需要把它划分为个人(私有)、团队(集成)和全组(公共)这三类工作空间(分支),从而更好地支持将来可能出现的并行开发的需求。
每个开发人员按照任务的要求,在不同的开发阶段,工作在不同的工作空间上。
(3)版本控制
版本控制是软件配置管理的核心功能。
所有置于配置库中的元素都应自动予以版本的标识,并保证版本命名的唯一性。
(4)变更控制
基线和变更控制是紧密相连的。
也就是说在对各个SCI做出了识别,并且利用工具对它们进行了版本管理之后,如何保证它们在复杂多变的开发过程中真正地处于受控的状态,并在任何情况下都能迅速的恢复到任一历史状态就成为了软件配置管理的另一重要任务。
因此,变更控制就是通过结合人的规程和自动化工具,以提供一个变化控制的机制。
SCI分为基线配置项和非基线配置项两大类,所以变更控制的对象主要是指配置库中的各基线配置项。
(5)状态报告
配置状态报告就是根据配置项操作数据库中的记录来向管理者报告软件开发活动的进展情况。
这样的报告应该是定期进行的,并尽量通过计算机辅助软件工程(CASE)工具自动生成,用数据库中的客观数据来真实地反映各配置项的情况。
配置状态报告应根据报告赵忠反映当前基线配置项的状态,以作为对开发进度报告的参照。
同时也能从汇总根据开发人员对配置项的操作记录来对开发团队的工作关系做一定的分析。
(6)配置审计
配置审计的主要作用是作为变更控制的补充手段,来确保某一变更需求已被切实实现。
在某些情况下,它被作为正式的技术复审的一部分,但当软件配置管理是一个正式的活动时,该活动由SQA人员单独执行。
软件配置管理的对象是软件研发活动中的全部开发资产。
所有这一切都应作为配置项纳入管理计划统一进行维护和集成。