![软件测试于质量保证题库及软件测试与质量保证_第1页](http://file4.renrendoc.com/view/03c20aadbaec745ea977205fc0c71765/03c20aadbaec745ea977205fc0c717651.gif)
![软件测试于质量保证题库及软件测试与质量保证_第2页](http://file4.renrendoc.com/view/03c20aadbaec745ea977205fc0c71765/03c20aadbaec745ea977205fc0c717652.gif)
![软件测试于质量保证题库及软件测试与质量保证_第3页](http://file4.renrendoc.com/view/03c20aadbaec745ea977205fc0c71765/03c20aadbaec745ea977205fc0c717653.gif)
![软件测试于质量保证题库及软件测试与质量保证_第4页](http://file4.renrendoc.com/view/03c20aadbaec745ea977205fc0c71765/03c20aadbaec745ea977205fc0c717654.gif)
![软件测试于质量保证题库及软件测试与质量保证_第5页](http://file4.renrendoc.com/view/03c20aadbaec745ea977205fc0c71765/03c20aadbaec745ea977205fc0c717655.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一、选择题(每题只有一个选项,将你认为合理的选项填在题前括号内,每小题2分,共16分)(D)1、较实用的软件测试停止标准是()。A、测试超产过了预定时间,则停止测试。B、根据单位时间内查出故障的数量决定是否停止测试。C、执行了所有的测试用例,但并没有发现故障,则停止测试。D、用图表示出某个测试阶段中单位时间检查出的故障数量,通过对图中曲线的分析,确定应继续测试还是停止测试。(C)2、软件测试的目的是:A、表明软件是正确的 B、评价软件质量C、尽可能发现软件中的错误 D、判定软件是否合格(A)3、()不是常见的覆盖率标准。A、函数覆盖 B、数据流覆盖 C、逻辑覆盖 D、功能覆盖(B)4、将基于功能的和基于实现的测试方法结合在一起的动态测试类型,我们称这种测试为()。A、白盒测试 B、灰盒测试 C、黑盒测试 D、基于故障的测试(B)5、下列不隶属于白盒测试方法的是():A、控制流测试 B、健壮性测试 C、数据流测试 D、变异测试(A)6、项目管理三要素不包括()。 A、Programming B、Process C、Problem D、Process(D)7、下列选项中,不是Mercury公司测试工具的是()。A、LoadRunner B、WinRunner C、TestDirector D、Rebot(A)8、下面()方法能够有效地检测输入条件的各种组合可能引起的错误。A、因果图 B、等价类划分 C、边界值分析 D、错误推测(D)1、通常,()是在编码阶段进行的测试,它是整个测试工作的基础。A、系统测试 B、确认测试 C、集成测试 D、单元测试(A)2、据权威部门统计,软件错误产生的原因分布图表中,如下()选项是导致软件错误的主要原因:A、软件需求规格说明错误B、设计错误C、编码错误D、测试错误(C)3、软件测试充分性理论是由()最先提出的。A、Deutsch和Willis B、McCalletal.C、Goodenough和Gerhart D、Evansh和Marciniak(C)4、软件测试风险管理包含()和风险控制两方面内容。A、 风险排序 B、风险识别 C、风险评估 D、风险分析(D)5、下列不属于黑盒测试方法的是()。A、等价类划分 B、状态测试 C、边界值分析 D、变异测试(A)6、常见的覆盖率标准不包括()。A、函数覆盖 B、逻辑覆盖 C、数据流覆盖 D、功能覆盖(B)7、因果图是()公司最先发明并实施的。A、SUN B、IBM C、Microsoft D、ORACLE(D)8、针对下面一个程序段:if ((A>1)&&(B==0))S1;If ((A==2)||(X>1))S2;其中,S1、S2均为语句块。现在选取测试用例:A=2B=0X=3,该测试用例满足了()。A、路径覆盖 B、条件组合覆盖C、判定覆盖 D、语句覆盖(A)1、下列各测试工具中隶属于Mercury公司产品的是()A、WinRunner B、JUnit C、Purify D、WebStress(D)2、下面关于软件测试的说法,其中正确的是()经过测试没有发现错误,说明程序正确 成功的测试是没有发现错误的测试测试的目标是为了证明程序没有错误 D、成功的测试是发现了迄今尚未发现的错误的测试(B)3、在某种类型会议上,由小组成员阅读程序,以发现程序错误,同时测试员利用测试数据人工运行程序并得出输出结果,然后由参加者对结果进行审查,以达到测试的目的。这种测试方法是()。A、软件审查 B、代码走查 C、技术评审 D、代码审查(C)4、测试充分性准则内容不包括()。A、空集不充分性 B、单调性 C、可靠性 D、复杂性(A)5、控制流覆盖准则约束最弱的是()。A、点覆盖 B、边覆盖 C、条件覆盖 D、路径覆盖(C)6、设计测试用例时候,()是用得最多的一种黑盒测试方法。A、因果图 B、等价类划分 C、边界值分析 D、错误推测(B)7、软件测试风险管理包含()和风险控制两方面内容。A、风险识别 B、风险评估 C、风险排序 D、风险分析(A)8、对下面的计算个人所得税程序中if(income<800) taxrate=0;elseif(income<=1500) taxrate=0.05;elseif(income<2000) taxrate=0.08;elsetaxrate=0.1;满足判定覆盖的测试用例是()。A、income=(799,1500,1999,2000) B、income=(799,1501,2000,2001)C、income=(800,1500,2000,2001) D、income=(800,1499,2000,2001)二、判断题(判断下列题目是否正确,如果正确请打“√”,错误请打“×”每小题2分,共8分)(√)1、技术评审即是一种技术手段,也是一种质量管理手段。(×)2、设计-实现-测试,软件测试是开发后期的一个阶段。(×)3、单元测试仅仅证明了被测程序单元做了什么。(×)4、由于函数覆盖率是基于代码的,所以也可以把函数覆盖归入黑盒测试的范畴。(√)1、在软件测试中,测试预言是一种检验待测系统在特定执行下是否正确运行的方法。(×)2、在白盒测试中,如果覆盖率达到100%,就基本可以保证把所有的隐藏程序缺陷都已经揭露出来了。(×)3、软件测试的目的在于发现错误、改正错误。(√)4、由于函数覆盖率是基于代码的,所以也可以把函数覆盖归入白盒测试的范畴。(×)1、软件测试等于程序测试。(×)2、我是个很棒的程序员,我无需进行单元测试。(√)3、在白盒测试中,即使覆盖率达到100%,也无法保证所有的隐藏程序缺陷都已经被揭露出来。(×)4、由于函数覆盖率是基于代码的,所以也可以把函数覆盖归入黑盒测试的范畴。(×)1、软件故障是导致软件失效的必要和充分要素。(√)2、同行评审的主要目标在于检测错误、核对与标准的偏离。(√)3、在任何软件机构中,定期、不定期的培训、再培训都是必须而且是必要的。(√)4、在整个机构中使用基础设施防护与改进部件的主要目标是在机构积累的SQA经验基础上消除或至少降低出错率。(×)5、所有SQA活动和项目里程碑的完成或项目里程碑的检验是同时发生的。(×)6、DanielGalin等提在20世纪50年代建立的经典质量费用模型,提供了一种以经济学观点把与产品质量保证相关的费用非类的方法学。(√)7、一旦更改过的SCI替换了前面的SCI,就认为完成了软件的一个新版本。(√)8、软件质量成本是一个投资问题,而不是成本问题!(×)9、SEICMM评估标准,ISO9001和ISO9000-3标准是典型的项目过程标准。(√)10、软件质量保证的独特性是由软件产品不同于其他制造产品的本质决定的。(√)1、在专业的软件开发、维护中,SQA环境是建立、执行SQA方法时必须首要考虑的问题。(×)2、如何看待软件产品内部的缺陷,开发者和用户的立场是一致的。(√)3、专家观点通过引进补充的外部能力到机构内部开发过程中来而支持质量评估工作。(×)4、质量管理标准是专业标准,它们向开发组提供方法学指南。(√)5、软件生命周期模型强调的是直接开发活动,而没有指示出开发过程的顾客参与。(×)6、规程具有机构范围的适用性,它的执行和具体执行的人或组织背景有着密切关系。(×)7、CAPA的目的在于检测、处理、改正软件缺陷。(×)8、项目进展控制SQA工具有Gatt图、日历、数据流图和活动网络图。(√)9、IEEE、ISO、DOD、ANSI、EIA都是著名的SQA标准开发机构。(√)10、在科学和工程中,如果没有度量,对一切都没有一个定量的了解,那么这种科学和工程既不是有效的,也不是实际的。(×)1、在软件产品制定生产计划阶段,不必进行重大的SQA活动。(√)2、软件故障是导致软件失效的必要,而非充分要素。(×)3、只有客户才会有兴趣透彻定义它的需求以确保他约定的软件产品的质量。(√)4、软件质量系统之间各不相同,说明机构SQA系统构建存在固有灵活性。(√)5、质量管理标准指导软件开发、维护和基础设施的管理。它的重点是需要什么,但没有指明如何达到标准要求的努力细节。(×)6、通常,检查表的使用的是强制性的。(×)7、CAPA的执行从根本上依赖于正确的指导和经常的培训。(√)8、软件质量度量面临的特有困难根植于包含于软件质量度量的测量(参数)中。(√)9、一旦更改过的SCI替换了前面的SCI,就认为完成了软件的一个新版本。(×)10、SQA项目过程标准如CMM、ISO9000-3标准。三、填空题(每空1分,共14分;请把答案书写在相应横线上。)1、软件测试过程包含的测试活动有测试计划,测试设计,测试实施,测试执行,缺陷跟踪和测试评估2、软件测试策略的确定过程通常经历确定测试需求、评估风险、确定测试策略三个阶段组成。3、变异测试的理论基础是程序员能力假设和组合效应假设。4、软件缺陷打开/关闭图表、根本原因图表、软件缺陷关闭周期表是常用的软件缺陷跟踪图表。5、软件测试规范可以分为行业规范和操作规范。1、通常,由人工进行的静态测试方法包括桌面检查、代码审查、代码走查和技术评审。2、典型的测试设计活动包括测试用例设计、测试过程设计、设计驱动程序和稳定的桩。3、按照测试的层次和策略,软件测试可以分为单元测试、集成测试、确认测试和系统测试。4、为了考察测试用例的重要性,我们可以从有效性、可重用性、易组织性、可评估性、可管理性五方面理解。5、面向对象集成测试常见方法包括抽样测试、正交矩阵(阵列)测试。1、面向对象测试充分性三个常用标准是基于状态的覆盖率、基于约束的覆盖率和基于代码的覆盖率。2、常见的程序分析视角有句法视角,功能视角、文本视角和计算流视角3、按照测试用例的设计方法,软件测试可以分为白盒测试、黑盒测试和灰盒测试。4、我们可以按照编写过程、执行过程和组织过程三个纬度对测试用例属性进行归类。5、单元测试内容包含如下方面:模块接口测试、边界条件测试、错误处理测试、局部数据结构测试和重要路径测试。1、软件质量工程包括软件质量保证、软件质量规划和软件质量控制三大方面。2、McCall模型产品修改纬度的质量因素有可维护性、可测试性、灵活性。3、面向对象模型不同于其他模型的主要特征是组件的密集重用。4、有两种同行评审方法学:审查和走查。5、RMA可以划分成三组类别内部风险管理措施、分包风险管理措施和顾客风险管理措施。6、支持性质量手段有模板和检查表。7、依据软件系统的生命周期和其他阶段,软件质量度量划分为软件过程度量和软件产品度量。8、软件配置发布的版本有基线版本、中间版本、修订版本。9、SQA标准被划分成软件质量管理标准和软件项目过程标准两类。10、软件缺陷的固有特征有软件缺陷的固有性、软件缺陷的敏感性、软件缺陷的感染性。1、McCall模型划分了软件运行、软件转移、软件修改三个纬度的11个软件质量因素。2、螺旋模型任何一次迭代都可划分为制定计划、风险分析和化解、工程和顾客评估四个项限。3、依据合同评审的目标对合同评审主题进行分类为建议草案评审主题和合同草案评审主题两种类型。4、典型的版本方针包括严格-单一活动版本方针、多版本方针。5、软件对属于各种质量因素的需求的符合性是由软件质量度量来测量的。6、CAPA过程的成功运行包含如下活动:信息收集、信息分析、解决方案和改进方法的建立、改进方法的执行、跟踪。7、常见的软件配置演化模型有线性演化模型和树演化模型。8、软件更改的质量保证工作需要每个更改的SCI的质量保证和整个新软件系统版本的质量保证两个级别的活动。9、从内容和重点上我们可以把质量管理标准划分成认证标准和评估标准两种类型。10、测试人员、SQA单位是SQA专职人员。1、CMM内容包含初始级、可重复级、已定义级、已管理级和可优化级五个等级。2、软件质量保证的目标包括面向产品的软件开发和面向过程的软件维护两大方面。3、开发生命周期阶段SQA部件可以划分成三类:评审、专家观点、软件测试、软件维护SQA部件和由第三方/分包商使用的SQA部件。4、版本方针和更改方针是维护方针的主要组成。5、外部参与方可被分类为分包商、COTS软件和重用软件模块的供货商和顾客自身三组。6、在任何机构中,CAPA要正确发挥作用需要CAPA记录流的跟踪、CAPA执行的跟踪和CAPA执行结果的跟踪三个要的跟踪任务。7、软件更改的质量保证工作需要每个更改的SCI的质量保证和整个新软件系统版本的质量保证两个级别的活动。8、软件过程度量可以进一步划分为软件过程质量度量、软件过程进度度量和软件过程生产率度量。9、从内容和重点上我们可以把质量管理标准划分成认证标准和评估标准两种类型。10、通常,软件质量的管理部件有项目进展控制、软件质量度量、软件质量费用和可用于控制软件维护的工具SQA管理工具。四、名词解释(每小题3分,共18分)1、软件测试风险软件测试风险是指软件测试过程出现的或潜在的问题2、动态测试技术通过在抽样测试数据上运行程序来检验程序的动态行为和运行结果以发现缺陷。3、确认测试确认测试是验证软件的功能和性能及其它特性是否与用户的要求一致。对软件的从功能、性能、可靠性、易用性等方面作全面的质量检测,帮助软件企业找出产品存在的问题,出具相应的产品质量报告。4、条件组合覆盖条件组合覆盖是逻辑覆盖标准的一种,它要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。5、L10N软件本地化6、(软件产品的)FURPSFURPS即软件系统的功能、可使用性、可靠性、性能和支持等特性。1、L10N&&I18N软件本地化和国际化2、软件测试项目管理软件测试项目管理就是以测试项目为管理对象,通过一个临时性的专门的测试组织,运用专门的软件测试知识、技能、工具和方法,对测试项目进行计划、组织、执行和控制,并在时间成本、软件测试质量等方面进行分析和管理活动。3、软件测试文档测试文档是对要执行的软件测试及测试的结果进行描述、定义、规定和报告的任何书面或图示信息。4、测试用例测试用例是为了特定目的而设计的测试数据及相关测试规程的一个特定集合,即为有效发现软件缺陷的最小测试执行单元。5、白盒测试白盒测试是指测试人员根据程序的内部结构特性和与程序路径相关的数据特性,设计测试数据组成测试用例执行程序的一种动态测试。6、无效等价类无效等价类是指对于程序的规格说明来说,不合理的,没有意义的输入数据的集合。软件测试软件测试是为了发现错误而执行程序的过程。或软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例运行程序,以及发现错误的过程。2、测试用例的有效性软件测试用例是测试人员测试过程中的重要参考依据;不同测试人员根据相同测试用例所得到的输出应该是一致的。3、软件测试规范软件测试规范是对软件测试流程的过程化,并对每一个过程元素进行明确界定,而形成的完整的规范体系。4、条件覆盖条件覆盖隶属控制流覆盖标准的范畴,它不仅要求每个语句至少执行一次,而且要求使得判定表达式中每个条件都取得各种可能的结果5、TDD测试驱动开发(TestDrivenDevelopment)6、α测试α测试是由用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。这是在受控制的环境下进行的测试。Crosby软件质量的定义系统、部件或过程满足规定需求的程度。2、软件可靠性(IEEE)软件可靠性是指一个系统或组件在某个特定时期、特定条件下完成所需完成的功能的能力。3、规程规程是完成某件事情或行动的特定方式,即规程是为了完成一个任务,根据给定方法所执行的详细活动或过程。4、开发风险软件开发风险是软件开发任务或环境的一种状态或性质,如果忽略它,将增加软件项目失败的可能。5、(软件工程领域)模板在软件工程领域,模板指的是小组或机构创建的,用于编辑报告以及其他形式文档的格式。6、软件配置管理一个负责应用(计算机化的或非计算机化的)技术工具和管理规程、使之能够完成为维护SCI和软件配置版本所需任务的SQA部1、DanielGalin软件质量保证的扩展定义软件质量保证是一个有系统的、有计划的行动集合,它是提供软件产品开发、维护过程符合其已建立的技术需求以及跟上计划安排和在预算限制之内进行管理上的需求充分信任所必需的。2、合同评审合同评审是一个指导评审建议草案和合同文档的SQA部件。3、规程规程是完成某件事情或行动的特定方式,即规程是为了完成一个任务,根据给定方法所执行的详细活动或过4、4W1HW1H即WHAT,WHEN,WHERE,WHO和HOW。他们具体含义如下:WHAT--Whatactivitieshavetobeperformed?WHEN--WhenShouldtheactivitybeperformed?WHERE--Whereshouldtheactivitybeperformed?WHO--Whoshouldperformtheactivity?HOW--Howshouldeachactivitybeperformed?5、受控文档受控文档是那些目前就对软件系统的开发、维护以及与目前和将来顾客关系的管理重要或可能变得重要的,并且处于控制状态下的文档。6、软件质量度量一个项目具有给定质量属性的程度定量测度;或一个函数,其输入为软件数据、输出为单一的数值,该值可以被理解为软件具有给定质量属性的程度Pressman软件质量的定义软件质量是符合明确陈述的功能性能需求、明确文档化了的开发标准和所有专业开发预期的隐含特性。2、软件开发风险软件开发风险是软件开发任务或环境的一种状态或性质,如果忽略它,将增加软件项目失败的可能。3、合同评审合同评审是一个指导评审建议草案和合同文档的SQA部件。4、质量记录质量记录是一种特殊类型的受控文档。它是面向顾客的文档,用于证实同顾客需求的全面符合性以及贯穿于开发和维护全过程的软件质量保证系统的有效运行5、软件可靠性管理软件可靠性管理指通过一个程序使软件的可靠性得到最优化的过程。此程序着重于软件防错(softwareerrorprevention),发现并清除fault;此程序着重于采用一定措施并根据诸如资源,进度表及性能的约束条件使可靠性最大化。6、软件配置版本软件配置版本是指在给定时间点上组成软件系统的、已批准而且文档化的SCI版本的集合。五、问答题(每小题4分,共20分)谈谈你对变异测试原理的理解。(1)使用变异算子对被测程序做微小的合乎语法的变动,每个新程序称为一个变异体;(2)根据已有的测试数据运行变异体;(3)比较变异体和原程序的运行结果:如果两者不同就称该测试数据将该变异体杀死了;否则称该变异体是活的。2、请阐述软件测试的原则。(1)尽早的和不断的测试应作为软件开发人员的座右铭。(2)测试用例应当由测试数据和与之对应的预期结果组成。(3)测试用例应包括合理的输入条件和不合理的输入条件。(4)严格执行测试计划,排除测试的随意性。(5)充分注意测试当中的群体现象。(6)要对每一个测试结果作全面的检查。(7)保存测试计划、测试用例、出错统计和最终分析报告,为维护工作提供充分的资料。3、测试用例设计的考虑因素有哪些?(1)测试用例必须具有代表性、典型性;[1分](2)测试用例要浓缩系统设计;[1分](3)测试用例既要考虑正确的输入,也需要考虑错误或异常的输入,以及促使这些错误、异常发生的条件;[1分](4)用户测试用例设计需要考虑用户实际使用场景。[1分]4、集成测试策略中,渐增式与非渐增式集成策略各有何优、缺点?为什么通常采用渐增式?非渐增式集成策略是将所有的模块一次连接起来,简单、易行,节省机时,但测试过程中难于查错,发现错误也很难定位,测试效率低。[1分]渐增式集成策略是将模块一个一个地连入系统,每连入一个模块,都要对新系统进行测试。这种组装测试方案比较非渐增式,容易查出错误及进行错误定位,有利于查出模块接口部分的错误,因此测试效率高。但渐增式较费机时。[2分]比较两种集成策略,显然渐增式有利于实现测试的目标,故通常采用渐增式进行组装测试。[1分]5、请评价白盒测试?(1)[2分]优点迫使测试人员去仔细思考软件的实现;可以检测代码中的每条分支和路径;揭示隐藏在代码中的错误;对代码的测试比较彻底;最优化。(2)[2分]缺点昂贵;无法检测代码中遗漏的路径和数据敏感性错误;白盒测试不验证规格的正确性。黑盒测试的特点有哪些?(1)不考虑程序内部结构和内部特性;[1分](2)测试人员只需知道该程序输入和输出之间的关系或功能;[1分](3)设计测试用例的依据是需求规格说明书或用户手册;[1分](4)尤其适合于一些第三方软件测试,由于无法得到源程序,无法用其它方法进行测试。[1分]等价类划分的步骤如何?(1)根据输入条件把数目极多的输入数据划分成若干有效等价类和若干无效等价类;[2分](2)设计一个测试用例,使其覆盖尽可能多的尚未被覆盖的有效等价类,重复该步骤,直至所有有效等价类均被覆盖;[1分](3)设计一个测试用例,使其覆盖一个的尚未被覆盖的无效等价类,重复该步骤,直至所有无效等价类均被覆盖。[1分]3、谈谈你对“持续的软件测试”的理解。持续的软件测试有两方面的含义:(1)完整的软件测试工作应该贯穿整个软件生存周期存周期[2分](2)软件开发不同阶段都有软件测试工作,即软件测试工作的各个步骤分布在整个软件生存周期中。[2分]4、一般的软件项目管理与软件测试项目管理之间的区别由那些?(1)对于一般的软件项目管理,成本和进度控制是最重要的;[2分](2)而在软件测试项目管理中,质量第一是基本点,所有测试项目管理工作都要围绕提高产品质量展开,最终保证在合理的成本、进度下满足用户需求或期望。[2分]5、与桌面检查相比,代码审查与代码走查有哪些优点?(1)桌面检查即程序员自己检查自己的程序。通常,由于程序员思维定势、心理因素的限制,使得桌面检查效率不高。[2分](2)代码走查、代码审查采用成组方式进行,一旦发现错误就知道了错误的位置和性质,从而大大降低了调试费用和成本;另外代码走查、代码审查可以一次发现一批错误,错误发现效率较高。[2分]1、请比较白盒测试与黑盒测试方法?(1)白盒测试只考虑测试软件产品,它不保证完整的需求规格是否被满足。而黑盒测试只考虑测试需求规格,它不保证实现的所有部分是否被测试到。[1分](2)黑盒测试会发现遗漏的缺陷,指出规格的哪些部分没有被完成。而白盒测试会发现代理方面的缺陷,指出哪些实现部分是错误的。[1分](3)白盒测试比黑盒测试成本要高得多。它需要在测试可被计划前产生源代码,并且在确定合适的数据和决定软件是否正确方面需要花费更多的工作量。[1分](4)一个白盒测试的失败会导致一次修改,这需要所有的黑盒测试被重复执行并且重新决定白盒测试路径。[1分]测试项目中,主要的测试文档有哪些?测试计划、测试设计规格说明、测试用例说明、测试规程规格说明、测试执行报告、测试日志、测试缺陷报告、测试总结报告等3、谈谈你对“软件测试的必要性”的理解。软件测试的必要性主要体现在如下方面:程序代码最终体现了软件的质量;软件测试力争发现更多的缺陷尽量减少残留的缺陷;软件测试提高软件的正确性;软件测试建立对软件的信心;软件测试掌握软件的质量水平;软件测试是软件质量保证的重要手段。4、请阐述测试用例在代码走查中的作用。(1)代码走查中,测试用例并不是关键,也并不是仅想验证这几个测试用例运行是否正确,人脑毕竟比计算机慢太多;(2)这里测试用例是作为怀疑程序逻辑与计算错误的启发点,在随测试实例游历程序逻辑时,在怀疑程序的过程中发现错误。5、测试覆盖准则的作用如何?1)定量地规定软件测试需求,指导测试数据的选择;(2)度量测试数据集,揭示软件特定特征的能力;(3)对测试结果和软件可靠性评估具有重要影响。专业软件开发的SQA环境有哪些特征?遵守合同约定;服从顾客供货商关系;需要协同工作;需要同其他开发组的合作和协调;同其它软件系统的接口;项目组有变化时项目继续进行;需要持续维护软件系统若干年。请指出走查、审查这两种同行评审方法的不同?走查和审查的区别是其正式性的等级。其中,审查是两者之中更为正式。[2分]走查的发现限于被评审文档的意见,而审查的发现还同改进开发方法自身的工作相结合。所以和走查相比,审查对一般的SQA做出了更大贡献。请详细描述软件质量费用的经典模型?在经典软件质量费用模型中,软件质量费用可以划分为控制费用、控制失效费用。其中,控制费用被进一步细化为预防费用和评价费用;控制失效费用进一步细化为内部失效费用、外部失效费用。预防费用包括建立软件质量基础设施、更新并改进基础设施以及完成其运行所需的常规活动的投资。评价费用花在特定项目或软件系统中软件错误的检测上。内部失效费用是指改正在顾客现场安装软件之前实施设计评审、软件测试及验收测试时检测到的错误而产生的费用。(4)外部失效费用限定为改正由顾客或维护组在顾客现场安装软件系统之后检测到的失效的费用。认证标准和评估标准的主要区别?认证标准的重点是外部的--支持供货商顾客关系[2分],而评估标准的重点是内部的。因为评估标准关注的是软件过程改进[2分]。5、CCB的决策机制有哪些种类?你认为其中那种决策机制更实用?(1)最普遍的方法是投票决定。每个代表都投票,采用少数服从多数的方式。这种民主的做法能够充分调动CCB成员的机机性;但是少数服从多数含义模糊,该决策模式也容易产生一些政见。(2)极端的做法是所有决策都交给一个人,这种安排鼓励在决策中灵活考虑各种意见,但压抑了CCB其他成员的积极性;(3)第三种可行的决策机制是寻求CCB成员的一致意见,同时提供合理的跳出机制。综合考虑上述三种不同CCB决策机制,第三种策略最为实用。6、传统质量成本和现代质量成本的主要区别有哪些?传统的质量成本集中在与失效有关的事件和活动,如损坏、缺陷等。传统质量成本通常以报废、返工、返修等形式出现;[2分]现代的质量成本的目的则在于通过预防和评估活动中的适当投入,减少与失效有关的活动。[2分]Crosby,Juran,Pressman软件质量定义的比较。(1)Crosby的定义指的是写好的软件符合由顾客和它的专业组编制的规格说明书的程度。这也意味着包含在规格说明中的错误是不予考虑的,也不降低软件质量—显然这是不足的。[1分](2)Juran的定义旨在达到顾客满意度,这就要求对检查改正顾客的需求规格书投入大量工作。但该定义的主要缺点是免除了顾客对软件规格书准确性、完备性的责任。[1分](3)Pressman定义为SQA提出了要由开发者满足的三个要求:特定功能需求,它主要是指软件系统的输出;在合同中提出的软件质量标准;反映当今水平的专业方法的良好软件工程方法的发展水平。实际上,Pressman定义提供了测试满足需求程度的操作方向。谈谈你对合同评审过程的理解?合同评审是一个指导评审建议草案和合同文档的SQA部件。其过程分为两个阶段进行:[1分](1)第一阶段—提交给可能顾客之前的建议草案评审;[1分](2)第二阶段—签约前的合同草案评审,该阶段在建议和合同谈判期达成的理解基础上评审合同草案。[1分]每个评审阶段完成后,要求建议组与法律部进行必要的修改、补充和改正。[1分]请列举典型的软件质量基础设施SQA部件?(不少于5个)规程与工作条例、支持性质量手段、员工培训与认证、改正性和预防性措施、配置管理、文档编制控制请指出软件质量费用扩展模型对软件质量费用经典模型的扩展。仔细考察经典软件质量费用模型的考察,我们将发现经典软件质量费用模型没有能够涵盖管理以及管理性失效导致的软件质量费用。[2分]软件质量费用扩展模型拓展了经典软件质量费用模型,以涵盖管理人员对软件质量总费用的‘贡献’—软件质量的扩展模型:相对经典软件质量费用,软件质量费用扩展模型添加了管理性准备与控制费用和管理性失效费用。[2分](管理性准备与控制费用同实施的预防性管理失效或减少这些这些失效的预期出现的活动相关联;)请描述ISO9000-3质量管理系统的基本原理(1)顾客关注。机构依靠它们的顾客,所以应当理解当前的与未来的顾客需要;(2)领导--建立并维护一个积极的内部环境中行使领导权,以实现机构的目标;(3)人们的投入。人是机构之本,他们在各机构层次的全身心投入使得他们的能力能用于为机构谋益;(4)过程方法--当把活动与资源作为过程管理的时候,就更有效地达到理想的结果;(5)管理理的系统方法--把过程作为一个系统管理;(6)持续改进--对全面性能正在进行的改进应当在机构的日程上优先;(7)决策制定的实在方法。有效决策是建立在信息分析的基础上的;(8)相互支持的供货商关系。一个机构和它的供货商是互相依赖时,相互支持的供货由关系增强双方创造增加值的能力6、传统质量成本和现代质量成本的主要区别有哪些?传统的质量成本集中在与失效有关的事件和活动,如损坏、缺陷等。传统质量成本通常以报废、返工、返修等形式出现;现代的质量成本的目的则在于通过预防和评估活动中的适当投入,减少与失效有关的活动。在软件产品与其他工业产品之间的区别主要有哪些?并描述这些不同?软件产品和其他工业产品的主要区别有如下几点:(1)产品的复杂性;产品的复杂性能够用产品许可的操作方式的数目来度量:工业产品,即使是高级机器,也不允许由其不同的机器组合建立的几千种以上的操作方式;一个典型的软件,人们可以发现上百万种软件操作的可能。(2)产品的可见性;工业产品是可见的,而软件产品是不可见的。工业产品的大多数缺陷可在制造过程中检测出来;然而软件产品的缺陷是不可见的,软件包中的组件可能从一开始就缺失了。(3)产品开发和制造过程的特殊性。同工业产品相比,软件产品不能在生产过程的所有三个阶段检测缺陷。能够检测缺陷的唯一阶段是开发阶段。高度螺旋模型每次迭代必需的活动包含哪些?顾客的需求规格说明、意见与更改要求;开发者的计划制定活动;开发者的风险分析与化解;开发者设计活动;开发者关于编码、测试、发布的构造活动;顾客的评价3、请从SQA的角度,阐述分别编写用户需求文档和系统需求文档的理由?(1)很自然人们会想到只有客户才会有兴趣透彻定义它的需求以确保他约定的软件产品的质量。他编制的需求文档是对低质量的基础防护;(2)然而我们对各种软件质量因素的分析表明,开发者可以添加代表它自身利益的需求,例如可重用性需求、可验证性需求等;许多情况下,某些没有包括在典型客户需求文档中的质量因素确是开发者感兴趣的。而,诸如可移植性、可重用性、可验证性等质量因素,客户很少感兴趣。这也就是人们为何分别编制客户需求文档和系统需求文档的理由。4、主要的SQA维护基础设施工具有哪些?主要的SQA维护基础设施工具有软件维护规程和工作条例、支持性软件质量手段、维护组的培训和认证、预防性和改正性措施、软件配置管理、软件维护文档和质量记录等5、软件质量度量过程模型包含哪些活动?(1)软件质量需求的定义;(2)软件质量度量和评估的准备;(3)软件质量度量的执行、分析和确认6、传统质量成本和现代质量成本的主要区别有哪些?(1)[2分]传统的质量成本集中在与失效有关的事件和活动,如损坏、缺陷等。传统质量成本通常以报废、返工、返修等形式出现;(2)[2分]现代的质量成本的目的则在于通过预防和评估活动中的适当投入,减少与失效有关的活动。六、应用题(每小题8分,共24分)1、某软件需求规格说明中包含如下要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件修改。但是,如果第一列字符不正确,则输出信息L;如果第二列字符不是数字,则给出信息M。请采用因果图进行分析,并绘制出该软件需求规格说明对应的因果图。[4分]识别出所有原因和所有结果,并给出原因、结果元的编号如下:编号原因1第一列字符为A2第一列字符为B3第二列字符为一个数字11中间原因21修改文件22给出信息L23给出信息M(2)[4分]识别所有原因与原因之间,原因与结果之间,结果与结果之间的关系,再次接触上绘制出因果图如下图所示。2、某程序模块功能描述如下:用户输入分别合乎规则输入年、月、日,程序即给出相应日期的下一天。假设限定该模块年份在区间[1840,3000],月份、日规定满足公历约束。试分别选取测试数据对年进行(1)基本边界值测试和(2)健壮性测试。假设该模块的输入:年、月、日分别使用变量year,month,day表示。[4分]基本边界值测试的测试数据year值在有效取值区间内取极值,其他变量取正常值。依据基本边界值测试基本原理,测试数据选择如下:组别测试数据1year=1840,month=1,day=122year=1841,month=2,day=203year=2002,month=9,day=14year=2999,month=11,day=105year=3000,month=3,day=30[4分]健壮性测试的测试数据year值在整个取值区间内取极值,其他变量取正常值。依据健壮性测试基本原理,数据选择如下:组别测试数据1year=1840,month=1,day=122year=1841,month=2,day=203year=2002,month=9,day=14year=2999,month=11,day=105year=3000,month=3,day=306year=1839,month=4,day=197year=3001,month=8,day=223、某程序模块如下,其中,S1,S2均为语句块:if((A>1)AND(B==0))S1;if((A==2)OR(X>1))S2;请把上述代码转换成程序流程图分别选择测试数据使得(2)判定覆盖、(3)条件组合覆盖标准都能够得到满足。(1)[2分]程序流程图(2)(2)[2分]判定覆盖标准A=2,B=0,X=3;A=1,B=1,X=1(3)[4分]条件组合覆盖A=2,B=0,X=3;A=1,B=1,X=1;A=2,B=1,X=1A=1,B=0,X=21、阅读如下C程序:要求:请绘制出左边代码对应的流图;计算所得流图的环形复杂度要求:请绘制出左边代码对应的流图;计算所得流图的环形复杂度V(G);假设输入的取值范围为(1000,20001),请用基本路径测试方法为变量year设计测试用例,使其满足基本路径测试的要求。 if(year%4==0){ if(year%100==0){ if(year%400!=0) leap=1; else leap=0; }elseleap=1; }else leap=0;returnleap;}[3分]流图(2)[1分]V(G)=e-n+2=14-12+2=判定点数+1=区域数=4(3)[4分]问题3要求设计满足基本路径覆盖的测试用例,而且输入的取值范围(1000,2001)。所选择的测试数据只要使得独立路径数量得到满足即可。典型的测试数据为:测试用例编号测试数据预期执行结果测试路径1year=1001leap=01-2-3-11-122year=1004leap=11-2-4-5-10-11-123year=1100leap=01-2-4-6-7-9-10-11-124year=2000leap=11-2-4-6-8-10-11-122、被测程序段为:可供选择的测试数据组合如下:可供选择的测试数据组合如下:xyⅠ31Ⅱ-12Ⅲ03Ⅳ12找出实现(1)语句覆盖;(2)判定覆盖;(3)条件覆盖至少要选择的数据组。(1)III [2分] (2)III,IV [3分] (3)I,III [3分]3、拟对如下的软件结构:请图形的方式分别给出(1)深度优先的自顶向下集成测试策略、(2)自底向上集成测试策略的对上述软件结构进行集成测试的详细集成过程。假设集成测试过程中必须的驱动模块、桩模块分别编号:MX、SX,其中X为整数即驱动模块或桩模块编号。[4分]深度优先的自顶向下集成测试策略(2)[4分]自底向上集成测试策略1、有一段子程序:procedureexample(y,z:real;varx:real)begin if (y>1)and(z=0)thenx:=x/y; if (y=2)or(x=l)thenx:=x+l;end.该子程序接受x,y,z的值,并将计算结果x的值返回给调用程序。答题要求:(1)把上述子程序转化成程序流程图。(2)用白盒法设计测试用例,并使得所设计的一组或几组测试数据能够满足条件组合覆盖标准。 (1)程序流程图(2)[4分]用白盒法中条件组合覆盖设计测试用例:①y=2,z=0,x=4;②y=2,z=1,x=1;③y=1,z=0,x=2;④y=1,z=1,x=1.2、某程序模块功能描述如下:用户输入分别合乎规则输入年、月、日,程序即给出相应日期的下一天。假设限定该模块年份在区间[1840,3000],月份、日规定满足公历约束。试分别选取测试数据对月份进行(1)基本边界值测试和(2)健壮性测试。、假设该模块的输入:年、月、日分别使用变量year,month,day表示。(1)[4分]基本边界值测试的测试数据:在各变量取值有效区间内,month取极值,其他变量取任意正常值。按照基本边界值测试原理,测试数据选取如下:组别测试数据1year=1840,month=1,day=122year=1841,month=2,day=203year=2002,month=9,day=14year=2999,month=11,day=105year=3000,month=12,day=30(2)[4分]健壮性测试的测试数据:month值在整个取值空间中选择,其他变量取有效值区间中的任意值。按照健壮性测试原理,测试数据选取如下:组别测试数据1year=1840,month=1,day=122year=1841,month=2,day=203year=2002,month=9,day=14year=2999,month=11,day=105year=3000,month=12,day=306year=1839,month=0,day=197year=3001,month=13,day=223、变量的命名规则一般规定如下:变量名的长度不多于40个字符,第一个字符必须为英文字母,其他字母可以英文字母、数字以及下划线的任意组合。请用等价分类法设计测试用例。(1)划分等价类[4分]输入条件合理等价类不合理等价类长度(1)小于40个字符(2)等于40个字符(5)大于40个字符第一个字符(3)英文字母(6)非英文字母其他字母(4)英文字母、数字或下划线的任意组合空格标点符号运算符号其他可显示字符(2)设计测试用例[4分]测试数据测试范围期望结果s_name12等价类(1),(3),(4)有效a1b2c3d4e5f6g7h8i9j1k2l3m4n5o6p7q8r9s_tr等价类(2),(3),(4)有效a1b2c3d4e5f6g7h8i9j1k2l3m4n5o6p7q8r9s_trff等价类(5)无效234name等价类(6)无效abgh等价类(7)无效Ab!2f等价类(8)无效Fg+ghh等价类(9)无效H@gh等价类(10)无效软件测试与质量保证一、软件测试的定义定义:软件测试是为了发现错误而执行程序的过程。或者说软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例,并利用这些测试用例去运行程序,以发现程序错误的过程。二、测试的目的: 基于不同的立场,存在着两种完全不同的测试目的。从用户的角度出发,普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。GrenfordMyers软件测试目的(1)测试是程序的执行过程,目的在于发现错误;(2)一个好的测试用例在于能发现至今未发现的错误;(3)一个成功的测试是发现了至今未发现的错误的测试换言之,测试的目的是系统地找出软件中潜在的各种错误和缺陷。能够证明软件的功能和性能与需求说明相符合。测试不能表明软件中不存在错误,它只能说明软件中存在错误。三、软件测试的原则 1.应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。2.测试用例应由测试输入数据和对应的预期输出结果这两部分组成。3.程序员应避免检查自己的程序。4.在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。5.充分注意测试中的群集现象。
经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。6.严格执行测试计划,排除测试的随意性。7.应当对每一个测试结果做全面检查。8.妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。四、软件测试的对象 软件测试并不等于程序测试。软件测试应贯穿于软件定义与开发的整个期间。需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象。五、确认和验证: 为把握软件开发各个环节的正确性,需要进行各种确认和验证工作。确认(Validation),是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。需求规格说明的确认程序的确认验证(Verification),试图证明在软件生存期各个阶段,以及阶段间的逻辑协调性、完备性和正确性。七、测试信息流测试信息流软件配置:软件需求规格说明、软件设计规格说明、源代码等;测试配置:测试计划、测试用例、测试程序等;测试工具:测试数据自动生成程序、静态分析程序、动态分析程序、测试结果分析程序、以及驱动测试的测试数据库等等。测试结果分析:比较实测结果与预期结果,评价错误是否发生。排错(调试):对已经发现的错误进行错误定位和确定出错性质,并改正这些错误,同时修改相关的文档。修正后的文档再测试:直到通过测试为止。通过收集和分析测试结果数据,对软件建立可靠性模型利用可靠性分析,评价软件质量:—软件的质量和可靠性达到可以接受的程度;—所做的测试不足以发现严重的错误;如果测试发现不了错误,可以肯定,测试配置考虑得不够细致充分,错误仍然潜伏在软件中。八、测试与软件开发各阶段的关系软件开发过程是一个自顶向下,逐步细化的过程软件计划阶段定义软件作用域软件需求分析建立软件信息域、功能和性能需求、约束等软件设计把设计用某种程序设计语言转换成程序代码测试过程是依相反顺序安排的自底向上,逐步集成的过程。九、软件测试用例设计两种常用的测试方法黑盒测试白盒测试(一)黑盒测试这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。黑盒测试又叫做功能测试或数据驱动测试。黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误:是否有不正确或遗漏了的功能?在接口上,输入能否正确地接受?能否输出正确的结果?是否有数据结构错误或外部信息(例如数据文件)访问错误?性能上是否能够满足要求?是否有初始化或终止性错误?用黑盒测试发现程序中的错误,必须在所有可能的输入条件和输出条件中确定测试数据,来检查程序是否都能产生正确的输出。但这是不可能的。假设一个程序P有输入量X和Y及输出量Z。在字长为32位的计算机上运行。若X、Y取整数,按黑盒方法进行穷举测试:可能采用的测试数据组:232×232=264如果测试一组数据需要1毫秒,一年工作365×24小时,完成所有测试需5亿年(二)白盒测试此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。软件人员使用白盒测试方法,主要想对程序模块进行如下的检查:对程序模块的所有独立的执行路径至少测试一次;对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次;在循环的边界和运行界限内执行循环体;测试内部数据结构的有效性,等。对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字。给出一个小程序的流程图,它包括了一个执行20次的循环。包含的不同执行路径数达5^20条,对每一条路径进行测试需要1毫秒,假定一年工作365×24小时,要想把所有路径测试完,需3170年白盒测试的测试用例设计十、白盒测试的测试用例设计(一)逻辑覆盖逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的技术。它属白盒测试。语句覆盖判定覆盖条件覆盖判定-条件覆盖条件组合覆盖路径覆盖。举例:所有路径为:L1(a->c->e),L2(a->b->d),L3(a->b->e),L4(a->c->d)依据以上推导出来的结果就可以设计满足要求的测试用例。(二)语句覆盖语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。在图例中,正好所有的可执行语句都在路径L1上,所以选择路径L1设计测试用例,就可以覆盖所有的可执行语句。测试用例的设计格式如下
【输入的(A,B,X),输出的(A,B,X)】为图例设计满足语句覆盖的测试用例是:
【(2,0,4),(2,0,3)】覆盖ace【L1】(三)判定覆盖判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。判定覆盖又称为分支覆盖。对于图例,如果选择路径L1和L2,就可得满足要求的测试用例【(2,0,4),(2,0,3)】覆盖ace【L1】
【(1,1,1),(1,1,1)】覆盖abd【L2】如果选择路径L3和L4,还可得另一组可用的测试用例:
【(2,1,1),(2,1,2)】覆盖abe【L3】
【(3,0,3),(3,1,1)】覆盖acd【L4】(四)条件覆盖条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。在图例中,我们事先可对所有条件的取值加以标记。例如,对于第一个判断:条件A>1取真为,取假为
条件B=0取真为,取假为对于第二个判断:条件A=2取真为,取假为
条件X>1取真为,取假为测试用例覆盖分支条件取值【(2,0,4),(2,0,3)】L1(c,e)【(1,0,1),(1,0,1)】L2(b,d)【(2,1,1),(2,1,2)】L3(b,e)或测试用例 覆盖分支 条件取值【(1,0,3),(1,0,4)】L3(b,e)【(2,1,1),(2,1,2)】L3(b,e) (五)判定-条件覆盖判定-条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断中的每个条件的可能取值至少执行一次。测试用例 覆盖分支条件取值【(2,0,4),(2,0,3)】L1(c,e)【(1,1,1),(1,1,1)】L2(b,d)由多个基本判断组成的流程图(六)条件组合覆盖条件组合覆盖就是设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。记①A>1,B=0作
②A>1,B≠0作
③A≯1,B=0作④A≯1,B≠0作⑤A=2,X>1作
⑥A=2,X≯1作
⑦A≠2,X>1作
⑧A≠2,X≯1作测试用例覆盖条件 覆盖组合【(2,0,4),(2,0,3)】(L1) ①,⑤【(2,1,1),(2,1,2)】(L3) ②,⑥【(1,0,3),(1,0,4)】(L3) ③,⑦【(1,1,1),(1,1,1)】(L2) ④,⑧(七)路径测试路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。测试用例通过路径覆盖条件【(2,0,4),(2,0,3)】ace(L1) 【(1,1,1),(1,1,1)】abd(L2)【(1,1,2),(1,1,3)】abe(L3) 【(3,0,3),(3,0,1)】acd(L3) (八)基本路径集测试覆盖关键路径。得到程序的控制流程图/程序图SequenceIfWhileSequenceIfWhile计算环路复杂性的方法:-V(G)=简单判定节点数+1V(G)=E-N+2(E是边数,N是定点数)V(G)=封闭区域数+1V(G)=4根据环路复杂性产生基本路径集Path1:1-2-3-8Path2:1-2-3-8-1-2-3Path3:1-2-4-5-7-8Path4:1-2-4-6-7-8准备测试用例覆盖所有基本路径十一。黑盒测试的测试用例设计等价类划分边界值分析错误推测法因果图(一)等价类划分等价类划分是一种典型的黑盒测试方法,使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。划分等价类
等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。测试某等价类的代表值就等价于对这一类其它值的测试。等价类的划分有两种不同的情况:
①有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。 ②无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。划分等价类的原则。
(1)如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。例如,在程序的规格说明中,对输入条件有一句话:“……项数可以从1到999……”则有效等价类是“1≤项数≤999”两个无效等价类是“项数<1”或“项数>999”。在数轴上表示成:(2)如果输入条件规定了输入值的集合,或者是规定了“必须如何”的条件,这时可确立一个有效等价类和一个无效等价类。例如,在Pascal语言中对变量标识符规定为“以字母打头的……串”。那么所有以字母打头的构成有效等价类,而不在此集合内(不以字母打头)的归于无效等价类。(3)如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类。
(4)如果规定了输入数据的一组值,而且程序要对每个输入值分别进行处理。这时可为每一个输入值确立一个有效等价类,此外针对这组值确立一个无效等价类,它是所有不允许的输入值的集合。例如,在教师上岗方案中规定对教授、副教授、讲师和助教分别计算分数,做相应的处理。因此可以确定4个有效等价类为教授、副教授、讲师和助教,一个无效等价类,它是所有不符合以上身分的人员的输入值的集合。(5)如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。例如,Pascal语言规定“一个语句必须以分号‘;’结束”。这时,可以确定一个有效等价类“以‘;’结束”,若干个无效等价类“以‘:’结束”、“以‘,’结束”、“以‘’结束”、“以LF结束”等。确立测试用例
在确立了等价类之后,建立等价类表,列出所有划分出的等价类。再从划分出的等价类中按以下原则选择测试用例:
(1)为每一个等价类规定一个唯一编号;
(2)设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;
(3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。用等价类划分法设计测试用例的实例
在某一PASCAL语言版本中规定:“标识符是由字母开头,后跟字母或数字的任意组合构成。有效字符数为8个,最大字符数为80个。” 并且规定:“标识符必须先说明,再使用。”“在同一说明语句中,标识符至少必须有一个。”用等价类划分的方法,建立输入等价类表:下面选取了9个测试用例,它们覆盖了所有的等价类。
①VARx,T1234567:REAL;BEGINx:=3.414;T1234567:=2.732;...…(1),(2),(4),(8),(9),(12),(14)
②VAR:REAL;(3)
③VARx,:REAL;(5)④VART12345678:REAL;(6)⑤VART12345......:REAL;(7)
多于80个字符⑥VART$:CHAR;(10)⑦VARGOTO:INTEGER;(11)⑧VAR2T:REAL;(13)⑨VARPAR:REAL;(15)
BEGIN......
PAP:=SIN(3.14*0.8)/6;(二)边界值分析边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充。人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。比如,在做三角形计算时,要输入三角形的三个边长:A、B和C。我们应注意到这三个数值应当满足A>0、B>0、C>0、A+B>C、A+C>B、B+C>A,才能构成三角形。但如果把六个不等式中的任何一个大于号“>”错写成大于等于号“≥”,那就不能构成三角形。问题恰出现在容易被疏忽的边界附近。这里所说的边界是指,相当于输入等价类和输出等价类而言,稍高于其边界值及稍低于其边界值的一些特定情况。使用边界值分析方法设计测试用例,首先应确定边界情况。应当选取正好等于,刚刚大于,或刚刚小于边界的值做为测试数据,而不是选取等价类中的典型值或任意值做为测试数据。(三)错误推测法人们也可以靠经验和直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的例子。这就是错误推测法。错误推测法的基本想法是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。十二。软件测试的策略测试过程按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能组装测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。系统测试把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。(一)单元测试(UnitTesting)单元测试又称模块测试,是针对软件设计的最小单位─程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。1.单元测试的内容在单元测试时,测试者需要依据详细设计说明书和源程序清单,了解该模块的I/O条件和模块的逻辑结构,主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。(1)模块接口测试在单元测试的开始,应对通过被测模块的数据流进行测试。测试项目包括:调用本模块的输入参数是否正确;本模块调用子模块时输入给子模块的参数是否正确;全局量的定义在各模块中是否一致在做内外存交换时要考虑:文件属性是否正确;OPEN与CLOSE语句是否正确;缓冲区容量与记录长度是否匹配;在进行读写操作之前是否打开了文件;在结束文件处理时是否关闭了文件;正文书写/输入错误,I/O错误是否检查并做了处理。(2)局部数据结构测试不正确或不一致的数据类型说明使用尚未赋值或尚未初始化的变量错误的初始值或错误的缺省值变量名拼写错或书写错不一致的数据类型全局数据对模块的影响(3)路径测试选择适当的测试用例,对模块中重要的执行路径进行测试。应当设计测试用例查找由于错误的计算、不正确的比较或不正常的控制流而导致的错误。对基本执行路径和循环进行测试可以发现大量的路径错误。(4)错误处理测试出错的描述是否难以理解出错的描述是否能够对错误定位显示的错误与实际的错误是否相符对错误条件的处理正确与否在对错误进行处理之前,错误条件是否已经引起系统的干预等(5)边界测试注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。2.单元测试的步骤模块并不是一个独立的程序,在考虑测试模块时,同时要考虑它和外界的联系,用一些辅助模块去模拟与被测模块相联系的其它模块。驱动模块(driver)桩模块(stub)──存根模块驱动模块(driver)──相当于所测模块的主程序。它接收测试数据,把这些数据传送给所测模块,最后再输出实测结果。桩模块(stub)──存根模块。用以代替所测模块调用的子模块。如果一个模块要完成多种功能,可以将这个模块看成由几个小程序组成。必须对其中的每个小程序先进行单元测试要做的工作,对关键模块还要做性能测试。对支持某些标准规程的程序,更要着手进行互联测试。有人把这种情况特别称为模块测试,以区别单元测试。(二)组装测试(IntegratedTesting)组装测试(集成测试、联合测试)通常,在单元测试的基础上,需要将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失;一个模块的功能是否会对另一个模块的功能产生不利的影响;各个子功能组合起来,能否达到预期要求的父功能;全局数据结构是否有问题;单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。在单元测试的同时可进行组装测试,发现并排除在模块连接中可能出现的问题,最终构成要求的软件系统。子系统的组装测试特别称为部件测试,它所做的工作是要找出组装后的子系统与系统需求规格说明之间的不一致。通常,把模块组装成为系统的方式有两种一次性组装方式增殖式组装方式1.一次性组装方式(bigbang)它是一种非增殖式组装方式。也叫做整体拼装。使用这种方式,首先对每个模块分别进行模块测试,然后再把所有模块组装在一起进行测试,最终得到要求的软件系统。2.增殖式组装方式这种组装方式又称渐增式组装首先对一个个模块进行模块测试,然后将这些模块逐步组装成较大的系统在组装的过程中边连接边测试,以发现连接过程中产生的问题通过增殖逐步组装成为要求的软件系统。(1)自顶向下的增殖方式这种组装方式将模块按系统程序结构,沿控制层次自顶向下进行组装。自顶向下的增殖方式在测试过程中较早地验证了主要的控制和判断点。选用按深度方向组装的方式,可以首先实现和验证一个完整的软件功能。(2)自底向上的增殖方式这种组装的方式是从程序模块结构的最底层的模块开始组装和测试。因为模块是自底向上进行组装,对于一个给定层次的模块,它的子模块(包括子模块的所有下属模块)已经组装并测试完成,所以不再需要桩模块。在模块的测试过程中需要从子模块得到的信息可以直接运行子模块得到。自顶向下增殖的方式和自底向上增殖的方式各有优缺点。一般来讲,一种方式的优点是另一种方式的缺点。(3)混合增殖式测试衍变的自顶向下的增殖测试首先对输入/输出模块和引入新算法模块进行测试;再自底向上组装成为功能相当完整且相对独立的子系统;然后由主模块开始自顶向下进行增殖测试。自底向上-自顶向下的增殖测试首先对含读操作的子系统自底向上直至根结点模块进行组装和测试;然后对含写操作的子系统做自顶向下的组装与测试。回归测试这种方式采取自顶向下的方式测试被修改的模块及其子模块;然后将这一部分视为子系统,再自底向上测试。关键模块问题在组装测试时,应当确定关键模块,对这些关键模块及早进行测试。关键模块的特征:
①满足某些软件需求;
②在程序的模块结构中位于较高的层次(高层控制模块);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论