11. if(a==b && b==c && a==c) //这里可以省掉一个判断 12. { 13. printf("1是等边三角形"); 14. } 15. else 16. { 17. if(a==b || b==c || a==c) 18. { 19. printf("2是等腰三角形"); 20. } 21. else 22. { 23. if(a*a+b*b==c*c || a*a+c*c==b*b || b*b+c*c==a*a) 24. { 25. printf("3是直角三角形"); 26. } 27. else 28. { 29. printf("4是一般三角形"); 30. } 31. } 32. } 33. } 34. else 35. { 36. printf("5不能组成三角形"); 37. } 38. } 39. else 40. { 41. printf("6某些边不满足限制"); 42. } 43. } 点评:这样的思路做出来的程序只能通过手工方式来测试所有业务逻辑,而且这个程序只能是DOS界面版本了,要是想使用web或图形化界面来做输入,就得全部写过代码。
实验3、黑盒测试:决策表测试方法
20 15 — 20 16 学年第 2 学期 软件测试技术课程 实验报告 学院:计算机科学技术 专业:软件工程 班级:软件二班 姓名:吴德宁 学号:041340217 任课教师:刘玉宝
实验日期:2016年 5 月 17 日实验题目实验3、黑盒测试:决策表测试方法 实验目的 1、掌握决策表的概念 2、掌握决策表测试用例设计法。 实验内容 1、对NextDate问题运用决策表法设计测试用例,并执行测试,撰写实验报告。 NextDate (int month, int day, int year)函数规定:输入三个整数:month、day 和year,函数的输出为输入日期后一天的日期。例如,输入为2006年3月7日,则函数的输出为2006年3月8日,year满足1920≤year≤2050。 实验步骤: 1)构造决策表 ●M1={月份:30天/月}, M2={月份: 31天/月,12月除外}, M3={月份: 12月},M4={月份: 2月} ●D1={日期:1<=日<=27}, D2={日期:日=28}, D3={日期:日=29} , D4={日期:日=30}, D5={日期:日=31} ●Y1={年:闰年},Y2={年:平年} 注:二月:平年28天,闰年29天 条件桩: ●C1:月份在{M1,M2,M3,M4}中之一 ●C2:日期在{D1,D2,D3,D4 ,D5}中之一 ●C3:年在{Y1,Y2}中之一 动作桩: ●A1:不可能 ●A2:日期增1 ●A3:日期复位(置1) ●A4:月份增1 ●A5:月份复位(置1) ●A6:年增1 1 2 3 4 5 6 7 8 9 10 C1:月M1 M1 M1 M1 M1 M2 M2 M2 M2 M2
黑盒测试的五种典型方法
1.等价类划分 等价类划分是一种典型的黑盒测试方法。等价类是指某个输入域的集合。它表示对揭露程序中的错误来说,集合中的每个输入条件是等效的。因此我们只要在一个集合中选取一个测试数据即可。等价类划分的办法是把程序的输入域划分成若干等价类,然后从每个部分中选取少数代表性数据当作测试用例。这样就可使用少数测试用例检验程序在一大类情况下的反映。 在考虑等价类时,应该注意区别以下两种不同的情况: 有效等价类:有效等价类指的是对程序的规范是有意义的、合理的输入数据所构成的集合。在具体问题中,有效等价类可以是一个,也可以是多个。 无效等价类:无效等价类指对程序的规范是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个。 确定等价类有以下几条原则: 如果输入条件规定了取值范围或值的个数,则可确定一个有效等价类和两个无效等价类。例如,程序的规范中提到的输入条包括“……项数可以从1 到999……”,则可取有效等价类为“l考项数<999”,无效等价类为“项数<l,,及“项数>999”。 输入条件规定了输入值的集合,或是规定了“必须如何”的条件,则可确定一个有效等价类和一个无效等价类。如某程序涉及标识符,其输入条件规定“标识符应以字母开头……”则“以字母开头者”作为有效等价类,“以非字母开头”作为无效等价类。 如果我们确知,已划分的等价类中各元素在程序中的处理方式是不同的,则应将此等价类进一步划分成更小等价类。 输入条件有效等价类无效等价类 。。。。。。 。。。。。。。。。。。。 。。。。。。。。。。。。 。。。。。。 根据已列出的等价类表,按以下步骤确定测试用例: 为每个等价类规定一个唯一的编号; 设计一个测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖; 设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步,使所有无效等价类均被覆盖。这里强调每次只覆盖一个无效等价类。这是因为一个测试用例中如果含有多个缺陷,有可能在测试中只发现其中的一个,另一些被忽视。等价类划分法能够全面、系统地考虑黑盒测试的测试用例设计问题,但是没有注意选用一些“高效的”、“有针对性的”测试用例。后面介绍的边值分析法可以弥补这一缺点。 2.因果图 等价类划分法并没有考虑到输入情况的各种组合。这样虽然各个输入条件单独可能出错的情况已经看到了,但多个输入情况组合起来可能出错的情况却被忽略。采用因果图方法能帮助我们按一定步骤选择一组高效的测试用例,同时,还能为我们指出程序规范的描述中存在什么问题。
如何编写单元测试用例(白盒测试)
如何编写单元测试用例(白盒测试)。 一、单元测试的概念 单元通俗的说就是指一个实现简单功能的函数。单元测试就是只用一组特定的输入(测试用例)测试函数是否功能正常,并且返回了正确的输出。 测试的覆盖种类 1.语句覆盖:语句覆盖就是设计若干个测试用例,运行被测试程序,使得每一条可执行语句至少执行一次。 2.判定覆盖(也叫分支覆盖):设计若干个测试用例,运行所测程序,使程序中每个判断的取真分支和取假分支至少执行一次。 3.条件覆盖:设计足够的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次。 4.判定——条件覆盖:设计足够的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次,并且每个可能的判断结果也至少执行一次。 5.条件组合测试:设计足够的测试用例,运行所测程序,使程序中每个判断的所有条件取值组合至少执行一次。 6.路径测试:设计足够的测试用例,运行所测程序,要覆盖程序中所有可能的路径。 用例的设计方案主要的有下面几种:条件测试,基本路径测试,循环测试。通过上面的方法可以实现测试用例对程序的逻辑覆盖,和路径覆盖。 二、开始测试前的准备
在开始测试时,要先声明一下,无论你设计多少测试用例,无论你的测试方案多么完美,都不可能完全100%的发现所有BUG,我们所需要做的是用最少的资源,做最多测试检查,寻找一个平衡点保证程序的正确性。穷举测试是不可能的。所以现在进行单元测试我选用的是现在一般用的比较多的基本路径测试法。 三、开始测试 基本路径测试法:设计出的测试用例要保证每一个基本独立路径至少要执行一次。 函数说明:当i_flag=0;返回 i_count+100 当i_flag=1;返回 i_count *10 否则返回 i_count *20 输入参数:int i_count , int i_flag 输出参数: int i_return; 代码: 1int Test(int i_count, int i_flag) 2 {
白盒测试实验报告-范例
实验报告书 实验一白盒测试 学生姓名:李庆忠 专业:计算机科学与技术学号:1341901317
白盒测试实验报告 一实验内容 1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法; 2、举例进行白盒测试,使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合 覆盖、路径覆盖进行测试。 3、通过试验和应用,要逐步提高和运用白盒测试技术解决实际测试问题的能力; 4、熟悉C++编程环境下编写、调试单元代码的基本操作技术和方法; 5、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例, 测试报告等) 二实验原理 白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。其又称为结构测试。 流程图如下图所示 实验代码 #include"stdio.h"
int main() { int x,y,z; scanf("%d%d",&x,&y); if((x>0)&&(y>0)) { z=x+y+10; } else { z=x+y-10; } if(z<0) { z=0; printf("%d\n",z); } else { printf("%d\n",z); } return 0; } 语句覆盖是指选择足够的测试,使得程序中每个语句至少执行一次。如选择测试x=1,y=1和x=1,y=-1可覆盖所有语句。 判定覆盖是指选择足够的测试,使得程序中每一个判定至少获得一次“真”值和“假”值,从而使得程序的每个分支都通过一次(不是所有的逻辑路径)。选择测试x=1,y=1和x=1,y=-1可覆盖所有判定。 条件覆盖是指选择语句多数的测试,使得程序判定中的每个条件能获得各种不同的结果。选择测试x=1,y=1和x=-1,y=-1可覆盖所有条件。 判定/条件覆盖是指选择足够多的测试,使得程序判定中每个条件取得条件可能的值,并使每个判定取到各种可能的结果(每个分支都通过一次)。即满足条件覆盖,又满足判定覆盖。选择测试x=1,y=1和x=-1,y=-1可覆盖所有判定/条件。 条件组合覆盖是指选择足够的测试,使得每个判定中的条件的各种可能组合都至少出现一次(以判定为单位找条件组合)。 注:a,条件组合只针对同一个判断语句存在多个条件的情况,让这些条件的取值进行笛卡尔乘积组合。 b,不同的判断语句内的条件取值之间无需组合。 c,对于但条件的判断语句,只需要满足自己的所有取值即可。 选择测试用例x=1,y=1;x=1,y=-1,x=-1,y=1和x=-1,y=-1可覆盖所有条件组合。 路径覆盖是分析软件过程流的通用工具,有助分离逻辑路径,进行逻辑覆盖的测试,所用的流程图就是讨论软件结构复杂度时所用的流程图。
黑盒测试方法课程练习题及答案
黑盒测试方法课程练习题 练习1 某城市的电话号码由三部分组成。第一部分为地区码:空白或三位数字;第二部分为前缀:非0或1开头的三位数;第三部分为主要电话号码:八位数字。 请用等价分类法来设计测试用例。 划分等价类: 输入等价类有效等价类无效等价类 地区码空白(1) 三位数字(2)不是空白(3) 有非数字字符(4)少于三位数字(5)多于三位数字(6) 前缀不是0开头(7) 不是1开头(8) 三位数字(9)0开头(10) 1开头(11) 有非数字字符(12)少于三位数字(13)多于三位数字(14) 电话号码八位数字(15)有非数字字符(16) 少于三位数字(17) 多于三位数字(18)设计测试用例: 选取数据覆盖等价类编号 234-12345678 (1)(7)(8)(9)(15) 123-234-12345678 (2)(7)(8)(9)(15) 123-234-12345678 (3) 1we-234-12345678 (4) 12-234-12345678 (5) 1234-234-12345678 (6) 123-012-12345678 (10) 123-123-12345678 (11) 123-a12-12345678 (12) 123-23-12345678 (13) 123-2345-12345678 (14) 123-234-1234567a (16) 123-234-12334 (17) 123-234-123456789 (18)
练习2 某城市的电话号码由三部分组成。第一部分为地区码:空白或三位数字;第二部分为前缀:非0或1开头的三位数;第三部分为主要电话号码:八位数字。 等价类结合边界值法: 选取数据覆盖等价类编号 234-12345678 (1)(7)(8)(9)(15) 123-234-12345678 (2)(7)(8)(9)(15) 123-234-12345678 (3) 1we-234-12345678 (4) 12-234-12345678 (5) 1-234-12345678 (5) 1234-234-12345678 (6) 12345-234-12345678 (6) 123-012-12345678 (10) 123-123-12345678 (11) 123-a12-12345678 (12) 123-23-12345678 (13) 123-2-12345678 (13) 123-2345-12345678 (14) 123-23456-12345678 (14) 123-234-12334 (17) 123-234-123 (17) 123-234-123456789 (18) 123-234-12345678912 (18) 练习3 有一个处理单价为1元5角钱的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“可乐”、“雪碧”、或“红茶”按钮,相应的饮料就送出来。若投入的是2元硬币,在送出饮料的同时退还5角硬币。 请用因果图分析法来设计测试用例。 原因结果 (1)投入1元5角硬币(9)送出“可乐”按钮 (2)投入的是2元硬币(10)送出“雪碧”按钮 (3)按下“可乐”按钮(11)送出“红茶”按钮 (4)按下“雪碧”按钮(12)退还5角硬币 (5)按下“红茶”按钮 中间按钮: (6)按下“可乐”、“雪碧”、或“红茶”按钮 (7)退还5角硬币 (8)钱已付清
软件测试案例三角形白盒测试
一、核心程序代码 /** 判断三角形的类*/ public class TriangleTestMethod { /** 判断三角形的种类。参数a, b, c 分别为三角形的三边, * 返回的参数值为0 ,表示非三角形; * 为 1 ,表示普通三角形; * 为 2 ,表示等腰三角形; * 为 3 ,表示等边三角形。 */ public static int comfirm( int a, int b, int c) { if ((a + b > c) && (b + c > a) && (a + c > b)) { if ((a == b) && (b ==c)) // 判断为等边三角形 return 3; if ((a == b) || (b == c) || (a == c)) // return 2; else // 判断为普通三角形return 1; } else { // 为非三角形 return 0; } } } // 判断为三角形判断为等腰三角形
、程序流程图 三、测试用例
F6, F7, T8 Case28 a=4, b=3, c=3 2 T1, T2, T3, F4, T5, F6, T7, F8 2 Case29 a=3, b=4, c=5 1 T1, T2, T3, F4, F5, F6, F7, F8 1 Case30 a=3, b=4, c=3 2 T1, T2, T3, F4, F5, F6, F7, T8 2 备注 其他条件组合,无法到达结束 四、程序控制流图 -> a B a == b E F b == c Return 3 Ffet urn 2 Ret ur n 1 K 输入 期望输出 覆盖对象 测试结果 Case31 a=1,b=6,c=7 0 A->D 0 Case32 a=7, b=6, c=1 0 A->B->D 0 Case33 a=1,b=7,c=6 0 A->B->C->D D Return 0 G b == c Ret ur n 2 H 斗 J a == C
黑盒测试流程及方法
(又叫用户体验测试UAT) Bugzilla是Mozilla公司提供的一款开源的免费Bug(错误或是缺陷)追踪 系统,用来帮助你管理软件开发,建立完善的BUG跟踪体系。Bugzilla是一开源Bug Tracking System,是专门为Unix定制开发的。但是在windows平台下依然可以成功安装使用.Bugzilla是一个搜集缺陷的数据库。它让用户报告的缺陷从而把它们转给合适的开发者。开发者能使用保持一个要做事情的优先表,还有时间表和跟踪相关性。不是所有的"bugs"都是。一些数据库中的内容是作为增强的请求(RFE)。一个RFE是一个严重级别字段被设为"enhancement"的"Bug".人们常说"bug",实际上意思是Bugzilla中的记录,所以RFEs经常被称作bug。 黑盒测试 黑盒测试也称,它是通过测试来检测每个功能是否都能正常使用。在测试中,把看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于外部结构,不考虑内部,主要针对和软件功能进行测试。 注重于测试软件的功能需求,主要试图发现下列几类错误。 功能不正确或遗漏; 界面错误; 输入和输出错误; 访问错误; 性能错误; 和错误等。 从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但可能的输入进行测试。这样看来,完全测试是不可能的,所以我们要进行有针对性的测试,通过制定测试案例指导测试的实施,保证有组织、按步骤,以及有计划地进行。黑盒测试行为必须能够加以量化,才能真正保证,而就是将测试行为具体量化的方法之一。具体的黑盒方法包括等价类划分法、边界值分析法、错误推测法、、判定法、正交试验设计法、功能图法、法等。 等价类划分的办法是把的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试。每一类的代表性数据在测试中的作用等价于这一类中的其他值。该方法是一种重要的,常用的黑盒方法。 划分等价类 1) 划分等价类:等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类。 有效等价类:是指对于的规格说明来说是合理的,有意义的输入数据构成的集合.利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。 :与有效等价类的定义恰巧相反。 设计时,要同时考虑这两种等价类.因为,软件不仅要能接收合理的数据,也要能经受意外的考验.这样的测试才能确保软件具有更高的可靠性。 划分等价类准则 2)划分等价类的方法:下面给出六条确定等价类的原则。 ①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。 ②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个. ③在输入条件是一个的情况下,可确定一个有效等价类和一个无效等价类。 ④在规定了输入数据的一组值(假定n个),并且要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类。 ⑤在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个(从不同角度违反规则)。
白盒测试用例练习题(1)
白盒测试用例练习 1.为以下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖,并画出相应的程序流程图。 void DoWork (int x,int y,int z) { int k=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; } //语句块2 j=j%3; //语句块3 } a Y c N b e Y N d x>3 and z<10 x=4 or y>5 j=j%3 j=x*y+10 k=x*y-1 j=sqrt(k) k=0 j=0
由这个流程图可以看出,该程序模块有4条不同的路径: P1:(a-c-e) P2:(a-c-d) P3:(a-b-e) P4:(a-b-d) 将里面的判定条件和过程记录如下: 判定条件M={x>3 and z<10} 判定条件N={x=4 or y>5} 1、语句覆盖 测试用例输入输出判定M的取值判定N的取值覆盖路径x=4,z=5,y=8 k=31,j=0 T T P1(a-c-e) 2、判定覆盖 p1和p4可以作为测试用例,其中p1作为取真的路径,p4作为取反的路径。 测试用例输入输出判定M的取值判定N的取值覆盖路径x=4,z=5,y=8 k=31,j=0 T T P1(a-c-e) x=2,z=11,y=5 k=0,j=0 F F P4(a-b-d) 也可以让测试用例测试路径P2和P3。相应的两组输入数据如下: 测试用例输入输出判定M的取值判定N的取值覆盖路径x=5,z=5,y=4 k=19,j=sqrt(19)%3 T F P2(a-c-d) x=4,z=11,y=6 k=0,j=1 F T P3(a-b-e) 3、条件覆盖 对于M:x>3取真时T1,取假时F1; z<10取真时T2,取假时F2; 对于N:x=4取真时T3,取假时F3; y>5取真时T4,取假时F4。 条件:x>3,z<10,x=4,y>5 条件:x<=3,z>=10,x!=4,y<=5 根据条件覆盖的基本思路,和这8个条件取值,组合测试用例如表所示: 测试用例输入输出取值条件具体取值条件覆盖路径x=4,z=5,y=8 k=31, j=0 T1,T2,T3,T4 x>3,z<10,x=4,y>5 P1(a-c-e) x=3,z=11,y=5 k=0, j=0 F1,F2,F3,F4 x<=3,z>=10,x!=4,y<=5 P4(a-b-d) 4、判定/条件覆盖 测试用例输入输出取值条件具体取值条件覆盖路径x=4,z=5,y=8 k=31, j=0 T1,T2,T3,T4 x>3,z<10,x=4,y>5 P1(a-c-e) x=3,z=11,y=5 k=0, j=0 F1,F2,F3,F4 x<=3,z>=10,x!=4,y<=5 P4(a-b-d)
白盒测试和黑盒测试
白盒测试 白盒测试,又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子部的东西以及里面是如何运作的。"白盒"法全面了解程序部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。 采用什么方法对软件进行测试呢?常用的软件测试方法有两大类:静态测试方法和动态测试方法。其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。在动态分析技术中,最重要的技术是路径和分支测试。下面要介绍的六种覆盖测试方法属于动态分析方法。 中文名:白盒测试 外文名:white-box testing 别称:结构测试、透明盒测试 白盒测试测试方法 白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。 白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化: 1.语句覆盖每条语句至少执行一次。 2.判定覆盖每个判定的每个分支至少执行一次。 3.条件覆盖每个判定的每个条件应取到各种可能的值。 4.判定/条件覆盖同时满足判定覆盖条件覆盖。 5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。 6.路径覆盖使程序中每一条可能的路径至少执行一次。 白盒测试要求
黑盒测试法定义及常用方法
黑盒测试(Black-box Testing,又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。 采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。 黑盒测试注重于测试软件的功能性需求,也即黑盒测试使软件工程师派生出执行程序所有功能需求的输入条件。黑盒测试并不是白盒测试的替代品,而是用于辅助白盒测试发现其他类型的错误。 黑盒测试试图发现以下类型的错误: 1)功能错误或遗漏; 2)界面错误; 3)数据结构或外部数据库访问错误; 4)性能错误; 5)初始化和终止错误。 一、黑盒测试的测试用例设计方法 ·等价类划分方法 ·边界值分析方法 ·错误推测方法 ·因果图方法 ·判定表驱动分析方法 ·正交实验设计方法 ·功能图分析方法 等价类划分: 是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例.该方法是一种重要的,常用的黑盒测试用例设计方法.
1) 划分等价类: 等价类是指某个输入域的子集合.在该子集 合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可 以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较 好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类. 有效等价类:是指对于程序的规格说明来说是合理的,有意义 的输入数据构成的集合.利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能. 无效等价类:与有效等价类的定义恰巧相反. 设计测试用例时,要同时考虑这两种等价类.因为,软件不仅要能接收合理的数据,也要能经受意外的考验.这样的测试才能确保软 件具有更高的可靠性. 2)划分等价类的方法:下面给出六条确定等价类的原则. ①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类. ②在输入条件规定了输入值的集合或者规定了“必须如何” 的条件的情况下,可确立一个有效等价类和一个无效等价类. ③在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类. ④在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类. ⑤在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则). ⑥在确知已划分的等价类中各元素在程序处理中的方式不同 的情况下,则应再将该等价类进一步的划分为更小的等价类.
白盒测试及用例设计
白盒测试 白盒测试(White-box Testing,又称逻辑驱动测试,结构测试) 是把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。白盒测试又称为结构测试和逻辑驱动测试。 白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。 六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。语句覆盖每条语句至少执行一次。判定覆盖每个判定的每个分支至少执行一次。条件覆盖每个判定的每个条件应取到各种可能的值。判定/条件覆盖同时满足判定覆盖条件覆盖。条件组合覆盖每个判定中各条件的每一种组合至少出现一次。路径覆盖使程序中每一条可能的路径至少执行一次。 白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。 "白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。
最新白盒测试实验报告-范例
广西科技大学计算机学院《软件测试技术》实验报告书 实验一白盒测试 学生姓名:xxxx 学号:xxxx 班级:xxxx 指导老师:xxxxx 专业:计算机学院软件工程 提交日期:2014年10月20日
白盒测试实验报告 一实验内容 1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法; 2、举例进行白盒测试,使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合 覆盖、路径覆盖进行测试。 3、通过试验和应用,要逐步提高和运用白盒测试技术解决实际测试问题的能力; 4、熟悉C++编程环境下编写、调试单元代码的基本操作技术和方法; 5、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例, 测试报告等) 二实验原理 白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。其又称为结构测试。 对于该实验的例子给出其流程图如下图所示,我们来了解白盒测试的基本技术和方法。
语句覆盖是指选择足够的测试用例,使得程序中每个语句至少执行一次。如上例选择测试用例x=1,y=1和x=1,y=-1可覆盖所有语句。 判定覆盖是指选择足够的测试用例,使得程序中每一个判定至少获得一次“真”值和“假”值,从而使得程序的每个分支都通过一次(不是所有的逻辑路径)。选择测试用例x=1,y=1和x=1,y=-1可覆盖所有判定。 条件覆盖是指选择语句多数的测试用例,使得程序判定中的每个条件能获得各种不同的结果。选择测试用例x=1,y=1和x=-1,y=-1可覆盖所有条件。 判定/条件覆盖是指选择足够多的测试用例,使得程序判定中每个条件取得条件可能的值,并使每个判定取到各种可能的结果(每个分支都通过一次)。即满足条件覆盖,又满足判定覆盖。选择测试用例x=1,y=1和x=-1,y=-1可覆盖所有判定/条件。 条件组合覆盖是指选择足够的测试用例,使得每个判定中的条件的各种可能组合都至少出现一次(以判定为单位找条件组合)。 注:a,条件组合只针对同一个判断语句存在多个条件的情况,让这些条件的取值进行笛卡尔乘积组合。 b,不同的判断语句内的条件取值之间无需组合。 c,对于但条件的判断语句,只需要满足自己的所有取值即可。 选择测试用例x=1,y=1;x=1,y=-1,x=-1,y=1和x=-1,y=-1可覆盖所有条件组合。 路径覆盖是分析软件过程流的通用工具,有助分离逻辑路径,进行逻辑覆盖的测试,所用的流程图就是讨论软件结构复杂度时所用的流程图。 三实验方法