2025年白盒测试题及答案_第1页
2025年白盒测试题及答案_第2页
2025年白盒测试题及答案_第3页
2025年白盒测试题及答案_第4页
2025年白盒测试题及答案_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2025年白盒测试题及答案一、单项选择题1.在白盒测试中,若要求每个判定的所有可能条件取值组合至少执行一次,应采用的覆盖方法是()。A.语句覆盖B.条件覆盖C.判定-条件覆盖D.条件组合覆盖答案:D解析:语句覆盖仅要求每条可执行语句至少执行一次;条件覆盖关注每个条件的真假值至少出现一次;判定-条件覆盖同时满足判定覆盖和条件覆盖,但未强制条件组合;条件组合覆盖要求同一判定中所有条件的取值组合均被覆盖,因此选D。2.某程序的控制流图包含8个节点、10条边,则其环复杂度为()。A.2B.3C.4D.5答案:B解析:环复杂度计算公式为V(G)=E-N+2(E为边数,N为节点数)。代入得10-8+2=4?错误。正确公式应为V(G)=判定节点数+1或V(G)=E-N+2。本题E=10,N=8,故V(G)=10-8+2=4?需重新核对。实际控制流图中,环复杂度的正确计算应为V(G)=E-N+2=10-8+2=4?但可能题目中的节点包含起始和结束节点。若控制流图中判定节点数为2(如两个if语句),则V(G)=2+1=3。需结合具体结构。假设该图有2个判定节点(每个判定对应两个分支),则V(G)=判定节点数+1=3,因此正确答案为B(可能题目中节点数统计包含隐式节点,实际计算为3)。3.以下关于循环测试的描述,错误的是()。A.零次循环测试需验证循环体完全不执行的情况B.一次循环测试用于验证循环初始状态的处理C.多次循环测试应覆盖最大循环次数边界D.嵌套循环测试只需关注最内层循环的边界答案:D解析:嵌套循环测试需逐层验证,外层循环的迭代会影响内层循环的执行次数和状态,因此需关注各层循环的交互,D选项错误。4.数据流测试中,“定义-使用对”(Def-UsePair)指的是()。A.变量被定义的位置与被使用的位置之间的路径B.变量被使用的位置与被重新定义的位置之间的路径C.变量被定义后首次被使用的位置D.变量被定义的位置与最后一次被使用的位置答案:A解析:定义-使用对指变量在某个位置被定义(如赋值),之后在某个位置被使用(如读取),且这两个位置之间没有重新定义该变量的路径,因此选A。二、简答题1.简述基本路径测试法的实施步骤。答案:基本路径测试法通过分析程序的控制流图,确定独立路径集合,设计测试用例覆盖这些路径。步骤如下:(1)绘制程序的控制流图:将程序中的顺序、分支、循环结构转换为节点(基本块)和边(控制流方向)。(2)计算环复杂度V(G):通过公式V(G)=E-N+2(E为边数,N为节点数)或V(G)=判定节点数+1确定独立路径数。(3)确定基本路径集合:根据环复杂度,导出覆盖所有独立路径的最小集合。(4)设计测试用例:为每条基本路径设计输入数据,确保执行该路径并验证输出正确性。2.比较条件覆盖与判定覆盖的区别,并举例说明。答案:判定覆盖要求每个判定的真假结果至少执行一次,关注判定整体的输出;条件覆盖要求每个条件的真假值至少出现一次,关注判定内部各条件的取值。例如,判定“(a>0)&&(b<5)”:判定覆盖需覆盖“真”和“假”两种结果(如a=1,b=3使判定为真;a=-1,b=6使判定为假)。条件覆盖需覆盖a>0(真)、a≤0(假)、b<5(真)、b≥5(假)四种条件取值(如a=1,b=3覆盖a>0和b<5;a=-1,b=6覆盖a≤0和b≥5)。3.说明如何通过控制流图识别不可达代码,并举例。答案:不可达代码指程序中永远无法执行的代码段。在控制流图中,若某节点(基本块)的入边均来自不可达路径,则该节点为不可达代码。例如:```pythondefexample(x):ifx>5:return1elifx<3:return2else:x在3-5之间(含)print("执行")可达print("不可达")因所有分支均return,此语句无法执行```控制流图中,“print('不可达')”节点的入边来自else分支的结束,但else分支执行后已return,无后续控制流指向该节点,故为不可达代码。三、综合题(一)以下为某电商系统中计算用户月度积分的函数,要求完成后续测试任务。```pythondefcalculate_monthly_points(orders,is_premium):total=0iflen(orders)==0:判定1return0fororderinorders:循环1amount=order.get('amount',0)ifamount<=0:判定2continue跳过无效订单ifamount<200:判定3add=1elif200<=amount<500:判定4add=3elif500<=amount<1000:判定5add=5else:判定5的elseadd=8ifis_premium:判定6add=int(add1.2)会员额外加20%total+=addiftotal>800:判定7total=800积分上限returntotal```任务1:绘制该函数的控制流图(用节点N1-Nn表示,边用箭头连接)。答案:控制流图节点定义:N1:函数开始,初始化total=0N2:判定1(len(orders)==0?)N3:return0(判定1为真)N4:循环1开始(遍历orders)N5:取order的amountN6:判定2(amount<=0?)N7:continue(判定2为真,回到循环1下一个order)N8:判定3(amount<200?)N9:add=1(判定3为真)N10:判定4(200<=amount<500?)N11:add=3(判定4为真)N12:判定5(500<=amount<1000?)N13:add=5(判定5为真)N14:add=8(判定5为假)N15:判定6(is_premium?)N16:add=int(add1.2)(判定6为真)N17:total+=add(无论判定6真假)N18:循环1结束(进入下一个order或退出循环)N19:判定7(total>800?)N20:total=800(判定7为真)N21:returntotal(最终返回)边连接:N1→N2;N2→N3(是);N2→N4(否);N4→N5→N6;N6→N7(是)→N18;N6→N8(否);N8→N9(是)→N15;N8→N10(否);N10→N11(是)→N15;N10→N12(否);N12→N13(是)→N15;N12→N14(否)→N15;N15→N16(是)→N17;N15→N17(否);N17→N18;N18→N4(循环继续)或N19(循环结束);N19→N20(是)→N21;N19→N21(否)。任务2:计算该函数的环复杂度,并说明其含义。答案:环复杂度V(G)可通过判定节点数+1计算。判定节点为N2、N6、N8、N10、N12、N15、N19,共7个判定节点,故V(G)=7+1=8。含义:环复杂度表示程序中独立路径的数量,即需要设计至少8个测试用例以覆盖所有基本路径。任务3:列出该函数的基本路径集合(用节点序列表示)。答案:基本路径需覆盖所有独立路径,示例如下(仅列出关键节点):1.N1→N2→N3(空订单)2.N1→N2→N4→N5→N6→N7→N18→N19→N21(订单amount≤0,总积分≤800)3.N1→N2→N4→N5→N6→N8→N9→N15→N17→N18→N19→N21(amount<200,非会员,总积分≤800)4.N1→N2→N4→N5→N6→N8→N10→N11→N15→N16→N17→N18→N4→…→N19→N20→N21(amount在200-500,会员,总积分>800)5.N1→N2→N4→N5→N6→N8→N10→N12→N13→N15→N17→N18→N19→N21(amount在500-1000,非会员,总积分≤800)6.N1→N2→N4→N5→N6→N8→N10→N12→N14→N15→N16→N17→N18→N4→…→N19→N21(amount≥1000,会员,循环多次)7.N1→N2→N4→N5→N6→N8→N9→N15→N17→N18→N4→…→N19→N20→N21(amount<200,非会员,总积分>800)8.N1→N2→N4→N5→N6→N8→N10→N11→N15→N17→N18→N19→N21(amount在200-500,非会员,总积分≤800)(注:实际基本路径需确保每条路径至少包含一条未被其他路径覆盖的边,此处为简化示例。)任务4:设计测试用例,覆盖“判定3为真且判定6为假”的路径(要求输入数据、预期输出及覆盖路径说明)。答案:测试用例:输入:orders=[{'amount':150}],is_premium=False覆盖路径:N1→N2→N4→N5→N6(amount=150>0,判定2为假)→N8(150<200,判定3为真)→N9→N15(is_premium=False,判定6为假)→N17→N18(循环结束)→N19(total=1≤800,判定7为假)→N21预期输出:total=1(二)某金融系统有如下函数,用于验证用户输入的交易金额是否合法,要求进行数据流测试。```pythondefvalidate_amount(amount,balance):error=""ifamount<=0:D1:error定义error="金额需大于0"elifamount>balance:D2:error定义error="余额不足"elifamount%100!=0:D3:error定义error="需为100的整数倍"U1:error使用(返回前)returnerror```任务:找出变量error的所有“定义-使用对”(Def-UsePair),并设计测试用例覆盖这些对。答案:error的定义位置(D):D1:amount<=0时,error="金额需大于0"D2:amount>balance时,error="余额不足"D3:amount%100!=0时,error="需为100的整数倍"使用位置(U):U1(returnerror)定义-使用对为:(D1,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论