2010第六部分白盒测试思考题
软件测试.Mod10.白盒测试方法

4组测试数据可以使8种条件组合 组测试数据可以使8 每种至少出现一次
测试用例 A 2 2 1 B 0 1 0 X 4 1 2 1 通过路径 sacbed sabed sabed sabd 满足的条件 T1,T2,T3,T4 T1,F2,T3,F4 F1,T2,F3,T4 F1,F2,F3,F4 条件 覆盖 组合 分支 1, 5 4563 2, 6 263 3, 7 263 4, 8 23
满足的条件
7
2 0 1 1 1 2
T1,T2,T3,F4 F1,F2,F3,T4
不满足判定覆盖
判断-条件覆盖
• 条件覆盖不一定包含判定覆盖,判定覆盖也不一 条件覆盖不一定包含判定覆盖, 定包含条件覆盖 • 既然判定条件不一定包含条件覆盖,条件覆盖也 既然判定条件不一定包含条件覆盖, 不一定包含判定覆盖,就自然会提出一种能同时 不一定包含判定覆盖, 满足两种覆盖标准的逻辑覆盖,这就是判定 判定--条 满足两种覆盖标准的逻辑覆盖,这就是判定 条 件覆盖。 件覆盖。 • 判定-条件覆盖就是设计足够的测试用例,使得 判定-条件覆盖就是设计足够的测试用例 就是设计足够的测试用例, 判断中每个条件的所有可能取值至少执行一次, 判断中每个条件的所有可能取值至少执行一次, 同时每个判断本身的所有可能判断结果至少执行 一次。换言之, 一次。换言之,即是要求各个判断的所有可能的 条件取值组合至少执行一次。 条件取值组合至少执行一次。
5 T 6
X=X+1
Ⅰ: A=2, B=0,X=4: sacbed Ⅱ: A=1, B=1,X=1: sabd
F 3
d
e
测试 用例 A B X 2 0 4
7
通过 路径
sacbe d
满足的条件
【转】白盒测试及其基本方法

【转】⽩盒测试及其基本⽅法⼀、⽩盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进⾏,检验程序中的每条通路是否都能按预定要求正确⼯作。
这⼀⽅法是把测试对象看作⼀个打开的盒⼦,测试⼈员依据程序内部逻辑结构相关信息,设计或选择测试⽤例,对程序所有逻辑路径进⾏测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态⼀致。
⼆、概述⽩盒测试⼜称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。
⽩盒测试是⼀种测试⽤例的设计⽅法,盒⼦对应的是被测试的测试,"⽩盒"法全⾯了解程序内部逻辑结构、对所有逻辑路径进⾏测试。
"⽩盒"法是穷举路径测试。
测试者必须检查程序的内部结构,从检查程序的逻辑着⼿,得出测试数据。
三、基本⽅法强度由低到⾼:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
(1)语句覆盖:就是设计若⼲个测试⽤例,运⾏被测程序,使得每⼀可执⾏语句⾄少执⾏⼀次。
(2)判定覆盖:使设计的测试⽤例保证程序中每个判断的每个取值分⽀⾄少经历⼀次。
(3)条件覆盖:条件覆盖是指选择⾜够的测试⽤例,使得运⾏这些测试⽤例时,判定中每个条件的所有可能结果⾄少出现⼀次,但未必能覆盖全部分⽀(4)判定条件覆盖:判定-条件覆盖就是设计⾜够的测试⽤例,使得判断中每个条件的所有可能取值⾄少执⾏⼀次,同时每个判断的所有可能判断结果⾄少执⾏,即要求各个判断的所有可能的条件取值组合⾄少执⾏⼀次。
(5)条件组合覆盖:在⽩盒测试法中,选择⾜够的测试⽤例,使所有判定中各条件判断结果的所有组合⾄少出现⼀次,满⾜这种覆盖标准成为条件组合覆盖。
(6)路径覆盖:是每条可能执⾏到的路径⾄少执⾏⼀次。
补充:(1)语句覆盖在所有的测试⽅法中是⼀种最弱的覆盖。
(2)判定覆盖和条件覆盖⽐语句覆盖强,满⾜判定/条件覆盖标准的测试⽤例⼀定也满⾜判定覆盖、条件覆盖和语句覆盖(3)路径覆盖也是⼀种⽐较强的覆盖,但未必考虑判定条件结果的组合,并不能代替条件覆盖和条件组合覆盖。
白盒测试面试技巧

