基本概念•软件测试的定义和目标•软件测试的原则和误区•软件测试的类型•软件测试的对象•集成测试策略的分类•系统测试的分类•因果图法中原因和结果之间的关系•面向对象单元测试的内容•软件测试工具•黑盒测试和白盒测试技术的优缺点•软件测试的各个阶段•软件功能易用性测试的内容•软件测试V模型•在Junit测试框架中,测试方法必须以testXxx命名;且该框架可以单独使用•QTP是以插件方式完成对不同架构软件的测试。•LoadRunner可以对测试结进行分析,进行缺陷的定位。它的脚本语言是C语言。•1.三角形问题接受三个整数a,b,c作为输入,用做三角形的边,程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。•(1)试用等价类法根据输出划分等价类进行测试。•(2)若每边的输入范围为1~100,请用边界值法设计健壮性边界值测试用例。案例分析•使用输出确定等价类–R1={等边三角形}–R2={等腰三角形}–R3={不等边三角形}–R4={不构成三角形}•测试用例如下:编号abc预期输出TC1555等边三角形TC2223等腰三角形TC3345不等边三角形TC4412不构成三角形•健壮性边界值•0•1•2•50•99•100•101•测试用例如下:•2.在某网站申请免费信箱时,要求用户必须输入用户名、密码及确认密码,对每一项输入条件的要求如下:•用户名要求为4~16位,使用英文字母、数字、“-”、“_”,并且首字母必须为字母或数字;密码要求为6~16位只能使用字母、数字以及“-”、“_”,并且区分大小写。•请使用等价类划分法划分出等价类,写出测试用例。•等价类表输入条件有效等价类编号输入条件无效等价类编号用户名4~16位1用户名少于4位8首字符为字母2多于16位9首字符为数字3首字符为除字母、数字之外的其他字符10英文字母、数字、“-”、“_”组合4组合中含有除英文字母、数字、“-”、“_”之外的其他特殊字符11密码6~16位5密码少于6位12英文字母、数字、“-”、“_”组合6多于16位13组合中含有除英文字母、数字、“-”、“_”之外的其他特殊字符14确认密码内容与密码相同7确认密码内容与密码相同,但字母大小写不同15•根据以上等价类表设计的测试用例:测试用例用户名密码确认密码预期输出TC1abc_2000Abc_123Abc_123注册成功TC22000-abc123-abc123-abc注册成功TC3abc1234567812345678提示用户名错误TC4abcdefghijk1234561234567812345678提示用户名错误TC5_abc1231234567812345678提示用户名错误TC6abc&1231234567812345678提示用户名错误TC7abc_1231234512345提示密码错误TC8abc_123abcdefghijk123456abcdefghijk123456提示密码错误TC9abc_123abc&123abc&123提示密码错误TC10abc_123abc_123abc_123提示密码错误•3.某软件规格说明书中包含这样的要求:输入的第一个字符必须是A或B,第二个字符必须是数字,在此情况下进行文件的修改,但如果第一个字符不正确,则给出信息L;如果第二个字符不是数字,则给出信息M。试根据要求划出因果图,将因果图转换为决策表,并设计出测试用例。•因果图•将因果图转换成如下所示的决策表:12345678C111110000C211001100C31010101010111100E1√√E2√√E3√√√不可能√√测试用例#3#B*7*MC2CM•测试用例如下:编号输入数据预期输出TC1#3修改文件TC2#B给出信息MTC3*7修改文件TC4*M给出信息MTC5C2给出信息NTC6CM给出信息N和信息M•4.有如下程序•if(x100&&y500)•score=score+1•if(x=1000||z5000)•score=score+5•试设计测试用例,实行逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖)•语句覆盖:•判定覆盖:测试用例x,y,z(x100&&y500)x=1000||z5000执行路径TC12000,600,6000TTace测试用例x,y,z(x100&&y500)x=1000||z5000执行路径TC12000,600,6000TTaceTC250,600,2000FFabd•条件覆盖:•判定/条件覆盖:测试用例x,y,zx100y500x=1000z5000执行路径TC150,600,6000FTFTabeTC22000,200,1000TFTFabe测试用例x,y,z(x100&&y500)x=1000||z5000执行路径TC12000,600,6000TTaceTC250,200,2000FFabd测试用例x,y,zx100y500x=1000z5000执行路径TC32000,600,6000TTTTaceTC450,200,2000FFFFabd•条件组合覆盖①x100y500②x100y=500③x=100y500④x=100y=500⑤x=1000z5000⑥x=1000z=5000⑦x1000z5000⑧x1000z=5000测试用例x,y,z覆盖组合TC12000,600,6000①⑤TC650,600,6000③⑦TC72000,200,1000②⑥TC850,200,2000④⑧•路径覆盖•TC1:x=2000,y=600,z=6000覆盖ace•TC2:x=50,y=600,z=2000覆盖abd•TC3:x=2000,y=600,z=2000覆盖acd•TC4:x=2000,y=200,z=1000覆盖abe•5.运用逻辑覆盖的方法测试程序•if(x1&&y=1)•z=z*2•if(x=3||z1)•y++•语名覆盖:X=3,y=1,z=2;执行路径:1,2,3,4•判定覆盖:•X=3,y=1,z=2;执行路径:1,2,3,4•X=1,y=1,z=1;执行路径:1,3•条件覆盖•X=3,y=0,z=1;执行路径:1,3,4•X=1,y=1,z=2;执行路径:1,3,4•判定/条件覆盖•X=3,y=1,z=2;执行路径:1,2,3,4•X=1,y=0,z=1;执行路径:1,3•条件组合覆盖•X=3,y=1,z=2;执行路径:1,2,3,4•X=3,y=0,z=1;执行路径:1,3,4•X=1,y=1,z=2;执行路径:1,3,4•X=1,y=0,z=1;执行路径:1,3•路径覆盖•X=3,y=1,z=2;执行路径:1,2,3,4•X=3,y=0,z=1;执行路径:1,3,4•X=2,y=1,z=1;执行路径:1,2,3•X=1,y=1,z=1;执行路径:1,3•6.针对下面C语言程序绘制控制流图,用两种公式计算独立路径的数量,设计测试用例说明其覆盖的路径。•voidsort(intiRecordNum,intiType)•1{•2intx=0;•3inty=0;•4while(iReordNum0)•5{•6if(0==iType)•7{x=y+2;break;}•8else•9if(1==iType)•10x=y+10;•11else•12x=y+20;•13}•14}•控制流图如图所示•独立路径数:•V(G)=E-N+2=10-8+2=4•V(G)=P+1=3+1=4。•基本路径:•路径1:4-14•路径2:4-6-7-14•路径3:4-6-8-10-13-4-14•路径4:4-6-8-11-13-4-14•测试用例如下:测试用例输入预期输出覆盖路径iRecordNumiTypexTC10任意0路径1TC2102路径2TC31110路径3TC41220路径4•7.针对下面C语言程序绘制控制流图,用两种公式计算独立路径的数量,设计测试用例说明其覆盖的路径。•1main()•2{•3intnum1=0,num2=0,score=100;•4inti;•5charstr;•6scanf(“%d,%c\n”,&i,&str);•7while(i5)•8{•9if(str=’T’)•10num1++;•11elseif(str=’F’)•12{•13score=score–10;•14num2++;•15}•16i++;•17}•18printf(“num1=%d,num2=%d,score=%d\n”,num1,num2,score);•19}•控制流图如图所示•独立路径数:•V(G)=E-N+2=10-8+2=4•V(G)=P+1=3+1=4•基本路径:•Path1:7→18•Path2:7→9→10→16→7→18•Path3:7→9→11→15→16→7→18•Path4:7→9→11→13→14→15→16→7→18•测试用例如下:测试用例输入预期输出执行路径istrnum1num2scoreTC15‘T’00100Path1TC24‘T’10100Path2TC34‘T’00100Path3TC44‘T’0199Path4