您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 软件测试-黑盒测试与白盒测试
白盒与黑盒的概念黑盒测试技术白盒测试技术白盒与黑盒的比较黑盒与白盒X=2Y=4?黑盒测试又叫功能测试,它关注的是被测软件功能的实现,而不是内部逻辑。在黑盒测试中,被测对象的内部结构、运作情况对测试人员是不可见的。黑盒测试黑盒测试关注点:功能错误与遗漏界面错误数据结构与外部数据库访问错误性能错误初始化与终止错误黑盒与白盒白盒测试又叫玻璃盒测试、透明盒测试、结构化测试、基于代码的测试等。白盒测试需要对系统内部的结构和工作原理有一个清楚的了解。白盒测试白盒测试关注逻辑细节关于控制流和数据流无意识的假设很可能造成错误笔误是随机的Beizer:“错误潜伏在角落里,聚集在边界上,而白盒测试更可能发现它。”X=2Y=2XY=4?黑盒测试技术X=2Y=4?等价类技术等价类划分不考虑程序的内部结构,只是根据软件的需求说明对输入的范围进行细分,然后再从分出的每个区域内选取一个有代表性的测试数据。例如:一程序,功能是计算两个1-100整数的和(两个数由用户键盘输入)。试设计等价类。黑盒测试技术X=2Y=4?等价类技术无效等价类1有效等价类1-100之间无效等价类100加数数值非数值整数小数11-100100字母特殊字符空格空白黑盒测试技术X=2Y=4?等价类技术黑盒测试技术X=2Y=4?等价类方法小结等价类的定义等价类、有效等价类、无效等价类。划分步骤先考虑数据类型,再考虑数据范围。画示意图,区分等价类并编号从一个等价类中选举一组测试数据构造测试用例黑盒测试技术X=2Y=4?等价类方法小结常用的等价类划分方法规定了输入值的范围,可分为1个有效类和两个无效类如果输入是布尔表达式,可分为1个有效类和1个无效类如果规定了输入数据是一组值,而且程序对不同的输入值有不同的处理,则每个允许的输入值是一个有效等价类,此外还有一个无效等价类。如果规定了输入数据必须遵循的规则,可以划分出一个有效等价类和若干个无效等价类。黑盒测试技术X=2Y=4?边界值技术例如:一程序,功能是计算两个1-100整数的和(两个数由用户键盘输入)。试设计等价类。边界值技术常和等价类结合使用,测试边界时,一般测试边界值和正好超出边界值一个单位的值。黑盒测试技术X=2Y=4?因果图法案例:某奖金计算软件实现如下功能:该软件可以计算某公司的年终奖,该公司员工分为普通员工和管理人员。员工表现分为普通、优秀和特殊贡献(普通与优秀员工都可以有特殊贡献,普通员工表现普通和管理人员表现普通拿的奖金是不同的。)根据员工分类和表现,奖金分为1类奖金,2类奖金……使用该软件时,输入员工的种类和表现,就会输出对应的奖金类别。请为该软件设计测试用例。黑盒测试技术X=2Y=4?因果图法分析:1、首先为输入输出条件编号输入条件员工类别:普通员工A1、管理人员A2员工表现:普通B1、优秀B2、特殊贡献B3输出条件奖金类别:1类奖金C1、2类奖金C2……员工表现:黑盒测试技术X=2Y=4?因果图法分析:2、分析各种有效的输入条件组合普通员工A1+B1-C1A1+B2-C2A1+B1+B3-C3A1+B2+B3-C4管理人员A2+B1-C5A2+B2-C6A2+B1+B3-C7A2+B2+B3-B8黑盒测试技术X=2Y=4?因果图法分析:3、根据以上条件分析,编写测试用例。黑盒测试技术X=2Y=4?因果图因果图表现的是输入条件(原因)之间和以及输入条件与输出结果(结果)之间的对应关系。其中:CI表示原因,EI表示结果。黑盒测试技术X=2Y=4?流程图法算法流程图?业务流程图针对整个系统业务功能流程绘制业务流程图,写用例,覆盖所有的路径分支。详细了解需求根据需求说明或界面原型,找出各页面之间的流转关系画出业务流程图写用例,覆盖所有的路径分支。黑盒测试技术X=2Y=4?黑盒技术小结运用流程图法测试软件的总体业务流程针对具体的模块运用等价类与边界值方法进行测试如果涉及到多个输入条件组合情况,应用因果图法测试流程图法等价类法边界值法因果图法黑盒测试技术X=2Y=4?综合应用1、计算三角形面积程序输入三个整数A、B、C,输出以A、B、C为三边的三角形面积(1=A\B\C100),结果保留2位小数。黑盒测试技术X=2Y=4?综合应用2、163邮箱注册模块(不考虑重复用户)注册页面黑盒测试技术X=2Y=4?综合应用测试用例黑盒测试技术X=2Y=4?综合应用黑盒测试技术X=2Y=4?课堂练习1.一程序要求输入三角形的边长(要求整数),根据边长判断三角形类型(不等边、等边、等腰),请画出等价类示意图。2.假定一台ATM机允许提取的增量是50元,总额从50到5000元不等的现金;并要求一次最多取2000元,一天最多取5000元,一天最多取3次。运用等价类和边界值的思想编写测试用例。白盒测试技术静态分析代码走查(WorkThrough):开发组内部采用讲解、讨论和模拟运行的方式进行的查找错误的活动。X=2Y=2XY=4?代码审查(Inspection):在开发组内部进行的,采用讲解、提问和模拟运行的方式查找错误。一般有正式的计划、流程和结果报告。技术评审(Review):开发组、测试人员、QA等人员联合进行的通过讲解、提问并使用编码模板进行错误查找的活动。一般有正式的流程和结果报告。白盒测试技术边界值测试错误隐藏在角落,问题聚集在边界。边界值测试是一种普遍的方法,适用于黑盒与白盒。数据类型的边界值X=2Y=2XY=4?#includestdio.hmain(){inta=32765;intb=3;intc;c=a+b;c=c/2;printf(“%d”,c);}白盒测试技术边界值测试数组的边界值X=2Y=2XY=4?#includestdio.hmain(){inta[5];inti=0;for(i=0;i=5;i++)scanf(“%d”,&a[i]);//输入数组5个元素for(i=1;i5;i++)printf(“%d”,a[i]);//打印数组5个元素}白盒测试技术边界值测试X=2Y=2XY=4?#includestdio.hmain(){inta,b,c;printf(“请输入两个10到99之间的整数”);scanf(“%d%d”,&a,&b);if(a=10||a=99)printf(“a的值应在10到99之间”);elseif(b=10||b=99)printf(“a的值应在10到99之间”);else{c=a+b;printf(“两个数的和为%d”,c);}}分支判断语句的边界值白盒测试技术逻辑覆盖技术逻辑覆盖是一种传统的白盒测试技术,是专门用来测试程序中的分支结构和循环结构。分支结构测试X=2Y=2XY=4?语句覆盖分支覆盖条件覆盖分支-条件覆盖条件组合覆盖路径覆盖白盒测试技术逻辑覆盖技术X=2Y=2XY=4?#includestdio.hmain(){floata,b,x;scanf(“%f%f%f”,&a,&b,&x);if((a1)&&(b==0))x=x/a;if((a==2)||(x1))x=x+1;printf(“%f”,x);}入口(a1)&&(b==0)(a=2)||(x1)返回x=x/ax=x+1YYsabdce白盒测试技术逻辑覆盖技术循环结构测试X=2Y=2XY=4?简单循环?循环变量的初值是否正确?循环变量的最大值是否正确?循环变量的增量是否正确?何时退出循环#includestdio.hmain(){inti=0;intsum=0;while(i10){sum=sum+i;i++;}printf(“%d\n”,sum);}请设计测试用例!白盒测试技术逻辑覆盖技术循环结构测试X=2Y=2XY=4?嵌套循环?外内层循环变量都取最小值?外层最小,内层最大?外层最大,内层最小?循环变量增量?何时退出内循环?何时退出外循环#includestdio.hmain(){inti=0;intj=0;inta[5][5];for(i=0;i5;i++)for(j=0;j5;j++){a[i][j]=i+j;printf(“%d\n”,a[i][j]);}}请设计测试用例!白盒测试技术面向对象测试面向对象基本概念X=2Y=2XY=4?类子类属性方法对象封装继承多态白盒测试技术面向对象测试面向对象的测试X=2Y=2XY=4??面向对象分析的测试?面向对象设计的测试?面向对象编码的测试面向对象程序的单元测试?面向过程语言测函数?面向对象语言测类白盒测试技术面向对象测试案例分析X=2Y=2XY=4?/*形状类,实现该形状周长与面积计算*/publicabstractclassShape{publicabstractdoubleperimeter();publicabstractdoublearea();}/*矩形类,实现该矩形周长与面积计算*/publicclassRectangleextendsShape{inta;intb;publicRectangle(intx,inty){a=x;b=y;}publicdoubleperimeter(){return2*(a+b);}publicdoublearea(){returna*b}}/*正方形类,实现正方形周长与面积计算*/publicclassSquareextendsRectangle{publicSquare(intx,inty){super(x,y);}publicdoubleperimeter(){return4*a;}publicdoublearea(){returna*a}}/*圆形类,实现圆周长与面积计算*/publicclassCircleextendsShape{privateintr;publicCircle(intx){r=x;}publicdoubleperimeter(){return2*3.14*r;}publicdoublearea(){return3.14*r*r;}}白盒测试技术面向对象测试步骤划分优先级,适当取舍X=2Y=2XY=4?类A类D类B类CShape类Rectange类Circle类Square类白盒测试技术面向对象测试步骤对被测类进行静态分析X=2Y=2XY=4?类结构是否合理public、private、protect关键字设置是否合理检查类中成员变量和方法设置是否合理检查程序是否符合相应的编码规范白盒测试技术面向对象测试步骤设计测试用例X=2Y=2XY=4?比如测试Rectangle类时,可以构造以下测试用例:(1,1)(1.2,3.4)(a,b)(,)设计测试驱动程序/*矩形类,实现矩形周长和面积的计算*/publicclassRectangleextendsShape{……publicstaticvoidmain(String[]args){//测试Rectangle类Rectanglerect1=newRectangle(1,1);Rectanglerect2=newRectangle(1.2,3.4);Rectanglerect1=newRectangle(a,b);Rectanglerect1=newRectangle(,);System.out.println(rect1.perimeter());System.out.println(rect1.area());System.out.println(rect2.perimeter());System.out.println(rect2.area());System.out.println(rect3.perimeter());System.out.println(rect3.area());System.out.println(rect4.perimeter());System.out.println(rect4.area());测试技术小结黑盒测试技术X=2Y=2XY=4?白盒测试技术
本文标题:软件测试-黑盒测试与白盒测试
链接地址:https://www.777doc.com/doc-7438316 .html