白盒测试面试技巧白盒测试面试技巧白盒测试面试问题如果您是测试组长,您会采取什么样的方式管理团队?在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么?答案:我会对成员的思想做一个较为全面的了解,分析项目的形势,当前的状况,未来的发展方向、目标,让每个成员都参与到项目的讨论中;人员的分配要合理,要能适应岗位的要求,明确其应有的岗位职责,根据能力高低来分配工作,对实位的奖惩要符合其岗位的重要程度;制定公司的规章制度,并严格执行,领导的激励也不可缺少。
提高沟通的效率和改善沟通的方法,首先要确定问题,这才是最重要的,也是对测试人员能力的挑战;然后是态度要和蔼,一定要知道开发的压力不比测试小;在提问题单前一定要有沟通(电话或邮件都可以),如果问题由于一些原因不修改(要经过项目经理确认),则就要发送确认邮件给开发相关人员,转发项目经理和更高层的领导!维持测试人员同开发团队中其他成员良好的人际关系的关键是专业精神和态度,让其他人员感觉到我在项目中的重要性,同时也要让其他人员感觉和我在项目中工作是快乐的!第二: 常见的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。
答案: 1. 等价类划分常见的软件测试面试题划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.2. 边界值分析法边界值分析方法是对等价类划分方法的补充。
测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.3. 错误推测法基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结。
白盒测试及测试案例设计(已经看)

第四章 白盒测试及其用例的设计
A Free sample background from
Slide 15
4.3.2 逻辑覆盖法
根据覆盖目标的不同,逻辑覆盖又可分为语句覆盖、判定 覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。 语句覆盖:选择足够多的测试用例,使得程序中的每个可 执行语句至少执行一次。 判定覆盖:通过执行足够的测试用例,使得程序中的每个 判定至少都获得一次“真”值和“假”值, 也就是使程序 中的每个取“真”分支和取“假”分支至少均经历一次, 也称为“分支覆盖”。 条件覆盖:设计足够多的测试用例,使得程序中每个判定 包含的每个条件的可能取值(真/假)都至少满足一次。
第四章 白盒测试及其用例的设计
Slide 14
4.3.1 测试覆盖率
测试覆盖率:用于确定测试所执行到的覆盖项的百分比。 其中的覆盖项是指作为测试基础的一个入口或属性,比如 语句、分支、条件等。 测试覆盖率可以表示出测试的充分性,在测试分析报告中 可以作为量化指标的依据,测试覆盖率越高效果越好。但 覆盖率不是目标,只是一种手段。 测试覆盖率包括功能点覆盖率和结构覆盖率: 功能点覆盖率大致用于表示软件已经实现的功能与软件需 要实现的功能之间的比例关系。 结构覆盖率包括语句覆盖率、分支覆盖率、循环覆盖率、 路径覆盖率等等。
Slide 2
本章教学目标
理论环节
学习理解白盒测试方法的基本概念 学习理解白盒测试的覆盖理论
学习掌握白盒测试的路径表达 学习掌握白盒测试的基本路径测试法
实践环节
通过案例运用学习掌握覆盖问题的解决方法 运用基本路径测试方法进行实际程序测试
第四章 白盒测试及其用例的设计
白盒测试试题答案

先看以下代码:/** 白盒测试逻辑覆盖测试范例*/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、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第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、逻辑覆盖法分类。