白盒测试用例练习一、为以下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖,并画出相应的程序流程图。
voidDoWork(intx,inty,intz){intk=0,j=0;if((x>3)&&(z<10)){k=x*y-1;j=sqrt(k);//语句块1}if((x==4)||(y>5)){j=x*y+10;}//语句块2j=j%3;//语句块3}aYcNbeYx>3andx=4ork=x*y-1k=0Nd由这个流程图可以看出,该程序模块有4条不同的路径:P1:(a-c-e)P2:(a-c-d)P3:(a-b-e)P4:(a-b-d)将里面的判定条件和过程记录如下:判定条件M={x>3andz<10}判定条件N={x=4ory>5}1、语句覆盖测试用例输入输出判定M的取值判定N的取值覆盖路径x=4,z=5,y=8k=31,j=0TTP1(a-c-e)2、判定覆盖p1和p4可以作为测试用例,其中p1作为取真的路径,p4作为取反的路径。
测试用例输入输出判定M的取值判定N的取值覆盖路径x=4,z=5,y=8k=31,j=0TTP1(a-c-e)x=2,z=11,y=5k=0,j=0FFP4(a-b-d)也可以让测试用例测试路径P2和P3。
相应的两组输入数据如下:测试用例输输出判定M的取判定N的取覆盖路径j=j%3j=x*y+1入值值x=5,z=5,y=4k=19,j=sqrt(19)%3TFP2(a-c-d)x=4,z=11,y=6k=0,j=1FTP3(a-b-e)3、条件覆盖对于M:x>3取真时T1,取假时F1;z<10取真时T2,取假时F2;对于N:x=4取真时T3,取假时F3;y>5取真时T4,取假时F4。
一、问题:报表日期等价类划分和边界值分析设某公司要打印2001~2005年的报表,其中报表日期为6位数字组成,其中,前4位为年份,后两位为月份。
二、请结合等价类方法给出getNumDaysInMonth(intmonth,intyear)方法的测试用例,其中getNumDaysInMonth方法根据给定的月份和年份返回该月份的总天数。
三、阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。
[说明]在ERP(企业资源计划)系统中,“计划管理”模块的流程图如下:[问题1]因果图法是功能测试案例设计方法中的一种,简述利用因果图导出测试用例需要经过哪几个步骤?[问题2]根据题干中的流程图,利用因果图法,找出哪些是正确的输入条件,那些是正确的输出结果,将下列描述的字母编号填入表中。
a.可以进行销售发货管理b.可用库存不满足销售需求(有可用库存)c.可用库存不满足销售需求(无可用库存)d.可用库存满足生产需求e.可用库存不满足生产需求f.可用库存不满足生产需求(无可用库存)g.可以进行MPS运算h.可用库存满足销售需求i.生成主生产计划j.生成计划采购单k.生成计划生产定单l.可以进行MRP运算[问题3]下图画出“计划管理”模块的因果图。
请把问题2中列出的输入条件和输出结果的字母编号填入到空白框中相应的位置。
五、根据如下流程图,写出白盒测试测试用例。
软件测试练习题白盒测试单元测试学号姓名1.以程序内部的逻辑结构为基础的测试用例设计技术属于()。
A.灰盒测试B.数据测试C.黑盒测试D.白盒测试2.即使对程序的所有路径都进行了测试,程序也可能存在没能检查出来的缺陷,其原因可能是()。
A.程序可能会因为缺少某些路径而存在问题B.即使是穷举路径测试也不能保证程序符合其设计规格说明C.穷举路径测试也可能不会暴露数据敏感性错误D.以上全部3.下列关于测试方法的叙述中不正确的是()。
A.从某种角度上讲,白盒测试和黑盒测试都属于动态测试B.功能测试属于黑盒测试C.对功能的测试通常要考虑程序的内部结构D.结构测试属于白盒测试4.不需要运行程序,通过收集有关代码的结构信息来对程序进行的测试是()。
A.性能测试B.黑盒测试C.白盒测试D.静态分析5.在白盒测试中,程序员要运用自己的智力和程序理解力,深入到源程序中进行测试,这样的好处是()。
A.结构测试B.黑盒测试C.功能测试D.静态测试7.在覆盖准则中,最常用的是()。
A.语句覆盖B.条件覆盖C.分支覆盖D.以上全部8.大多数实际情况下,性能测试的实现方法是()。
A.黑盒测试B.白盒测试C.静态分析D.可靠性测试9.如果一个判定中的复合条件表达式为(A>1)or(B<=3),则为了达到100%的条件覆盖率,至少需要设计()个测试用例。
A.1B.2C.3D.410.下列逻辑覆盖中,最强的是()A.语句覆盖B.条件覆盖C.路径覆盖D.条件组合覆盖11.关于逻辑覆盖,说法错误的是()。
A.DDP(判定路径覆盖)是判定覆盖的一个变体B.满足条件覆盖也一定满足判定覆盖C.指令块覆盖属于语句覆盖D.若判定覆盖率达到100%,则语句覆盖率也达到100%。
1单选在黑盒测试方法中,设计测试用例的主要根据是()3单选凭经验或直觉推测可能的错误,列出程序中可能有的错误和容易发生错误的特殊情况,选择测试用例的测试方法叫()4单选2元地铁票售票软件:投币2元时,按下“2元”按钮,弹出相应地铁票;投币5元,则弹出地铁票同时退还3元,若对该功能进行测试用例设计最宜选择哪种方法5单选黑盒测试技术,使用最广的用例设计技术是等值分析测试边界值分析测试错误推测法逻辑覆盖测试6单选既可以用于黑盒测试,也可以用于白盒测试的方法的是逻辑覆盖法边界值法基本路径法正交试验设计法7单选某购物中心电梯限坐15人。
在电梯中安装计数器来统计乘客数量。
如出现超出规定人数以外的任何情况,会有不同的警示音。
软件编写后进行边界值测试,应选取的边界值是:()1,15,16.11510,1515,208单选关于等价类划分法,下面说法不正确的是(9单选某系统对每个员工一年的出勤天数进行核算和存储(按每月22个工作日计算),使用文本框的模式进行填写,在此文本框的测试用例编写中使用了等价类。
下列关于等价类划分法,划分错误的是()无效等价类,出勤日>264无效等价类,出勤日<0有效等价类,0<=出勤日<=264有效等价类,0<出勤日<26410单选若一个通讯录最多可以输入100条记录,则下列哪组测试用例最优?分别输入1、50、100条记录分别输入0、1、50、99、100条记录分别输入0、1、99、100、101条记录分别输入0、1、50、99、100、101条记录11单诜对于功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应优先维修单选处理。
根据这段话,使用判定表法设计测试用例,以下说法不正确的是()12单选以下不属于因果图约束中的输入约束的是()要求强制13单选因果图中,关系符号“V”代表的是(恒等14单选现有一个处理单价为1元的盒装饮料的自动售货机软件,若投入1元币,按下“可乐”、“雪碧”或“红茶”按钮,相应的饮料就送出来,若投入的是2元币,在送出饮料的同时还退还1元币。
先看以下代码:/**白盒测试逻辑覆盖测试范例*/intlogicExample(intx,inty){intmagic=0;if(x>0&&y>0){magic=x+y+10;//语句块1}else{magic=x+y-10;//语句块2}if(magic<0){magic=0;//语句块3}returnmagic;//语句块4}解答:一般做白盒测试不会直接根据源代码,而是根据流程图来设计测试用例和编写测试代码,在没有设计文档时,要根据源代码画出流程图:做好了上面的准备工作,接下来就开始讲解六个逻辑覆盖标准:一、语句覆盖1、概念:设计足够多的测试用例,使得被测试程序中的每条可执行语句至少被执行一次。
在本例中,可执行语句是指语句块1到语句块4中的语句。
2、测试用例:{x=3,y=3}可以执行到语句块1和语句块4,所走的路径:a-b-e-f{x=-3,y=0}可以执行到语句块2、语句块3和语句块4,所走的路径:a-c-d-f这样,通过两个测试用例即达到了语句覆盖的标准,当然,测试用例(测试用例组)并不是唯一的。
3、测试的充分性:假设第一个判断语句if(x>0&&y>0)中的“&&”被程序员错误地写成了“||”,即if(x>0||y>0),使用上面设计出来的一组测试用例来进行测试,仍然可以达到100%的语句覆盖,所以语句覆盖无法发现上述的逻辑错误。
在六种逻辑覆盖标准中,语句覆盖标准是最弱的。
二、判断覆盖(分支覆盖)1、概念:设计足够多的测试用例,使得被测试程序中的每个判断的“真”、“假”分支至少被执行一次。
在本例中共有两个判断if(x>0&&y>0)(记为P1)和if(magic<0)(记为P2)。
2、测试用例:两个判断的取真、假分支都已经被执行过,所以满足了判断覆盖的标准。
《软件测试》第三章白盒测试方法一、填空题1、语句覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的执行语句。
2、判定覆盖的作用是使真假分支军被执行。
3、条件覆盖是指判定语句中的每个条件都要取真、假值各一次。
4、对于判定语句IF(a>1ANDc1、c1ANDc判断覆盖方法。
5、判定条件覆盖要求判定语句中所有条件取值的可能组合都至少出现一次。
6、在程序插桩法中,插入到程序中的代码称为探针。
二、判断题1、语句覆盖无法考虑分支组合情况。
(X)。
2、目标代码插桩需要重新编译、链接程序。
(√)。
3、语句覆盖可以测试程序中的逻辑错误。
4、判定-条件覆盖没有考虑判定语句与条件判断的组合情况。
5、对于源代码插桩,探针具有较好的通用性。
三、单选题1、下列选项中,哪一项不属于逻辑覆盖?(D)。
A.语句覆盖B.条件覆盖C.判定覆盖D.判定-语句覆盖。
2、关于逻辑覆盖,下列说法中错误的是(C)。
A.语句覆盖的语句不包括空行、注释等。
B.相比于语句覆盖,判定覆盖考虑到了每个判定语句的取值情况。
C.条件覆盖考虑到了每个逻辑条件取值的所有组合情况。
—1/2——1/2—D.在逻辑覆盖中,条件组合覆盖是覆盖率最大的测试方法。
3、关于程序插桩法,下列说法中错误的是(D)。
A.程序插桩法就是往被测程序中插入测试代码以达到测试目的的方法。
B.程序插桩法可分为目标代码插桩法和源代码插桩。
C.源代码插桩的程序需要重新编译、链接过程,单测试代码不参与编译、链接过程。
D.目标代码插桩是往二进制程序中插入测试代码四、简答题1、请简述逻辑覆盖的几种方法及他们之间的区别。
答:6种。
语句覆盖(SC):设计足够多的测试用例,抄确保每条语句都被执行过。
判定覆盖(DC):设计足够多的测试用例,确保每个判定都分别取真值与假值。
条件覆盖(CC):设计足够多的测试用例,确保每个条件都分别取真值与假值。
练习题、判断01)测试是为了验证软件已正确地实现了用户的要求。
错02)白盒测试仅与程序的内部结构有关,完全可以不考虑程序的功能要求。
对03)白盒测试不仅与程序的内部结构有关,还要考虑程序的功能要求。
错04)程序员兼任测试员可以提高工作效率。
错05)黑盒测试的测试用例是根据应用程序的功能需求设计的。
对06)当软件代码开发结束时,软件测试过程才开始。
错07)据有关数据统计,代码中60%以上的缺陷可以通过代码审查发现出来。
对08)无效等价类是无效的输入数据构成的集合,因此无需考虑无效的等价类划分。
错09)软件本地化就是将一个软件产品按特定国家或语言市场的需要翻译过来。
错10)在压力测试中通常采用的是黑盒测试方法。
对11)软件测试员无法对产品说明书进行白盒测试。
对12)功能测试工具主要适合于回归测试。
对13)测试人员说:“没有可运行的程序,我无法进行测试工作”。
错14)自底向上集成需要测试员编写驱动程序。
对15)测试是可以穷尽的。
错16)自动化测试相比手工测试而言,能发现更多的错误。
错17)软件测试自动化可以提高测试效率,可以代替手工测试。
错语句至少被执行一次。
对18)语句覆盖法的基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行19)Beta测试是验收测试的一种。
对20)软件开发全过程的测试工作都可以实现自动化。
错21)软件只要经过严格严谨的内部测试之后,可以做到没有缺陷。
错22)结构性测试是根据软件的规格说明来设计测试用例。
错23)软件测试工具可以代替软件测试员。
错24)通过软件测试,可以证明程序的正确性。
错25)在单元测试中,驱动程序模拟被测模块工作过程中所调用的下层模块。
错26)软件缺陷可能会被修复,可能会被保留或者标识出来。
对27)测试用例是由测试输入数据和对应的实际输出结果这两部分组成。
错28)单元测试通常由开发人员进行。
对(29)现在人们普遍认为软件测试不应该贯穿整个软件生命周期,而应在编程完毕之后再进行,这样可以降低成本。
习题010401逻辑路径覆盖法是白盒测试用例的重要设计方法,其中语旬覆盖法是较为常用的方法,针对下面的语句段,采用语句覆盖法完成测试用例设计,测试用例见下表,对表中的空缺项(True或者False),正确的选择是()。
语句段:if(A&&(B||C))x=1;elsex=0;用例表:A.①TRUE②FALSE③TRUEB.①TRUE②FALSE③FALSEC.①FALSE②FALSE③TRUED.①TRUE②TRUE③FALSE0402针对以下程序段,对于(A,B,C)的取值,以下()测试用例能够满足语句覆盖的要求。
IF((A+10)=2OR(B-20)<3)THENC=0IF((A+30)>10AND(C-30)<0)THENB=30A.(2,30,1)B.(-20,0,30)C.(-30,20,30)D.(2,20,3)0403为以下程序段,设计足够的测试用例满足语句覆盖。
if(x>8&&y>5){if(x>16||y>10)s1;}else{if(x>0||y>0)s2;elses3;0404针对下列程序段,需要()个测试用例才可以满足语句覆盖的要求。
switch(value){case0:other=30;break;case1:other=50;break;case2:other=300;case3:other=other/value;break;default:other=other*value;}0405对下面的个人所得税程序中,满足语句覆盖测试用例的是()。
if(income<800)tarrate=0elseif(income<=1500)tarrate=0.05elseif(income<2000)tarrate=0.08elsetarrate=0.1A.income=(800,1500,2000,2001)B.income=(800,801,1999,2000)C.income=(799,1499,2000,2001)0406阅读下列流程图:当用判定覆盖法进行测试时,至少需要设计()个测试用例。
第四章白盒测试参考答案(注意:答案仅供参考,若有误,请自行修改。
)1、使用逻辑覆盖法测试以下程序段。
privatevoidDoWork(intx,inty,intz)1{2intk=0,j=0;3if((x>3)&&(z<10))//3-a和3-b4{5k=x*y-1;6j=(int)Math.Sqrt(k);7}8if((x==4)||(y>5))//8-a和8-b9j=x*y+10;10j=j%3;11lbResult.Text="k="+k.ToString()+"j="+j.ToString();12}说明:程序段中每行开头的数字是对每条语句的编号。
要求:(1)画出程序的控制流图(用题中给出的语句编号表示)。
(2)分别以语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖和路径覆盖法设计测试用例,并写出每个测试用例的执行路径(用题中给出的语句编号表示)。
(3)执行测试用例,并记录测试结果。
参考答案:(1):控制流图:(2)(3)测试用例略。
2.基本路径测试按要求对下面的代码进行测试。
代码功能是:用折半查找在元素呈升序排列的数组中查找值为key的元素。
代码如下:privateintBinSearch(int[]array,intkey)1{2intmid,low,high;3low=0;4high=array.Length-1;5while(low<=high)6{7mid=(low+high)/2;8if(key==array[mid])9returnmid;10elseif(key 1、在白盒测试用例设计中,有语句覆盖、分支覆盖、条件覆盖、路径覆盖等,其中(A)是最强的覆盖准则。 为了对如下图所示的程序段进行覆盖测试,必须适当地选取测试用例组。 若x,y是两个变量,可供选择的测试用例组共有Ⅰ、Ⅱ、Ⅲ、Ⅳ四组,如表中给出,则实现判定覆盖至少应采取的测试用例组是(B)或(C);实现条件覆盖至少应采取的测试用例组是(D);实现路径覆盖至少应采取的测试用例组是(E)或(F)。 供选择的答案A:①语句覆盖②条件覆盖③判定覆盖④路径覆盖B~F:①Ⅰ和Ⅱ组②Ⅱ和Ⅲ组③Ⅲ和Ⅳ组④Ⅰ和Ⅳ组⑤Ⅰ、Ⅱ、Ⅲ组⑥Ⅱ、Ⅲ、Ⅳ组⑦Ⅰ、Ⅲ、Ⅳ组⑧Ⅰ、Ⅱ、Ⅳ组解答:A.④B.⑤C.⑧D.④E.⑤F.⑧2.阅读下面这段程序,使用逻辑覆盖法进行测试,请问哪一组关于(a,b,c)的输入值可以达到条件覆盖。 (B)intfunc(inta,b,c){intk=1;if((a>0)||(b<0)||(a+c>0))k=k+a;elsek=k+b;if(c>0)k=k+c;returnk;}A.(a,b,c)=(3,6,1)、(-4,-5,7)B.(a,b,c)=(2,5,8)、(-4,-9,-5)C.(a,b,c)=(6,8,-2)、(1,5,4)D.(a,b,c)=(4,9,-2)、(-4,8,3)3.阅读下面这段程序,使用逻辑覆盖法进行测试,请问哪一组关于(a,b,c)的输入值可以达到判定覆盖。 (D)intfunc(inta,b,c){intk=1;if((a>0)&&(b<0)&&(a+c>0))k=k+a;elsek=k+b;if(c>0)k=k+c;returnk;}A.(a,b,c)=(3,6,1)、(-4,-5,7)B.(a,b,c)=(2,5,8)、(-4,-9,-5)C.(a,b,c)=(6,8,-2)、(1,5,4)D.(a,b,c)=(4,-9,-2)、(-4,8,3)4.阅读下面这段程序,使用逻辑覆盖法进行测试,请问哪一组关于(a,b,c)的输入值可以达到判定条件覆盖。 voidDoWork(intx,inty,intz){intk=0,j=0;if((x>3)&&(z<10)){k=x*y-1;j=sqrt(k);//语句块1}if((x==4)||(y>5)){j=x*y+10;}//语句块2j=j%3;//语句块3}aYcNbeYNd由这个流程图可以看出,该程序模块有4条不同的路径:P1:(a-c-e)P2:(a-c-d)P3:(a-b-e)P4:(a-b-d)将里面的判定条件和过程记录如下:判定条件M={x>3andz<10}判定条件N={x=4ory>5}1、语句覆盖测试用例输入输出判定M的取值判定N的取值覆盖路径x=4,z=5,y=8k=31,j=0TTP1(a-c-e)2、判定覆盖x>3andz<10x=4ory>5j=j%3j=x*y+10k=x*y-1j=sqrt(k)k=0j=0p1和p4可以作为测试用例,其中p1作为取真的路径,p4作为取反的路径。 相应的两组输入数据如下:测试用例输入输出判定M的取值判定N的取值覆盖路径x=5,z=5,y=4k=19,j=sqrt(19)%3TFP2(a-c-d)x=4,z=11,y=6k=0,j=1FTP3(a-b-e)3、条件覆盖对于M:x>3取真时T1,取假时F1;z<10取真时T2,取假时F2;对于N:x=4取真时T3,取假时F3;y>5取真时T4,取假时F4。