您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 机械/模具设计 > 软件测试实验(一二三)_答案
黑盒测试(一)和白盒测试(二)实验背景知识结构性测试是知道产品内部工作过程,检测产品内部动作是否按照规格说明书的规定正常进行。结构性测试允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。一、逻辑覆盖结构性测试力求提高测试覆盖率。逻辑覆盖是一系列测试过程的总称,它是在使用白盒测试法时,选用测试用例执行程序逻辑路径的方法。逻辑覆盖按覆盖程度由低到高大致分为以下几类:(1)语句覆盖:设计若干测试用例,使程序中每一可执行语句至少执行一次;(2)判断覆盖:设计用例,使程序中的每个逻辑判断的取真取假分支至少经历一次;(3)条件覆盖:设计用例,使判断中的每个条件的可能取值至少满足一次;(4)判断/条件覆盖:设计用例,使得判断中的每个条件的所有可能结果至少出现一次,而且判断本身所有可能结果也至少出现一次;(5)条件组合覆盖。设计用例,使得每个判断表达式中条件的各种可能组合都至少出现一次;显然,满足⑤的测试用例也一定是满足②、③、④的测试用例。(6)路径覆盖。设计足够的测试用例,使程序的每条可能路径都至少执行一次。如果把路径覆盖和条件组合覆盖结合起来,可以设计出检错能力更强的测试数据用例。二、基本路径测试如果把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行零次和一次,就成为基本路径测试。它是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。①程序的控制流图控制流图是描述程序控制流的一种图示方法。符号○称为控制流图的一个结点,一组顺序处理框可以映射为一个单一的结点。控制流图中的箭头称为边,它表示了控制流的方向,在选择或多分支结构中分支的汇聚处,即使没有执行语句也应该有一个汇聚结点。边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。②计算程序环路复杂性进行程序的基本路径测试时,程序的环路复杂性给出了程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。所谓独立路径,是指包括一组以前没有处理的语句或条件的一条路径。只要设计出的测试用例能够确保这些基本路径的执行,就可以使得程序中的每个可执行语句至少执行一次,每个条件的取真分支和取假分支也能得到测试。基本路径集不是唯一的,对于给定的控制流图,可以得到不同的基本路径集。通常环路复杂性可用以下三种方法求得。*将环路复杂性定义为控制流图中的区域数。*设E为控制流图的边数,N为图的结点数,则定义环路复杂性为V(G)=E-N+2。*若设P为控制流图中的简单判定结点数,则有V(G)=P+1。③导出测试用例利用逻辑覆盖方法生成测试用例,确保基本路径集中每条路径的执行。测试用例格式(参考)表1-2测试用例表测试项目名称测试人员编制日期测试覆盖标准测试用例名称编号测试数据预期输出实际输出测试路径12测试结果分析题目:A.上图是某银行历史明细帐的查询界面。历史明细帐功能可以查询查询2年内的存折明细(不包括当天)。帐号是一个16位的数字,但是后四位的和除以5总是余3。请根据所学测试用例设计方法给该功能设计测试用例输入数据有效等价类无效等价类帐号1.全部为数字,16位字符,最后四位数字的和除以5总是32.有非数字存在3.为空4.16or16位字符5.最后四位数字的和除以5不一定等于5日期1.起始日期与截止日期均为数字且截止日期小于20160418为8位数字起始日期=20140418且截止日期=2016MM={1.3.5.7.8.10.12}&&{1=DD=31}OrMM={4,6,9,11}&&{1=DD=30}OrMM={2}&&{1=DD=28}2.有非数字存在3.为空4.8or8位字符5.起始日期20140418or截止日期201604186.MM={1.3.5.7.8.10.12}&&{DD31}OrMM={4,6,9,11}&&{DD30}OrMM={2}&&{DD28}验证码1.为12742.除1274以外其他字符密码1.6-12位字符,不能有特殊符号,不能有空格2.6or12位字符3.存在特殊符号4.为空5.存在空格帐号1327483658111112输入有效147127348ifufh233输入无效2输入无效376876875输入无效43423432345660006输入无效5日期2015041820160305输入有效12016oi-42015okij输入无效2输入无效3201655201699999输入无效42014031820170505输入无效52016033120141302输入无效6验证码1274输入有效17657输入无效2密码Zhangtao1906输入有效1@#$%^#&!输入无效2输入无效3Zhnagtao33输入无效4B.问题描述如下:1.程序读入三个正整数,这三个正整数代表同一三角形三条边的长度,程序根据这三个值判断三角形属于不等边,等腰,等边三角形中的一种,假定输入的三个正整数的值都是0~100。2.一元二次方程式AX2+BX+C=0的求根程序有以下功能:①.输入A、B、C三个系数;②.输出根的性质的信息,包括两个相等或不相等的实根,或无实根③.打印根的值(如有实根)提示:240bac时,方程20axbxc的解:242bbacxa或x=242bbaca。要求:1.根据问题1、2的说明,画出对应的程序流程图开始输入三边x,y.zx+yz&&x+zy&&y+zx无法构成三角形x=yory=zorx=zx=y=z构成等腰三角形构成等边三角形YNYYNN0x100&&0y100&&0z100Y构成三角形N2.根据边界值分析法,等价类划分法给问题1、2设计测试用例输入数据有效等价类无效等价类三角形三边分别为,x,y,z1.x+yz&&x+zy&&y+zx3.0x100&&0y100&&0z1005.x=yory=zorx=z6.x=y=z2.x+y=zorx+z=yory+z=x4.x100ory100orz100x=3y=4z=5输入有效1,3x=101y=90z=33输入无效4x=1y=1z=3输入无效2x=2y=2z=3输入有效1,3,5x=2y=2z=2输入有效1,3,5,6输入数据有效等价类无效等价类输入三个系数a,b,c1.a,b,c均为有理数3.b*b-4*a*c04.b*b-4*a*c=06.a0&&a02.a,b,c均为无理数5.b*b-4*a*c07.a=0a=2,b=5,c=2输入有效值1,3,6a=1,b=2,c=1输入有效值1,4,6a=√2,b=2,c=1输入无效值2a=2,b=3,c=2输入无效值5a=0输入无效值73.写程序完成问题1、2的功能(语言任选)问题1:#includestdio.hvoidmain(){floata,b,c;printf(请输入三角形的三条边长x,y,z:\n);scanf(%f,&a);scanf(%f,&b);scanf(%f,&c);if((a=1&&a=100)&&(b=1&&b=100)&&(c=1&&c=100)){if(a+bc||a+cb||b+ca)/*判断是否能构成三角形*/printf(不能构成三角形!\n);elseif((a==b&&(a!=c))||(a==c&&(b!=c))||(b==c&&(a!=c)))/*判断是否为等腰三角形*/printf(构成等腰三角形\n);elseif(a==c&&a==b)/*判断是否为等边三角形*/printf(构成等边三角形\n);elseprintf(构成一般三角形!\n);}elseprintf(请输入1-100之间的数!\n);}问题2:#includestdio.h#includemath.hintmain(void){doublea,b,c,result,root1,root2;scanf(%lf%lf%lf,&a,&b,&c);result=b*b-4*a*c;if(result=0){if(result==0){root1=(-b)/(2*a);printf(有两个相同的实根%.4lf\n,root1);}else{root1=(-b+sqrt(result))/(2*a);root2=(-b-sqrt(result))/(2*a);printf(有两个不同的实根%.4lf和%.4lf\n,root1,root2);}}else{printf(无实根\n);}}4.对问题1、2用白盒测试用例的设计方法(语句覆盖、判定覆盖、条件覆盖、条件组合覆盖)设计测试用例5.语句覆盖:a)x=2y=4z=3,b)x=1y=1z=3,c)x=101y=90z=33,d)x=2y=2z=3,e)x=2y=2z=26.判定覆盖a)x=2y=4z=3,b)x=1y=1z=3,c)x=101y=90z=33,d)x=2y=2z=3,e)x=2y=2z=27.条件覆盖a)x=2y=4z=3,b)x=1y=1z=3,c)x=101y=90z=33,d)x=2y=2z=3,e)x=2y=2z=28.条件组合覆盖a)x=2y=4z=3,b)x=1y=1z=3,c)x=101y=90z=33,d)x=2y=2z=3,e)x=2y=2z=29.语句覆盖:a)a=2,b=5,c=2b)a=1,b=2,c=1c)a=√2,b=2,c=1d)a=2,b=3,c=2e)a=010.判定覆盖a)a=2,b=5,c=2b)a=1,b=2,c=1c)a=√2,b=2,c=1d)a=2,b=3,c=2e)a=011.条件覆盖a)a=2,b=5,c=2b)a=1,b=2,c=1c)a=√2,b=2,c=1d)a=2,b=3,c=2e)a=012.条件组合覆盖a)a=2,b=5,c=2b)a=1,b=2,c=1c)a=√2,b=2,c=1d)a=2,b=3,c=2e)a=013.利用设计的程序和测试用例,使用这些测试用例进行测试,给出测试的情况。1.1.x=3y=4z=52.x=1y=1z=33.x=101y=55z=254.x=5y=5z=75x=6y=6z=62.1.a=2b=5c=22.a=1b=2c=13.a=2b=3c=24.a=0b=2c=3C.下面是冒泡排序的程序,其中array:存放一组整数,n:没存放数组的长度。(1)试计算此程序段的环形复杂性;开始输入Array,nArray为空||n==0NY结束数组或n不能为0N1无需排序NY数组全升序排列数组全降序排列调换全部元素调换部分元素YNYN(2)用基本路径覆盖法给出测试路径;1.Array为空2.Array非空,N=13.Array非空,N1,全升序4.Array非空,N1,全降序5.Array非空,N1,部分升序,部分降序(3)考虑循环嵌套,为各测试路径设计测试用例;(4)添加驱动程序,执行测试用例,分析结果。boolBubble(int*array,intn){inti,j,temp;if(!array)returnfalse;for(i=0;in-1;i++){for(j=0;jn-i-1;j++){if(array[j]array[j+1])//将较小的元素放在前面{temp=array[j];array[j]=array[j+1];array[j+1]=temp;}}}returntrue;}实验步骤、要求(1)根据题目编写程序,并调试通过。(2)根据结构性测试技术设计测试用例1.语句覆盖①array[10]={};n=0;②array[1]={1};n=1;③array[5]={5,4,3,2,1};n=5;④array[5]={1,2,3,4,5
本文标题:软件测试实验(一二三)_答案
链接地址:https://www.777doc.com/doc-1991494 .html