1.什么是软件测试?软件测试的目的是什么??使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预算结果与实际结果之间的差别。1确保产品完成了它所承诺或公布的功能,并且所有用户可以访问到的功能都有明确的书面说明。2确保产品满足性能和效率的要求3确保产品是健壮的和适应用户环境的2.简述软件测试的发展和意义。经验阶段、理论总结阶段、测试技术与测试工具发展阶段随着计算机技术的迅速发展和广泛深入的应用,软件质量问题已成为开发和使用软件人员关注的焦点。而由于软件本身的特性,软件中的错误是不开避免的。不断改进的开发技术和工具只能减少错误的发生,但是却不可能完全避免错误。因此为了保证软件质量,必须对软件进行测试。软件测试是软件开发中必不可少的环节,是最有效的排除和防治软件缺陷的手段,是保证软件质量、提高软件可靠性的最重要手段。3.简述软件测试的六条基本原则。原则1:穷尽测试是不可能的。原则2:测试工作具有创造性,但很困难。原则3:测试旨在防止错误的发生。原则4:测试是有风险的。原则5:测试需要有计划性。原则6:测试需要有独立性。4.软件测试有何局限性?输入/状态空间的无限性故障巧合性系统缺陷的不确定5.软件测试和软件开发有何关系?需求验收测试回规格说明系统测试归设计集成测试测实现单元测试试6.软件测试的生命周期是什么?各阶段的任务是什么?计划:标志测试条件(确定测试什么)和测试的优先级设计:设计测试用例(确定怎么测试)开发:测试开发(设计脚本、数据等)执行:执行测试用例评估:将测试结果与预算结果进行比较7.什么是测试用例?测试用例有哪些类型?在软件测试中,我们将测试输入数据的定义和对预期测试结果的描述称为测试用例。纯数据型测试用例、文件型测试用例、操作序列型测试用例、程序性测试用例。8.软件测试分为几个步骤?每一步骤的任务是什么?9.什么是黑盒测试和白盒测试?黑盒测试:黑盒测试又称功能测试、数据驱动测试或基于规格说明的测试,是一种从用户观点出发的测试,被用来证实软件功能的正确性和可操作性。白盒测试:白盒测试又称结构测试、逻辑驱动测试或基于程序的测试,用来分析程序的内部结构。10.什么是回归测试?回归测试的方法有哪些?一方面检查错误是否真的修改,另一方面还要检查此错误的修改是否引入新的错误,这就需要将已经测试过的测试用例拿来重新进行测试,这就是回归测试。方法:线性方程技术、符号执行技术、路径分析技术、基于程序流图的技术、选择回归测试技术、改错性回归测试、增量性回归测试11.软件审查有哪些步骤?审查的内容有哪些?步骤:制定计划、预审、准备、审查会、返工、终审○1验证是保证软件正确地实现了一些特定功能的一系列活动,即保证软件以正确的方式来做了这个事件。1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程。2.程序正确性的形式证明,即采用形式理论证明程序符合设计规约规定的过程。3.评审、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。○2确认是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件做了你所期望的事情。1.静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性。2.动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。12.什么是自动化测试?自动化测试包括几个阶段?自动测试就是通过计算机运行来进行测试。测试需求分析阶段、测试计划阶段、测试方案设计阶段、测试用例实现阶段、测试执行阶段、评估与关闭阶段。13.黑盒测试的主要方法有哪些?等价类划分、因果图、正交实验设计法、边值分析、判定表驱动法等14.边界值选择有几种方法?五点法:选择最大值、略低于最大值、正常值、最高于最小值、最小值。七点法:选择略大于最大值、最大值、略低于最大值、正常值、略高于最小值、最小值、略低于最小值。15.针对三角形问题,假设a,b,c3个边的边界都是1~200,应用健壮性测试的方法,基于单缺陷假设,设计边界值测试数据,同时给出每一组数据的预期结果a={0,1,2,100,199,200,201}b={0,1,2,100,199,200,201}c={0,1,2,100,199,200,201}用例ABC预期输出11001000非法输入21001001等腰三角形31001002等腰三角形4100100100等边三角形5100100199等腰三角形6100100200非三角形7100100201非法输入81000100非法输入91001100等腰三角形101002100等腰三角形11100100100等边三角形12100199100等腰三角形13100200100非三角形14100201100非法输入150100100非法输入161100100等腰三角形172100100等腰三角形18100100100等边三角形19199100100等腰三角形20200100100非三角形21201100100非法输入16.写出白盒测试的所有逻辑覆盖准则。FOSTER的ESTCA覆盖准则[规则1]对于ArelB(rel可以是,=和)型的分支谓词,应适当地选择A与B的值,使得测试执行到该分支语句时,AB,A=B和AB的情况分别出现一次。[规则2]对于Arel1C(rel1可以是或是,A是变量,C是常量)型的分支谓词,当rel1为时,应适当地选择A的值,使:A=C–M(M是距C最小的容器容许正数,若A和C均为整型时,M=1)。同样,当rel1为时,应适当地选择A,使:A=C+M。[规则3]对外部输入变量赋值,使其在每一测试用例中均有不同的值与符号,并与同一组测试用例中其它变量的值与符合不一致。WOODWARD等人的层次LCSAJ覆盖准则第一层:语句覆盖第二层:分支覆盖第三层:LCSAJ覆盖,即程序中每个LCSAJ至少测试一次第四层:两两LCSAJ覆盖…第n+2层:每n个首尾相连的LCSAJ组合测试一次。17.从供选择的答案中选出应填入下面有关软件测试的叙述的()内的正确答案。软件测试方法可分为黑盒测试和白盒测试两种。黑盒测试是通过分析程序的(功能)来设计测试用例的方法。除了测试程序外,它还适用于对(需求分析)阶段的软件文档进行测试。白盒测试是根据程序的(内部逻辑)来设计测试用例的方法。除了测试程序外,它也适用于对(软件详细设计)阶段的软件文档进行测试。白盒法测试程序时常按照给定的覆盖条件选取测试用例。(判定)覆盖比(语句)覆盖严格,它使得每一个判定的每一条分支至少经历一次。(判定/条件)覆盖既是判定覆盖,又是条件覆盖,但它不保证使各种条件都能取到所有可能的值。(多重条件)覆盖比其他条件都要严格,但它不能保证覆盖程序中的每一条路径。单元测试一般以(白盒法)为主,测试的依据是(模块功能规格说明)18.画出下列伪代码程序的程序框图,设计语句覆盖和路径覆盖的测试用例。19.针对图4.36,写出路径表达式(不循环、循环一次);再根据路径表达式计算路径数(不循环、循环一次)。20.下面是快速排序算法中的一趟划分算法,其中datalist是数据表,它有两个数据成员:一个是元素类型为Element的数据V,另一个是数组大小n。算法中用到两个操作:一是取某元素V[i]的关键码操作getKey(),一是交换两数组的操作Swap()。ntPartition(datalist&list,intlow,inthigh){/在区间[low,high]以第一个对象为基础进行一次划分,k为返回基准对象回放位置ntk=low;Elementpivot=list.V[low];//基准对象or(inti=low+1;i=high;i++)//检测整个序列,进行划分if(list.V[i].getKey()pivot.getKey()&&++k!=1)Swap(list.V[k],list.V[i]);//小于基准的交换到左侧去Swap(list.V[low],list.V[k]);//将基准对象就位returnk;//返回基准对象位置}(1)试画出它的程序流程图;2试利用路径覆盖法为它设计足够的测试用例(循环次数限定为0次,1次)。21.集成测试中自顶向下和自底向上方法有什么区别?各自用在哪种类型的软件测试中?自顶向下法:从顶层控制对象开始,以控制层次的顺序,向被测系统逐次增加构件,以论证系统的稳定性。应用:增量式开发、并行软件开发、框架开发。自底向上法:从层次的底部向上集成构件,从具有最少的相依性构件开始,按照相依性的次序将构件加入受测试的系统,以证实稳定性。应用:在子系统的迭代和增量开发中,支持单位范围内的测试。重要需求的构件在底层。22.集成测试有哪些主要的方法?一次集成、自顶向下集成、自底向上集成、协作集成、基干集成、层次集成、客户/服务器集成、分布服务集成、高频集成、基于调用图集成23.软件测试是软件质量保证的主要手段之一,测试的费用已超过(软件开发费用)的30%以上。因此,提高测试的有效性十分重要。“高产”的测试是指(用少量的测试用例运行程序,发现被测程序尽可能多的错误)。根据国家标准GB8566-88《计算机软件开发规范》的规定,软件的开发和维护划分为8个阶段,其中,单元测试是在(实现)阶段完成,集成测试的计划是在(概要设计)阶段制定的,确定测试的计划是在(需求分析)阶段制定的。24.集成测试也叫做(组装测试)或(联合测试)。通常,在(单元测试)的基础上,将所有模块按照设计要求组装成为系统。子系统的集成测试特别称为(部件测试),它所做的工作是找出子系统和系统需求规格说明之间的(不一致)。需求考虑的问题是:在把各个模块连接起来的时候,穿越模块接口的数据是否会(丢失);一个模块的功能是否会对另一个模块的功能产生不利的影响;各个(子功能)组合起来,能否达到预期的要求的(父功能);(全局数据结构)是否有问题;单个模块的误差累积起来是否会放大。25.什么是软件的系统测试?传统的系统测试是指将通过确认测试的软件作为整个基于计算机系统的元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的集成测试和确认测试。26.安装测试要检验的内容有哪些?测试目的是什么?安装测试、卸载测试、文字验证。目的:(1)确保该软件在正常情况和异常情况下都能进行安装。(2)核实软件在安装后可立即正常运行。27.什么是软件的兼容性测试?兼容性测试是验证软件之间是否能正确地交互和共享信息,从而确定软件的说明书对硬件环境的描述是否正确、合理。28.安全性测试的目的是什么?查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力,根据安全指标不同,测试策略也不同,确保软件不会去完成没有预先设计的功能。30.什么是软件的恢复测试?恢复测试是测试一个系统从灾难或出错中能否很好地恢复的过程,如遇到系统崩溃、硬件损坏或其他灾难性出错。31.比较测试和测试的异同。Alpha测试(α测试)是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,α测试不能由程序员或测试员完成。Beta测试(β测试)是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,β测试不能由程序员或测试员完成。区别:Alpha测试由开发人员或测试人员在场,可随时记录下错误和使用中出现的问题;Beta测试开发人员和测试人员都不在场。32.什么是软件的负载测试?负载测试是通过改变系统负载方式、增加负载等来发现系统中所存在的性能问题。负载测试是一种测试方法,可以为压力测试、容量测试所采取。33.压力测试可以分为哪两种?可以分为稳定性测试和破坏性测试。稳定性压力测试是在选定的压力值下,持续运行24小时以上的测试。破坏性压力测试是通过不断加压的手段,快速造成系统的崩溃或让问题明显地暴露出来。34.容量测试的目的是什么?通过测试预先分析出反映软件