2010第六部分白盒测试思考题
- 格式:doc
- 大小:45.00 KB
- 文档页数:7
【转】⽩盒测试及其基本⽅法⼀、⽩盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进⾏,检验程序中的每条通路是否都能按预定要求正确⼯作。
这⼀⽅法是把测试对象看作⼀个打开的盒⼦,测试⼈员依据程序内部逻辑结构相关信息,设计或选择测试⽤例,对程序所有逻辑路径进⾏测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态⼀致。
⼆、概述⽩盒测试⼜称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
⽩盒测试是⼀种测试⽤例的设计⽅法,盒⼦对应的是被测试的测试,"⽩盒"法全⾯了解程序内部逻辑结构、对所有逻辑路径进⾏测试。
"⽩盒"法是穷举路径测试。
测试者必须检查程序的内部结构,从检查程序的逻辑着⼿,得出测试数据。
三、基本⽅法强度由低到⾼:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
(1)语句覆盖:就是设计若⼲个测试⽤例,运⾏被测程序,使得每⼀可执⾏语句⾄少执⾏⼀次。
(2)判定覆盖:使设计的测试⽤例保证程序中每个判断的每个取值分⽀⾄少经历⼀次。
(3)条件覆盖:条件覆盖是指选择⾜够的测试⽤例,使得运⾏这些测试⽤例时,判定中每个条件的所有可能结果⾄少出现⼀次,但未必能覆盖全部分⽀(4)判定条件覆盖:判定-条件覆盖就是设计⾜够的测试⽤例,使得判断中每个条件的所有可能取值⾄少执⾏⼀次,同时每个判断的所有可能判断结果⾄少执⾏,即要求各个判断的所有可能的条件取值组合⾄少执⾏⼀次。
(5)条件组合覆盖:在⽩盒测试法中,选择⾜够的测试⽤例,使所有判定中各条件判断结果的所有组合⾄少出现⼀次,满⾜这种覆盖标准成为条件组合覆盖。
(6)路径覆盖:是每条可能执⾏到的路径⾄少执⾏⼀次。
补充:(1)语句覆盖在所有的测试⽅法中是⼀种最弱的覆盖。
(2)判定覆盖和条件覆盖⽐语句覆盖强,满⾜判定/条件覆盖标准的测试⽤例⼀定也满⾜判定覆盖、条件覆盖和语句覆盖(3)路径覆盖也是⼀种⽐较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。
白盒测试面试技巧白盒测试面试技巧白盒测试面试问题如果您是测试组长,您会采取什么样的方式管理团队?在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么?答案:我会对成员的思想做一个较为全面的了解,分析项目的形势,当前的状况,未来的发展方向、目标,让每个成员都参与到项目的讨论中;人员的分配要合理,要能适应岗位的要求,明确其应有的岗位职责,根据能力高低来分配工作,对实位的奖惩要符合其岗位的重要程度;制定公司的规章制度,并严格执行,领导的激励也不可缺少。
提高沟通的效率和改善沟通的方法,首先要确定问题,这才是最重要的,也是对测试人员能力的挑战;然后是态度要和蔼,一定要知道开发的压力不比测试小;在提问题单前一定要有沟通(电话或邮件都可以),如果问题由于一些原因不修改(要经过项目经理确认),则就要发送确认邮件给开发相关人员,转发项目经理和更高层的领导!维持测试人员同开发团队中其他成员良好的人际关系的关键是专业精神和态度,让其他人员感觉到我在项目中的重要性,同时也要让其他人员感觉和我在项目中工作是快乐的!第二: 常见的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。
答案: 1. 等价类划分常见的软件测试面试题划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.2. 边界值分析法边界值分析方法是对等价类划分方法的补充。
测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.3. 错误推测法基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结。
先看以下代码:/** 白盒测试逻辑覆盖测试范例*/int logicExample(int x, int y){int magic=0;if(x>0 && y>0){magic = x+y+10; // 语句块1}else{magic = x+y-10; // 语句块2}if(magic < 0){magic = 0; // 语句块3}return magic; // 语句块4}解答:一般做白盒测试不会直接根据源代码,而是根据流程图来设计测试用例和编写测试代码,在没有设计文档时,要根据源代码画出流程图:做好了上面的准备工作,接下来就开始讲解六个逻辑覆盖标准:一、语句覆盖1、概念:设计足够多的测试用例,使得被测试程序中的每条可执行语句至少被执行一次。
在本例中,可执行语句是指语句块1到语句块4中的语句。
2、测试用例:{x=3, y=3}可以执行到语句块1和语句块4,所走的路径:a-b-e-f{x=-3, y=0}可以执行到语句块2、语句块3和语句块4,所走的路径:a-c-d-f这样,通过两个测试用例即达到了语句覆盖的标准,当然,测试用例(测试用例组)并不是唯一的。
3、测试的充分性:假设第一个判断语句if(x>0 && y>0)中的“&&”被程序员错误地写成了“||”,即if(x>0 || y>0),使用上面设计出来的一组测试用例来进行测试,仍然可以达到100%的语句覆盖,所以语句覆盖无法发现上述的逻辑错误。
在六种逻辑覆盖标准中,语句覆盖标准是最弱的。
二、判断覆盖(分支覆盖)1、概念:设计足够多的测试用例,使得被测试程序中的每个判断的“真”、“假”分支至少被执行一次。
在本例中共有两个判断if(x>0 && y>0)(记为P1)和if(magic < 0)(记为P2)。
2、测试用例:两个判断的取真、假分支都已经被执行过,所以满足了判断覆盖的标准。
例题2:应用白盒测试法的具体步骤:1.按照某种覆盖标准,选择一组需要覆盖的路径;2.确定上述路径所需的输入数据;3.计算与输入数据相应的输出。
下面以工资管理程序为例说明白盒测试方法的运用过程。
(白盒测试方法有6种)工资管理程序BONUS的输入数据是职员表(Employee Table)和部门销售表(Department Table)(图1)。
职员表由姓名(Name)、职务(Job)、部门(Dept.)和工资(Salary)四个属性组成。
部门销售表由部门(Dept)和销售量(Sales)组成。
程序的功能是:“为销售量最大的部门中每一个职工增加200元工资,但是,如果某个职员的原有工资已达15000元,或者他的职务是经理,则只给他增加100元。
如果程序能正常地完成,则输出出错码0;如果两表格中没有任何条目,则输出出错码1;如果没有职员在部门销售表中销售量最大的部门中工作,则输出出错码2;”工资管理程序BONUS的两个表如下:工资管理程序BONUS的源程序:参数表中EMPTAB、DEPTTAB分别是职员表和部门表,ESIZE、DSIZE分别是两个表的长度,ERRCODE是出错码。
这里略去了说明部分和注释。
Procedure Bonus(EMPTAB,DEPTTAB:TABLE; ESIZE,DSIZE,ERRCODE:INTEGER);/*最大销量和出错码初始化*/1. Begin MAXSALES:=0; ERRCODE:=0;/*判断表是否为空,空输出1,并退出程序,否则继续执行*/2. IF (ESIZE<=0) or (DSIZE<=0)3. THEN ERRCODE:=1;4. ELSE/*获得最大销量*/5. For i=1 to DSIZE6. If Sales(i)> MAXSALES7. then MAXSALES = Sales(i);/*找到销量最大的每一个部门,并做进一步处理*/8. For j=1 to DSIZE9. If Sales(j)= MAXSALES10. Then11. Begin Found:=False;/*找销量最大的职员所属部门对应的职员表中的职员并处理*/12. For k:=1 to ESIZE13. If (EMPTAB.DEPT(k)= DEPTTAB. DEPT(J))14. Then15. Begin Found:=True;/*如果该职员工资超过15000或职务是经理则加100工资,否则加200工资*/16. If (SALARY(k)>=15000.0) or (JOB(k)=”M”)17. Then18. SALARY(k):= SALARY(k)+100.0;19. Else20. SALARY(k):= SALARY(k)+200.0;21. End;/*如果找不到对应职员,则输出出错码2,否则出错码默认0*/22. If (!Found ) then ERRORCODE:=2;23. End24. End25. End用白盒测试方法设计测试用例。
习题010401 逻辑路径覆盖法是白盒测试用例的重要设计方法,其中语旬覆盖法是较为常用的方法,针对下面的语句段,采用语句覆盖法完成测试用例设计,测试用例见下表,对表中的空缺项(True或者False),正确的选择是( )。
语句段:if(A&&(B||C)) x=1;else x=0;用例表:A. ①TRUE ②FALSE ③TRUEB. ①TRUE ②FALSE ③FALSEC. ①FALSE ②FALSE ③TRUED. ①TRUE ②TRUE ③FALSE0402 针对以下程序段,对于(A,B,C)的取值,以下( )测试用例能够满足语句覆盖的要求。
IF((A+10)=2 OR (B-20)<3) THEN C=0IF((A+30)>10 AND (C-30)<0) THEN B=30A. (2,30,1)B.(-20,0,30)C. (-30,20,30)D. (2,20,3)0403 为以下程序段,设计足够的测试用例满足语句覆盖。
if (x>8&&y>5) {if(x>16||y>10) s1;}else {if (x>0||y>0) s2;else s3;0404 针对下列程序段,需要()个测试用例才可以满足语句覆盖的要求。
switch ( value ){case 0: other = 30; break;case 1: other = 50; break;case 2: other = 300;case 3: other = other / value; break;default: other = other * value;}0405 对下面的个人所得税程序中,满足语句覆盖测试用例的是( ) 。
if (income < 800) tarrate = 0else if (income <= 1500) tarrate = 0.05else if (income < 2000) tarrate = 0.08else tarrate = 0.1A.income = (800, 1500, 2000, 2001)B.income = (800, 801, 1999, 2000)C.income = (799, 1499, 2000, 2001)0406 阅读下列流程图:当用判定覆盖法进行测试时,至少需要设计( ) 个测试用例。
⽩盒测试及其基本⽅法⼀、⽩盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进⾏,检验程序中的每条通路是否都能按预定要求正确⼯作。
这⼀⽅法是把测试对象看作⼀个打开的盒⼦,测试⼈员依据程序内部逻辑结构相关信息,设计或选择测试⽤例,对程序所有逻辑路径进⾏测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态⼀致。
⼆、概述⽩盒测试⼜称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
⽩盒测试是⼀种测试⽤例的设计⽅法,盒⼦对应的是被测试的测试,"⽩盒"法全⾯了解程序内部逻辑结构、对所有逻辑路径进⾏测试。
"⽩盒"法是穷举路径测试。
测试者必须检查程序的内部结构,从检查程序的逻辑着⼿,得出测试数据。
三、基本⽅法强度由低到⾼:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
(1)语句覆盖:就是设计若⼲个测试⽤例,运⾏被测程序,使得每⼀可执⾏语句⾄少执⾏⼀次。
(2)判定覆盖:使设计的测试⽤例保证程序中每个判断的每个取值分⽀⾄少经历⼀次。
(3)条件覆盖:条件覆盖是指选择⾜够的测试⽤例,使得运⾏这些测试⽤例时,判定中每个条件的所有可能结果⾄少出现⼀次,但未必能覆盖全部分⽀(4)判定条件覆盖:判定-条件覆盖就是设计⾜够的测试⽤例,使得判断中每个条件的所有可能取值⾄少执⾏⼀次,同时每个判断的所有可能判断结果⾄少执⾏,即要求各个判断的所有可能的条件取值组合⾄少执⾏⼀次。
(5)条件组合覆盖:在⽩盒测试法中,选择⾜够的测试⽤例,使所有判定中各条件判断结果的所有组合⾄少出现⼀次,满⾜这种覆盖标准成为条件组合覆盖。
(6)路径覆盖:是每条可能执⾏到的路径⾄少执⾏⼀次。
补充:(1)语句覆盖在所有的测试⽅法中是⼀种最弱的覆盖。
(2)判定覆盖和条件覆盖⽐语句覆盖强,满⾜判定/条件覆盖标准的测试⽤例⼀定也满⾜判定覆盖、条件覆盖和语句覆盖(3)路径覆盖也是⼀种⽐较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。
第一章软件质量和测试的背景//1.谈谈自己对软件质量的理解,并谈谈如何看待软件质量的地位。
2.什么是软件工程?什么是软件过程?它们与软件工程方法学有何关系?答:软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。
它涉及到程序设计语言,数据库,软件开发工具,系统平台,标准,设计模式等方面。
软件过程:是指一个为获得高质量软件所需完成的任务的框架,它规定了软件产品开发时完成各项任务的一系列工作步骤,包括中间产品、资源、角色及过程中采取的方法、工具等范畴。
软件工程方法学:通常把在软件生命周期的全过程中的一整套技术方法的集合称为方法学,也称范型。
软件过程是软件工程方法学的3个重要组成部分之一,软件工程方法学是软件工程的4个层次之一。
3.用自己的语言描述软件质量保证,并举例说明软件质量与测试对软件企业的正面影响和负面影响。
答:软件质量保证(SQA,Software Quality Assurance)是建立一套有计划、有系统的方法,来向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用。
举例在P15页4.软件测试和软件开发的关系是怎样的?常用的软件测试方法有哪些?答:软件开发是生产制造软件;软件测试是验证开发出来软件的质量。
关系应该是:(1)没有软件开发就没有测试,软件开发提供软件测试的对象。
(2)软件开发和软件测试都是软件生命周期中的重要组成部分(3)软件开发和软件测试都是软件过程中的重要活动。
(4)软件测试是保证软件开发产物质量的重要手段。
软件测试方法:(1)静态测试和动态测试(2)黑盒测试、白盒测试和灰盒测试(3)基于软件开发阶段的测试方法:①需求测试②单元测试③集成测试④性能测试⑤压力测试⑥容量测试⑦配置测试⑧回归测试⑨安装测试⑩安全性测试。
第二章软件质量工程体系1.简述软件质量控制的基本概念。
答:软件质量控制是一组由开发组织使用的程序和方法,使用它可在规定的资金投入和时间限制的条件下,提供满足客户质量要求的软件产品并持续不断地改善开发过程和开发组织本身,以提高将来生产高质量软件产品的能力。
Is 在白盒测试用例设计中,有语句覆盖、分支覆盖、条件覆盖、路径覆盖等,其中(A ) 是最强的覆盖准则。
为了对如下图所示的程序段进行覆盖测试,必须适当地选取瀬式用例组。
若x, y 是两个变呈,可供选择的测试用例组共有I 、□、皿、IV 四组,如表中给出,则实现判 走覆盖至少应采取的测试用例组是(B )或(C );实现条件覆盖至少应采取的测试用 例组是(D );实现路径覆盖至少应采取的测试用例组是(E )或(F )。
供选择的答案 A :①语句覆盖②条件覆盖 ③判走覆盖④路径覆盖B 〜F:①I 和II 组 ②II 和m 组 ③ 皿和IV 组 ④I 和IV 组⑤I.⑧I 、□、in 组 ⑥□、皿、iv 组⑦I 、m 、iv 组 □、IV 组 解答:A.④ B •⑤ C.⑧D.④E.⑤F •⑧2•阅读下面这段程序#使用逻辑覆盖法进行测试,请问哪一组关于(a,b ,c )的输 入值可以达到条件覆盖。
(B )int func(int a f b,c) { int k=l;if ((a>0) || (b<0) || (a+c>0)) k=k+a; else k 二 k+b; if (c>0) k 二 k+c; return k;}A. (a,b,c) = (361)、(-4,-5,7)B. (a,b,c)二(2,5,8). (+c. (abc)二(6册2)、(154) D.⑻b,c)二(4禺2). (-4f8f3)3•阅读下面这段程序,使用逻辑覆盖法进行测试,请问哪一组关于(ab,c )的输入值可以达到判定覆盖。
(D )int func(int a z b,c){ int k=l;if ((a>0) &&(bvO) && (a+c>0)) k=k+a;else k二k+b;if (c>0) k二k+c;return k;}A.⑻b,c) = (361)、(-4,-5,7)B. (a,b,c) = (2,5,8)、(-4,-9,-5)c. (a f b f c) = (154) D. (a,b,c)二(4厂9厂2)、(-4,8,3)4•阅读下面这段程序,使用逻辑覆盖法进行测试,请问哪一组关于(a z b z c )的输入值可以达到判定条件覆盖。
[试题分类]: [04]白盒测试方法/[0400][综合]白盒测试方法1. 下面不属于白盒测试能保证的是。
A.模块中所有独立途径至少测试一次B.测试所以逻辑决策真和假两个方面C.在所有循环的边界内部和边界上执行循环体D.不正确或漏掉的功能答案:D分数:1题型:单选题难度:12.因果图方法是根据()之间的因果关系来设计测试用例的。
A.输入与输出B.设计与实现C.条件与结果D.主程序与子程序答案:A分数:1题型:单选题难度:13.使用白盒测试方法时,确定测试数据应根据()和指定的覆盖标准。
A.程序的内部逻辑B.程序的复杂程度C.使用说明书D.程序的功能答案:A分数:1题型:单选题难度:14.软件测试中常用的静态分析方法是()和接口分析。
A.引用分析B.算法分析C.可靠性分析D.效率分析答案:A分数:1题型:单选题难度:15.软件测试中常用的静态分析方法是引用分析和()。
A.引用分析B.算法分析C.可靠性分析D.接口分析答案:D分数:1题型:单选题难度:16.白盒方法中常用的方法是()方法。
A.路径测试B.等价类C.因果图D.归纳测试答案:A分数:1题型:单选题难度:17.在软件工程中,白箱测试法可用于测试程序的内部结构。
此方法将程序看作是()A.路径的集合B.循环的集合题型:单选题难度:18.软件测试白箱测试是对软件的结构进行测试,下述:Ⅰ.边缘值分析Ⅱ.语句测试Ⅲ.分值测试Ⅳ.路经测试()是其应包括的内容。
A.ⅠB.Ⅱ和ⅢC.Ⅲ和ⅣD.Ⅱ.Ⅲ和Ⅳ答案:D分数:1题型:单选题难度:19.在进行单元测试时,常用的方法是()。
A.采用白盒测试,辅之以黑盒测试B.采用黑盒测试,辅之以白盒测试C.只适用白盒测试D.只适用黑盒测试答案:A分数:1题型:单选题难度:110.白盒测试法一般使用于()测试。
A.单元B.系统C.集成D.确认答案:A分数:1题型:单选题难度:1[试题分类]: [04]白盒测试方法/[0401]逻辑覆盖法11.关于条件测试错误的是()A.可以检查程序中所包含的逻辑条件B.条件中包含的错误有布尔算子错误C.条件中包含的错误有布尔变量错误D.条件中包含的错误有接口错误答案:D分数:1题型:单选题难度:112.关于条件中包含的错误类型说法错误的是()A.关系算子错误B.算术表达式错误C.条件中包含的错误有布尔变量错误D.条件中包含的错误有接口错误答案:D分数:1题型:单选题难度:113.语句覆盖.判定覆盖.条件覆盖和路径覆盖都是白盒测试法设计测试用例的覆盖准则,在这些覆盖准则中最弱的准则是()。
软件测试复习资料————————————————————————————————作者:————————————————————————————————日期:1、白盒与黑盒的概念应用白盒测试也称为结构测试或则逻辑驱动测试,也就是已知产品的内部工作过程,清楚最终生成软件产品的计算机程序结构及其语句,按照程序内的结构测试程序,测试程序内部的变量状态、逻辑结构、运行路径等,检验程序中的每条通路是否能按预定要求正确工作,检查程序内部动作或者运行是否符合设计规格要求,所以内部成分是否按规定正常运行。
白盒测试是基于覆盖的测试,尽可能覆盖程序的结构特性和逻辑路径,所以其具体方法有逻辑覆盖、循环覆盖、基本路径覆盖等。
逻辑覆盖又可进一步分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖等。
白盒测试余姚用于单元测试,其基本原则有:(1)保证每个模块中所有度量路径至少被使用一次。
(2)完成所有逻辑值分别为真值和假值得条件下的测试。
(3)在上下便捷及可操作范围内运行所有循环,完成循环覆盖测试。
(4)检查内部数据结构以确保有效性,完成边界条件的测试。
黑盒测试方法,也称功能测试或则数据驱动测试方法,在测试时,把程序看做一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试人员针对软件直接进行测试,检查系统功能是否按照需求规格说明书的规定正常使用、是否能适当的接收输入数据而输出正确的结果,检查相应的文档是否采用了正确的模板、是否满足规范要求等。
黑盒测试方法不关注软件内部结构,而是着眼与程序外部用户界面,关注软件的输入和输出,关注用户的需求,从用户的角度验证软件功能,实现端到端的测试,黑盒测试方法根据用户体验评估软件的质量,验证产品每个功能是否都能正常使用,是否满足用的要求。
黑盒测试方法中常用的具体方法有等价类划分法、边界值分析法、错误推出测法、因果图等。
借助这些方法可以简化测试数据的数量,设计更有效的测试用例。
⽩盒测试⽩盒测试(White-box Testing,⼜称逻辑驱动测试,结构测试)是把测试对象看作⼀个打开的盒⼦。
利⽤⽩盒测试法进⾏动态测试时,需要测试软件产品的内部结构和处理过程,不需测试软件产品的功能。
⽩盒测试⼜称为结构测试和逻辑驱动测试。
⽩盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。
其中逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。
测试⽅法:六种覆盖标准:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能⼒呈由弱⾄强的变化。
语句覆盖每条语句⾄少执⾏⼀次。
判定覆盖每个判定的每个分⽀⾄少执⾏⼀次。
条件覆盖每个判定的每个条件应取到各种可能的值。
判定/条件覆盖同时满⾜判定覆盖条件覆盖。
条件组合覆盖每个判定中各条件的每⼀种组合⾄少出现⼀次。
路径覆盖使程序中每⼀条可能的路径⾄少执⾏⼀次。
⽩盒测试也称结构测试或逻辑驱动测试,它是知道产品内部⼯作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进⾏,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确⼯作,⽽不顾它的功能,⽩盒测试的主要⽅法有逻辑驱动、基路测试等,主要⽤于软件验证。
"⽩盒"法全⾯了解程序内部逻辑结构、对所有逻辑路径进⾏测试。
"⽩盒"法是穷举路径测试。
在使⽤这⼀⽅案时,测试者必须检查程序的内部结构,从检查程序的逻辑着⼿,得出测试数据。
贯穿程序的独⽴路径数是天⽂数字。
但即使每条路径都测试了仍然可能有错误。
第⼀,穷举路径测试决不能查出程序违反了设计规范,即程序本⾝是个错误的程序。
第⼆,穷举路径测试不可能查出程序中因遗漏路径⽽出错。
第三,穷举路径测试可能发现不了⼀些与数据相关的错误。
要求:1.保证⼀个模块中的所有独⽴路径⾄少被使⽤⼀次;2.对所有逻辑值均需测试 true 和 false;3.在上下边界及可操作范围内运⾏所有循环;4.检查内部数据结构以确保其有效性。
《白盒测试》一、企业发放奖金根据利润提成,利润I 低于或者等于10万元时,奖金可提10%;利润高于10万,低于20万元时候,其中10万元按10%提取,高于10万部分,可提成7.5% ;200000<1<=400000时,其中低于20万仍按上述办法提成(下同),高于20万部分按5%提 成;400000<1<=600000时,高于40万元的部分按 3%提成;600000<1<=1000000时,高于 60万元的部分按1.5%提成;1>1000000时,超过100万的部分按1%提成。
从键盘输入当月 利润,求应发放的奖金。
i>600000&&i <=1000000w=33500+(i-600000)*0.0151.使用逻辑覆盖测试方法设计测试用例w=10000+(i-100000)*0.07 5;Ti>200000&&i <=400000w=17500+(i-200000)*0.05Ti>400000&&i <=600000w=27500+(i-400000)*0.03Fw=i*0.1i>1000000w=39500+(i-1000000)*0.01规定:r=rightl=left1、判定覆盖设计相应的测试用例(为变量i赋予特定的值),可以使判定A、B、C、D、E、G分别为真和假。
表1判定覆盖测试用例2、条件覆盖表2条件覆盖测试用例3、判定-条件覆盖设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次, 同时,所有判断的可能结果至少执行一次。
表3判定-条件覆盖测试用例4■条件组合覆盖设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。
表4条件组合覆盖测试用例4、基本路径覆盖涉设计所有的测试用例来覆盖程序中的所有可能的、独立的执行路径(1).根据测试用例编写主要代码如下:Ipublic static void main( Stri ng[] args) {// TODO Auto-ge nerated method stub2Scanner sc=new Scann er(System.i n);3double i=sc. nextDouble();4double w=1;5if(i>0&&i<=100000){6w=i*0.1;7}8if(i>100000&&i<=200000){9w=10000+(i-100000)*0.075;11if(i>200000&&i v=400000){12w=17500+(i-200000)*0.05;13}14if(i>400000&&i v=600000){15w=27500+(i-400000)*0.03;16}17if(i>600000&&i v=1000000){18w=33500+(i-600000)*0.015;19}20if(i>1000000){21w=39500+(i-1000000)*0.01;22}23System.out.println(”您所得的提成为"+w+"元!");24}可得如下程序流程图:(2)•计算程序环路复杂度为6.(3).确定基本路径⑪5—>9—>23②.5—>11—>12—>23③.5—>11—>14—>15—>23④.5—>11—>14—>17—>18—>23⑤.5—>11—>14—>17—>20—>21—>23>23⑥ 5—>11 — >14— >17— >20— >23(4) •准备测试用例,确保基本路径组中的每一条路径被执行一次。
第6章白盒测试技术
6.1 白盒测试概述
1、什么是白盒测试?
白盒测试又称结构测试、逻辑驱动测试或基于程序的测试。
白盒测试是根据被测程序的内部结构设计测试用例的一类测试。
2、为什么要进行白盒测试?
3、白盒测试必须遵循的原则
保证一个模块中的所有独立路径至少被测试一次;
所有逻辑值均需要测试其真和假两种情况;
检查程序的内部数据结构,保证其结构的有效性;
在上下边界及可操作范围内运行所有循环。
1、测试覆盖率
测试覆盖率:用于确定测试所执行到的覆盖项的百分比。
比如语句、分支、条件等。
2、逻辑覆盖测试分类
根据覆盖目标的不同,逻辑覆盖测试又可分为:
语句覆盖
判定覆盖
条件覆盖
判定/条件覆盖
组合覆盖
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 }
(1)语句覆盖
选择足够多的测试用例,使得程序中的每个可执行语句至少执行一次。
只需设计一个测试用例就可以覆盖程序中的所有可执行语句。
测试用例为:{ x=4、y=5、z=5 }
程序执行的路径是:abd
(2)判定覆盖
执行足够测试用例,使得程序中每个判定至少都获得一次“真”和“假”;
要实现DoWork函数的判定覆盖,需要设计两个测试用例。
测试用例为:{x=4、y=5、z=5}
{x=2、y=5、z=5}
程序执行的路径分别是:abd,ace
(3)条件覆盖
在程序代码中,一个判定中通常都包含若干个条件。
条件覆盖的目的是设计若干测试用例,在执行程序后,要使每个判定中每个条件的可能值至少满足一次。
(4)判定/条件覆盖
判定/条件覆盖实际上是将判定覆盖和条件覆盖结合起来的一种方法;
即:设计足够的测试用例,使得判定中每个条件的所有可能取值至少满足一次,同时每个判定的可能结果也至少出现一次。
(5)组合覆盖
组合覆盖的目的是要使设计的测试用例能覆盖每一个判定的所有可能的条件取值组合。
6.3 路径测试
1、定义
路径测试就是从一个程序的入口开始,执行所经历的各个语句的完整过程。
从广义的角度讲,任何有关路径分析的测试都可以被称为路径测试。
在不能做到所有路径覆盖的前提下,如果某一程序的每一个独立路径都被测试过,那么可以认为程序中的每个语句都已经检验过了,即达到了语句覆盖。
2、路径测试的一般步骤
(1)从被测程序代码生成程序图;
(2)根据程序图计算环复杂度,确定基本路径集合的大小;(3)确定基路径集合;
(4)剔除不可行路径,补充其他重要的路径;
(5)根据路径集合确定测试用例,填入测试数据
3、路径测试方法举例
2009年软件测试技术课思考题
第六部分:
1、什么是白盒测试
2、逻辑覆盖法分类。