软件测试技术基础教程(第3版)综合练习题及答案.docx
一、MVfA1 .软件测试的目的是尽可能多的找出软件的缺陷.O2 .Beta测试是验收测试的一种.O3 .验收测试是由最终用户来实施的,O4 .单元测试能发现约80%的软件缺陷.C5 .代码评审是检连源代码是否达到模块设计的要求.O6 .自底向上集成需要测试员编写羲动程序.O7 .负我测试是验证要检骁的系统的能力圾离能达到什么程度,()8 .我们可以人为的使得软件不存在配置问fiS,O9 .集成测试计划在需求分析阶段末提交.O二、不定项选邦题I.软件脸收测试的合格通过准则是:O.软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求.B.所有测试项没有残余一汲、二级和三级错误.C.立项审批去、需求分析文档、设计文档和编码实现一致,D.粉收测试工件齐全。2 .软件测试计划评审会需要哪些人员参加?OA.项目经理8. SQA负货人C.配置负贲人D.测试蒯3 .下列关于alpha渊试的描述中正确的是:OA. alpha测试需要用户代表参加B. alpha测试不需要用户代表参加C. alpha测试是系统测试的一种D. alpha测试是验收测试的一种三、填空题1 .软件蛤收测试包括一、三种类型。2 .系统测试的策略有功能测试、切用性测试、等15种方法.3 .设计系统测试计划需要参考的项目文档有、和迭代计划。-1.对面向过程的系统采用的集成策略有、两种.综合试题一答案一、判断感1 .软件测试的目的是尽可能多的找出软件的缺陷。O软件测试的目的就是为了发现软件中的缺陷,从这个意义上面说上面的这个论断是正确的.不少人会认为软件测试可以保证软件的杨J其实这个观点跄错误,冽试只是软件质疑控制中的一个角色,其活动并不能达成软件质Ift保证的效果。所以不要认为一个公司里面如果有了软件测试人员,产品的质里就会好起来.2 .Beta测试是验收测试的一种.OBeat测试和验收测试是两种不同的测试.验收测试的目的是为了以发现”未实现的箭求”为目的,以评估“适合使用”为目标,该类测试的不是以发现缺陷为主要目的.beta测试是一模拟真实的使用环境从而发现缺陷的一种测试,所以两者之间的是非包容关系.3 .验收测试是由最终用户来实施的.O上面说到了验4!(测试的目的和目标,所以验收测试也可是是软件生产的企业内部人员来实据。例如产品经理。当软件以项目的形式出现,那么验收濯武由最终用户来实俺的情况是比较长见的。仅足而于产品形式的软件,生产企业内部的验收测试会更多。4 .第元测试能发现的80%的软件缺陷.O同样这一题目也没有标准答案.因为该数据的来源和其统计的方法,样本都没有一个工业标准.这样出来的数据同样不具有权威性。这里我可以说一个简单的例子,在用ASP,Php这类脚本语宫开发网页的时候是根本没有火朵的单元测试,那么这样的数字应用在网站开发上面是否有意义.还是侪得商榷的.所以这道题日出的不好.没有明确的答案.错误5.代码评审玷检杳源代码是否达到模块设计的要求.O代码审食是一种龄态技术,从这个意义上说代码熨食是需要和其他的一些动态测成技术配合才能抬杳代码是否符合设计的要求6 .自底向上集成需要测试员端写骗动程序.O这道双目大家看下top-donn和dcwn-U>p的集成测试示意图就能得出明确的答案。这里需要了解的是什么是驱动测武程序,什么是桩程序.如果集成祖件数收众多,多关系层次,那么不论是什么类型的集成测试。胆动程序和桩程序都是需要开发的。7 .负载测试是物证要检脸的系统的能力最高能达到什么程度.O关于负段测试和压力测试在论坛中的帖手中有详细的解择.大家可以去看一下就能褥出正确的答案8 .我们可以人为的使得软件不存在配置问鹿,O首先大家先搞清楚什么是配置管理什么是软件配置.从这道题目中看不出出题人想何的是关键工程中的配置管理还是单纯的软件配置.但是可以肯定的是不论是何种情况,答案均是否定的。9 .集成测试计划在需求分析阶段末提交。O集成施试计划在开发人员完成蚊件集成计划之后就可以开始进行九所以在需求分析阶段之后提交是不现实的事情,应该在软件的设计阶段后,编码前.四、不定项选择题1.软件验收测试的合格通过准则是:OA.软件需求分析说明书中定义的所有功能己全部实现,性能指标全部达到要求.B.所有测试项没有残余级、:级和三级错误,C,立项审批表、需求分析文档、设计文档和编码实现一致。D5金收测试工件齐全。回答这道题,你必须是这家企业的员工。前面说到了验收测试的目的和目标,一个是需求必须实现,二是证明软件是适合使用的。这样能满足这两个通用标准就Ur以了。当然有叫软件企业会对5金收测试标准做一些调整.2.软件测试计划评审会衢要哪拽人员参加?OA.项目经理B.SQ负责人C.配置倒货人D.测试组上面的4种角色都需要参与3.下列关于alpha测试的描述中正确的是:OA. alpha测试需要用户代表参加B. alpha测试不需要用户代表参加C. alpha冽试是系统测试的一种D. alpha测试是验收测试的一种首先大家需要知道alpha测试是系统级别的测试,该测试是在一个受控的环境中进行的.用户衢要直接参与进来.所以答案应该是AD五、埴空感1 .软件始收测试包括_、_、三种类型,软件验收测试包括正式蛤收测试、alpha测试、beta测试三种测试.2 .系统测试的策略有功能测试、易用性测试、等15种方法.系统测试的策略有很多种的.有性能测试、负载测试、强度测试'易用性测试、安全测试、配以测试、安装测试、文档测试、故障恢现泅试、用户界面泅试、饯或测试、分布测试、Ur用性测试.3 .设计系统测试计划需要参考的项目文档有.、和迭代计划.议计系统测试计划需要参考的项目文档彳I软件测试计划、软件需求工件、和迭代计划.1.财面向过程的系统采用的集成策略有增收、非增求集成两种。其中,A:13.14B:15.16C:18.19D:23.24【问应2】请计算上述控制流图的环复杂度V(G)(独立线性路径数)V(G)=+1=7,V(G)=22-17+2=7.V(G)=6+1=7【问题3】假设输入的取值范用是100o<year<2001,请便用基本路径测试法为变汆year、month设计测试用例(写出Year取值、month取值、maxday预期结果),使其满足基本路径覆葭要堤路径组合:pl:2,4,6,8,10,11,14,17,20,25,26P2:2,26p3:2,4,21,22,25,26P4:2,4,21,0,25,26P5:2,4,6,C,20,25,26p6:2,4,6,8,B,17,20,25,26p7:2,4,6,8,10,A,17,20,25,26用例编号yearKZ(flmonth取仗maxday预期站果执行路径I100-2000之间能被400整除的任意整数.1200.1600>2000229pl2100l2000之间任意整数UJ2之外的任意整数0P23100l2000之间任意整数4、6s9.Ii中的任意一个p34100I2000之间任意整数U3、5、7、8、12中任意一个31p451001-2000之间不能被4整除的任意整数,如1001.1002、1003等228P56100I2000之间能被4整除但不能被100整除的任意整数,如1004、1008、1012、1016等22967100I2000之间能被100蜓除但不能被4«)蛉除的任意整数,如IIO0、1300、1400、ISOo等228P72.基本路径法改计出的测试用例能够保证在冽试中程序的每一条可执行语句至少执行一次。以下代码由C+语言书写,请按要求回答问题。voidRcadPara(CStririKICmP)(1If(temp=*>=*)M_oper.SetCurSel(0):elseIif(te三p=">")6789101:m_oper.SeiCurSel(I);else(if(temp="=")m_oper.SetCurSel(2);else一个有效等价类和一个无效等价类。3) .在输入条件是一个布尔依的情况下,可以确立一个有效等价类和一个无效等价类。4) .在规定了输入数据的一如值(假定n个),并且程序要时每一个输入值分别处理的情况下.可以确立n个有效等价类和一个无效等价类.5) .在规定了输入数据必彻遵守的规则的情况下,可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)6) .在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类.1)文档资料的审查验收2)功能测试3)性能测试4)强化测试5)性能降汲执行方式测试6)松森系统的余依要求7)安装测试8)用户操作测试单元观试桀成测试系统测试验收侧试六'算合题(1X20=20分)解:第一步;划分等价类,包括4个有效等价类,H个无效等价类。有效等价类无效等价类地区码空白(1),3位数字(2)有非数字字符,少于3位数字,多于三位数字前假从200到999之间的3位数字(3)有非数字字符(8,起始位为"0"(9),起始位为"/(10),少于3位数字(11),多于3位数字(12)后爆4位数字4)有非数字字符(13),少于4位数字(14),多于4位数字(15)12,每一个软件项目都有一个最优的冽试S1.<)13、黑盒测试往往会造成测试用例之间可能存在严重的冗余和未测试的功能漏洞.()14、代码审杳工作属于怖态测试。()15、软件测试是一个过程,包含若干活动,运行软件进行测试只是活动之一。<)16、回归测试是在软件修改后再次运行以前为查找错误而执行程序曾用过的测试用例.()17、集成测试是为确定软件系统是否满足验也标准以及使客户决定是否接受而进行的正式测试.()18.测试按照测式层次可以划分成为单元测试、集成洲试和系统测试,(>19、只要能修达到100%的逻辑限版率,就可以保证程序的正确性.()20、木远有缺陷类型会在测试的一个层次上被发现.并且能够在另一个层次上逃避检测.()三、简答题:共4小题,每题5分,满分20分。1、优秀的软件测试工程师应具备哪些素质?2,有二元函数Kx,v),其中Xe(IJ2卜yWl,31卜请写出该函Ift采用基本边界值分析法设计的测试用例.3、空盒测试与白盒测试各有哪的优缺点,应该如何结合才能解决漏洞和冗余问题?4、有一段程序如下,请设计测试用例以满足语句搬盖要求.voidDoWork(intx,lty,intZ)intk=0j=0;if(x>3)&&(z<10)k=y-l;j=sqrt(k);)语句块1if(x=4)(y>5)(j=x*y+10;语句块2j=j%3;语句块3四、综合题:共2小题,每题10分,满分20分。I、使用基本路径测试方法,为以下程序段设计测试用例-(1)画出程序的控制流图,端号已经给出.(2)计算程序的错环红朵度,导出程序基本路径佻中的独立路径条数.(3)导出基本路径集,确定程序的独立路径。(4)根据<3)中的独立路径,设计测试用例(确保基本路径集中的每一条路径的执行)的输入数据和欣期坳出.voidDo(intX,intA,i11tB)1 if(A>DU(B=O)2 X=X/A:3 if(=2)(X>1)4 X=X+l;5 )由于控制流图假设的是单条件,因此对于复合条件,可将其分解为多个单个条件,井映射成控制流图.I:A>l:2:B=O:3sX=X/A:4:A=2:5:X>l:6:X=X+i:7:2、场饿要求:”对功率大于50马力的机涔、维修记录不全或已运行K)年以上的机器,应给予优先的维修处理"。这里假定,”维修记录不全和”优先维修处理”均已在别处有更严格的定义,请建立决策表.(1)确定规则的个数.(2)列出所有的条件桩和动作枇。(3)填入条件项.(4)填入动作顶,得到初始决策我.(5)简化抉策去,合并相似规则。综合试题七答案一、单选题(20X2=40分)蛙号12345678910答案CAADDBADDA题号11121314151617181920答案BBBBBCBCDB二、判断题(20X1=20分)麻号12345678910答案XXXXXX题号11121314151617181920答案X7X三、简答题(4X5=20分)1 .答:具有探索精神、具有良好的计算机编程基础、故园排除能手、坚持不懈的相神、具有创新精神和超前意识、追求完关、判断准确、具有整体观念,对细节放!成、团队合作精神.沟通能力。2 .具有良好的计算机编程艇础,有一定的软件开发经蛤;有逆向思维的能力3,善于同软件开发人员沟通;善于同颖导沟通4 .掌旌一些自动化测试工具:普干学习的能力5 .提高自己的表达能力:了解业务知识6 .具有探索料神;故障排除能手7,坚持不懈的精神:具有创新的神和超前意识8 .追求完美:判断准确:具有整体观念.对细节敏感:团队合作精神9 .答:(<1,15>,<2,15>,<11,15>,<12,15>,<6,15>,<6,1>,<6,2>,<6,30>,<6,31>10 答:功能性测试履行两大优点:功能性测试与软件如何实现无关:测试用例开发可以与实现并行进行,因此可以压缩总的项目开发时间,缺点:测试用例之间可能存在严JR的冗余,还会有位测试的软件漏洞,结构性测试局限于已经完成的代码行为当中,离代码太近,因此可以结构性测试指标去解决冗余和漏洞问起.如果发现同一条程序路径被多个功能性测试用例遍历,就可以怀疑这种冗余不会发生新的缺陷,如果没有达到一定的DD一路役图裴,VA可知在功能性测试用力中存在漏洞“因此路径测试可以提供作为功能性测试交叉检食的俎指标.11 答:要实现DoWork函数的沿句覆关,只需设计一个测试用例就可以覆盖程序中的所有可执行语句。>测试用例输入为rx=4、y=5、z=5)四、综合题(每题10分.共计20分)1,画出控制流图:如右图所示10(条边)-7(个节点)+2=5导出独立路径(用语句编号表示)路径1:1-2-3-4-5-6-7路径2:1-4-5-6-7路径3:1-2-4-6-7路径4:I-2-4-5-7路径5:1-2-3-4-5-7测试用例用例号路径输入数据ABX期输出XFCl1-2-3-4-5-6-73O63rc2IT-6-6-7O134C31-2-4-6-72112C41-2T-5-731OOC5l-*2-3-*4-573O312.解答:确定规则的个数:这里有3个条件,好个条件有两个取值,故应有2*2*2=8种规则。列出所有的条件桩和动作桩:条件功率大于50马力吗?维修记录不全吗?运行超过10年吗?动作进行优先处理作其他处理填入条件项.可从最后1行条件项开始,逐行向上填满.如第三行是:YNYNYNYN第二行是:YYNNYYNN等等。埴入动作项,这样便得到形如图的初始判定表。I2345678条件功率大于50马力吗?YYYYNNNN维修记录不全吗?YYNNYYNN运行超过IO年吗?YNYNYNYN动作进行优先处理XXXXX作其他处理5X1.XX初始判定表化简.合并相似规则后得到结果图.I2345第件功率大于50马力吗?YYYNN维修记录不全吗?YNN-运行超过10年吗?-YNYN动作进行优先处理XXX作其他处理化Uf后的判定衣综合试题八一、ftM(W2分,共20分)请衅案镇入括号中.1 .从供选择的答案中进出应埴入下列()中的字句。软件测试的目的是<).为了提高测试的效率,应该().使用白能测试方法时,确定测试数据应根据<>和指定的次靛玩准.与设计测试数据无关的文档是<.软件的集成溯试工作最好由()承担.以提而集成测试的效果.供选择的答案:发现软件的错误证明软件是正确的A. 评价软件的质Ift找出软件中的所有错误B. 随机地选取冽试数据取一切可能的输入数据作为测试数据在完成编码以后制定软件的测试计划选择发现拙误的可能性大的数据作为测试数据程序的复杂程度程序的功能程序的反杂程度项目开发计划该软件开发组的负田人不属于该软件开发姐的软件设)中的字句.C. 程序的内部逻辑使用说明书D. 该软件的设计人员源程序E. 该软件的设计人员该软件的编程人员计人员2 .请从供选择的答案中选出应城人下列(程序的三种基本控制结构是(3它们的扶同点是)。结构化程序设计的一种基本方法是().软件测试的目的是(>软件调试的目的是().供选择的答案:A.过程,子程序,分程序顺序,条件,循环递归.堆栈.队列调用,返回,转移B. 不能嵌套使用己势用硬件实现C. 筛选法递归法法D. 证明程序中没有错误测睡程序的动态特性E. 找出怫误所在并改正之对错误性质进行分类只能用来写简单的程序只有一个入口和一个出口归纳法逐步求精发现程序中的错误检查程序中的语法错误持除存在错设的可能性统计出错的次数3 .从下列关于软件测试的叙述中,选出5条正确的叙述。)(1)用黑盒法测试时,测试用例是根据程序内部逻辑设计的.(2)尽奴用公共过程或子程序去代替重亚的代码段.(3)测试是为了验证该软件已正确地实现了用户的要求,(4)对于连锁型分支结构,若有n个判定语句,则有2n条路径。(5)尽量采用更合的条件测i以避免嵌套的分支结构.(6) GOTO语句概念简单,使用方便,在某些情况下,保留GOTO语句反能使写Hl的程序更加的洁.(7)发现描误多的程序模块.残留在模块中的描误也多.(8)黑盒测试方法中最有效的是因果图法.(9)在做程序的单元测试时,桩(存根模块比胆动模块容易编写。(10)程序效率的提高主要应通过选择高效的算法来实现.1.从供选择的答案中选出同下列关于软件冽试的各条叙述关系最密切的字句.A,而可邻性要求很高的软件,例如操作系统,由第三者对源代码进行逐行检杳.B,已有的软件被改版时.由于受到变更的影响.改版前正常的功能可能发生异常.性能也可能下降.因此,对变更的软件进行测试是必要的.C.在意识到被测试模块的内部结构或算法的情况下进行测试,D.为了确认用户的需求先做出系统的主要部分,提交给用户试用.E.在测试具有层次结岗的大型软件时,有一种方法是从上层模块开始,由上到下进行测试,此时,有必要用一些模块替代尚未测试过的下层模块。供选择的答案:A-E:仿真器代码审查模拟器桩驱动器域测试攫盒测试原型白盒测试退化测试二、«$:共4小10个空格.个空格2分.分20分;请衅案就入指定的空白处.1 .对面向过程的系统采用的集成策略有、两种.2 .软件测试主要分为、四类测试.3 .黑盒测试用例设计方法包括、以及,错误推测法等.4 .测试工作就是进行输入、接受输出、检脸结果,不深入代码细节,这样的测试方法称为三、MM:其io小,小分.Il分10分,请将答案以-X-彩式填入后括号中.1 .好的测试员不懈追求完美。()2 .测试程序仪仅按预期方式运行就行了.()3,不存在质疑很商但可席性很差的产品。()4 .在没有产品说明书和需求文档的条件下可以进行动态怨盒测试。()5 .静态白盒测试可以找出遗漏之处和问包.()6,测试错误提示信息不属F文档测试范Ift()7 .单元测试能发现约80%的软件缺陷。()8 .代码评审是检查源代码是否达到模块设计的要求.()9 .自顶向下集成需要测试员编写驱动程序.()10 .总是首先设计照盒测试用例。()四、ffllSW共6小,每小3分,於分伯分I.验收测试2 .失败测试3 .驱动模块4 .桩模块5 .白盒测试五、冬,共3小,小5分,戏分15分.1 .怎样做好文档测试?2 .什么是软件测试?软件上试与调试有什么区别?3 .软件测试包括哪些类型的测试?这些测试之间的区别是什么?u共1小,每小20分,分如分.针对以下问题:某一种8位计算机,其十六进制常数的定义是以Ox或OX开头的十六进制整数,其取值SSia为-7f7f不区分大小写字母),如0x13、0x6A.-0x3c.请采用等价类划分的方法设计测试用例。综合试题八答案一'单选题(20X1=20分)题号1A1B1C1D1E2A2B2C2D2E答案题号333334A484C4D4E答案(4)<5)(6)<7>(10)二、填空SS(20X1=20分)1 .自一向下集成、自底向上集成2 .单元测试、集成测试、系统测试、验收测试3,等价类划分、边界值分析'因果图4 .黑盒测一述三、判断题(IOXl=IO分)遨号12345678910答案XXJJ×X7四、名词解释(5X3=15分)1 .验收测试是软件产品完成了功能测试和系统测试之后,在产品发布之前所进行的软件测试活动。2 .失败测试纯粹为了破坏软件而设计和执行的测试案例,被称为失败测试.3 .驱动模块驱动模块就是用来代替主模块,用它来调用于模块4 .桩模块集成测试前要为被测模块编制些模拟其下级模块功能的“替身”模块,以代替被测模块的接口,接受电传递被测模块的数据,这些专供测试用的“假”模块称为被测模块的粒模块,5.白盒测试也徐为结构化测试、掂干代码的测试,是一种溯试用例设计方法,它从程序的控制结构导出测试用例。五、简答这(3X5=15分)1 .仔细阅读,跟随姆个步骤,桧杳知个图形,尝试姆个示例。检查文档的编写是否满足文档编写的目的内容是否齐全,正确内容是否完善标记是否正确2 .软件测试是为了发现格误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计-批测试用例(即输入数据及其位期的箱出结果),并利用这些测试用例去运行程序,以发现程序错误的过程.软件测试与调试在目的、技术和方法等方面存在很大的区别,主要衣现在如N方面:(1)测试是为了发现软件中存在的郴误:调试是为了证明软件开发的正确性.(2)测试以已知条件开始,使用预先定义的程序,且有预知的结果.不可预见的仅是程序是否通过测试:调试般是以不可知的内部条件开始,除统计性调试外,结果是不可Bi见的。(3测试是有计划的,需要进行测试设计:调试是不受时间约束的.(4)测试经历发现错误、改正错i吴、正新测试的过程:调试是一个推理的过程e(5)测试的执行是有规程的;调试的执行往往要求开发人员进行必要推理以至知觉的飞跃J(6)测试经常是由独立的祗试组在不了解软件设计的条件下完成的;调试必须由了斛详细设计的开发人员完成。<7>大多数测试的执行和设计可以由工具支持:调式时,开发人员能利用的工具主要是调试器。3.软件测试包括单元测试、集成测试、确认测试和系统测试等。的元测试集中于单个模块的功能和结构的检验:集成测试集中于模块组合的功能和软件结构检验:确认测试主要检查软件是否符合合同要求,包括需求规格说明、设计规格说明和用户手册等:系统测试集中桧粉系统所有元素之间协作是否合适,整个系统的性能和功能是否达到。六.综合SS(1X20=20分)输入条件有效等价类无效等价类开头字符由Ox或OX开头(1)以字母开头以非。数字开头(2)(3)数值字符数字或A-F的字母(4)A-F以外的字母(5)数值字符个救>1个(6)0个(7)数值>-7fft7f(8)<-7f>7f(10)用例1:0x7F,碗蛊等价类(I)(4)(6)(8)用例2:-OXb,汲前等价类(1>(4>(6><8)用例3:0X0,覆盖等价类(1)(46)(8用例4:Ox,慢盅等价类(1)(7)用例5:A7,覆蠡等价类(2用例6:TA,覆豌等价类(3)用例7:0X8h.用例8:0x80.用例9:-OXaB.湿盖等价类(1)(5)覆盖等价类(I)<4)(10>一-等价类(1)(4)(9)