您好,欢迎访问三七文档
软件测试实验报告姓名:*******专业:*********************班级:***********学号:*************日期:2011-5-25实验一:黑盒测试一、实验目的:了解三角形问题的边界值分析测试用例。二、实验要求:在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为[1,100]。在三角形问题中,有四种可能的输出:等边三角形、等腰三角形、一般三角形和非三角形。利用这些信息能够确定下列输出(值域)等价类。R1={a,b,c:边为a,b,c的等边三角形}R2={a,b,c:边为a,b,c的等腰三角形}R3={a,b,c:边为a,b,c的一般三角形}R4={a,b,c:边为a,b,c不能组成三角形}三、实验程序:#includeiostream.hvoidmain(){inta,b,c;cout请输入1=a=100或1=b=100或1=c=100endl;cinabc;if((1=a&&a=100)&&(1=b&&b=100)&&(1=c&&c=100)){if(a+bc&&a+cb&&c+ba){if(a==b&&a==c&&c==b){cout三角形为等边三角形endl;}elseif(a==b||a==c||c==b){cout三角形为等腰三角形endl;}elseif((a*a+b*b)==c*c||(c*c+b*b)==a*a||(a*a+c*c)==b*b){cout三角形为直角三角形endl;}elsecouta,b,c可组成三角形endl;}elsecout不存在a,b,c组成的三角形endl;}elsecouta或b或c的值不合法,无法判断endl;}四、测试用列:用列IDabc预期输出1111三角形为等边三角形2221三角形为等腰三角形3345三角形为直角三角形4222三角形为等边三角形5233三角形为等腰三角形6435三角形为直角三角形7543三角形为直角三角形8112不存在a,b,c组成的三角形9422不存在a,b,c组成的三角形10242不存在a,b,c组成的三角形11425不存在a,b,c组成的三角形12000a或b或c的值不合法,无法判断13011a或b或c的值不合法,无法判断142012a或b或c的值不合法,无法判断1513130a或b或c的值不合法,无法判断16100100100三角形为等边三角形171001000a或b或c的值不合法,无法判断1810012101a或b或c的值不合法,无法判断1910012100不存在a,b,c组成的三角形20909080三角形为等腰三角形五、等价类划分:输入条件有效等价类编号无效等价类编号三角形a+bc&&a+cb&&c+ba&&a=b&&c=b1a1,a100,b1,b100,c1,c1005a+bc&&a+cb&&c+ba&&a=b||c=b2a+bc&&a+cb&&c+ba&&3非三角形a+bc||a+cb||c+ba4六、实验结论:通过实验要求的条件编写的程序和测试用列的预期输出证明给该程序是正确的实验二:黑盒测试1.一、实验目的:了解xtDate函数的边界值分析测试用例。二、实验要求:程序有三个输入变量month、day、year(month、day和year均为整数值,并且满足:1≤month≤12、1≤day≤31、1900≤year≤2050。),分别作为输入日期的月份、日、年份,通过程序可以输出该输入日期在日历上第二天的日期。例如,输入为2005年11月30日,则该程序的输出为2005年12月1日。请用等价类测试和边界测试法设计测试用例。三、实验程序:#includestdio.hintIsLeapYear(intYear);intIsCurrentDate(intYear,intMonth,intDay);intReturnNextDay(intYear,intMonth,intDay);intLeapYear_Month_SumDay[12]={31,29,31,30,31,30,31,31,30,31,30,31};voidmain(){intYear=0,Month=0,Day=0,NextDay=0;printf(pleaceenterrightDate(example:2005627):\n);scanf(%d%d%d,&Year,&Month,&Day);NextDay=ReturnNextDay(Year,Month,Day);switch(NextDay){case0:printf(notacurrentdate\n);break;case1:if(Month==12){Year++;Month=1;}else{Month++;}break;}if(NextDay!=0)printf(Theyouinputnextdateis%d-%d-%d.\n,Year,Month,NextDay);}intIsLeapYear(intYear){if(Year%4==0){if(Year%400)return1;else{if(Year%100==0)return0;elsereturn1;}}else{return0;}}intIsCurrentDate(intYear,intMonth,intDay){if((Year1900)&&(Year2050)&&(Month12)&&(Month1)&&(Day1)&&(Day31))printf(输入的数据有错,请重新输入!!);elsereturn1;}intReturnNextDay(intYear,intMonth,intDay){intThisMonthSumDay;if(IsCurrentDate(Year,Month,Day)==1){ThisMonthSumDay=LeapYear_Month_SumDay[Month-1];if(Month==2){if(IsLeapYear(Year)==0)ThisMonthSumDay--;}if(DayThisMonthSumDay){return++Day;}else{if(Day==ThisMonthSumDay){return1;}else{return0;}}}else{return0;}}四、实验用例:用例IDYearMonthDay预期输出12000112000-1-222000231不可能320013302001-3-31419004151900-4-1652001229不可能620042282004-2-29五、等价类划分:输入条件编号有小等价类编号无效等价类输入年份11900=n=20507n2050||n1900输入月份21=y=128y12||y1输入日期31=r=319r31||r1闰年41=r=2910r29||r1非闰年51=r=2811r28||r12.一、实验目的:了解找零钱组合的方法二、实验要求:假设商店货品价格(R)都不大于100元(且为整数),若顾客付款(P)在10元内,现有一个程序能在每位顾客付款后给出找零钱的最佳组合(找给顾客货币张数最少)。假定此商店的货币面值只包括:50元(N50)、10元(N10)、5元(N5)、1元(N1)四种。请结合等价类划分法和边界值分析法为上述程序设计出相应的测试用例。三、实验程序:#includeiostream.hvoidmain(){chari;inta,b;//a代表商品价钱,b代表顾客付的钱。do{cout请输入商品价钱a(1—100):;cina;cout请输入顾客付款b(1—100):;cinb;cout最佳找零方案:endl;cout(b-a)/50张50元endl;cout((b-a)%50)/10张10元endl;cout((b-a)%10)/5张5元endl;cout(b-a)%5张1元\nendl;cout你还要继续吗?输入n表示结束endl;cini;}while(i!='n');}四、等价类划分:输入条件有效等价类编号无效等价类编号付款金额1=b=1001b100||b13商品金额1a1002a=100||a=14五、测试用例:测试用例输入数据预期输出实际输出ba最佳找钱路径110050一张50一张50210040一张50、一张10一张50、一张10315040无法推算无法推算4100150无法推算无法推算实验三:白盒测试一、实验目的:根据流程图编写程序,并使用逻辑覆盖测试方法测试二、实验要求:语句1:k=x*y-1;j=sqrt(k);语句2:j=x*y+10;语句3:j=j%3;要求:(1)画出该程序的控制流图。(2)分别以语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖方法设计测试用例,并写出每个测试用例的执行路径。三、实验程序:#includestdio.hvoidmain(){intx=0,y=0,k=0;floatj=5;printf(请输入X,Y的值);scanf(%d%d%d\n,&x,&y,&j);if(x8&&y5){if(x16||y10){j=j%3;printf(%d\n,j);}elsereturn0;}elseif(x0||y0){j=x*y+10;printf(%d\n,j);}else{k=x*y-1;j=sqrt(k);printf(%d\n,j);}X8ANDY5X0ORY0引用语句1引用语句2NYNYX16ORY10语引用句3NY四、控制流程图:五、语句覆盖:测试的路径为{x=10,y=6};程序执行的路径为:137;六、判定覆盖:测试的路径为:{x=17,y=11};{x=9,y=7};{x=7,y=6};{x=-1,y=-2};(1)当测试路径为{x=17,y=11}时,程序执行的路径为:1367;(2)当测试路径为{x=9,y=7}时,程序执行的路径为:137;(3)当测试路径为{x=7,y=6}时,程序执行的路径为:1257;(4)当测试路径为{x=-1,y=-2}时,程序执行的路径为:1247;七、条件覆盖:(1)第一个判定((x8)&&(y5)):1、条件x8取真值记为T1,取假值记为-T12、条件z5取真值记为T2,取假值记为-T2(2)第二个判定((x0)||(y0)):1、条件x0取真值记为T3,取假值记为-T32、条件y0取真值记为T4,取假值记为-T4(3)第三个判定((x16)||(y10)):1、条件x16取真值记为T5,取假值记为-T52、条件y10取真值记为T6,取假值记为-T6根据条件覆盖的基本思想,要使上述6个条件可能产生的12种情况至少满足一次,设计测试用例如下:测试用例执行路径覆盖条件覆盖分支X=17,y=111-3-6-7T1,T2,T3,T4,T5,T63-6-7X=-1,y=-11-2-4-7-T1,-T2,-T3,-T4,-T5,-T62-4-7八、判定/条件覆盖:根据判定/条件覆盖的基本思想,只需设计以下两个测试用例便可以覆盖6个条件的12种取值以及6个判定分支。测试用例执行路径覆盖条件覆盖分支X=17,y=111-3-6-7T1,T2,T3,T4,T5,T63-6-7X=-1,y=-11-2-4-7-T1,-T2,-T3,-T4,-T5,-T62-4-7九、组合覆盖:对函数中的各个判定的条件取值组合加以标记:1、x8,y5记做T1T2,第一个判定的取真分支;2、x8,y=5记做T1-T2,第一个判定的取假分支;3、x=8,y5记做-T1T2,第一个判定的取假分支;17
本文标题:软件测试实验报告
链接地址:https://www.777doc.com/doc-4276382 .html