白盒测试及例题

合集下载

软件测试-白盒测试用例练习题

软件测试-白盒测试用例练习题

白盒测试用例练习一、为以下所示的程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖,并画出相应的程序流程图。

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 cN b eYx>3 and x=4 ork=x*y-1 k=0Nd由这个流程图可以看出,该程序模块有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 TTP1(a-c-e) 2、判定覆盖p1和p4可以作为测试用例,其中p1作为取真的路径,p4作为取反的路径。

测试用例输入 输出 判定M 的取值判定N 的取值覆盖路径x=4,z=5,y=8k=31,j=0TTP1(a-c-e) x=2,z=11,y =5k=0,j=0FFP4(a-b-d)也可以让测试用例测试路径P2和P3。

相应的两组输入数据如下: 测试用例输输出判定M 的取判定N 的取覆盖路径j=j%3j=x*y+1入值值x=5,z=5,y= 4 k=19,j=sqrt(19)%3T F P2(a-c-d)x=4,z=11,y=6k=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。

(完整版)白盒测试练习及答案

(完整版)白盒测试练习及答案

1、在白盒测试用例设计中,有语句覆盖、分支覆盖、条件覆盖、路径覆盖等,其中( A )是最强的覆盖准则。

为了对如下图所示的程序段进行覆盖测试,必须适当地选取测试用例组。

若x, y是两个变量,可供选择的测试用例组共有Ⅰ、Ⅱ、Ⅲ、Ⅳ四组,如表中给出,则实现判定覆盖至少应采取的测试用例组是( B )或( C );实现条件覆盖至少应采取的测试用例组是( D );实现路径覆盖至少应采取的测试用例组是( E )或( F )。

供选择的答案A:① 语句覆盖② 条件覆盖③ 判定覆盖④ 路径覆盖B~F:① Ⅰ和Ⅱ组② Ⅱ和Ⅲ组③ Ⅲ和Ⅳ组④ Ⅰ和Ⅳ组⑤ Ⅰ、Ⅱ、Ⅲ组⑥ Ⅱ、Ⅲ、Ⅳ组⑦ Ⅰ、Ⅲ、Ⅳ组⑧ Ⅰ、Ⅱ、Ⅳ组解答:A. ④ B. ⑤ C. ⑧ D. ④ E. ⑤ F. ⑧2. 阅读下面这段程序,使用逻辑覆盖法进行测试,请问哪一组关于(a,b,c)的输入值可以达到条件覆盖。

( B )int func(int a,b,c){ int k=1;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) = (3,6,1)、(-4,-5,7)B. (a,b,c) = (2,5,8)、(-4,-9,-5)C. (a,b,c) = (6,8,-2)、(1,5,4)D. (a,b,c) = (4,9,-2)、(-4,8,3)3. 阅读下面这段程序,使用逻辑覆盖法进行测试,请问哪一组关于(a,b,c)的输入值可以达到判定覆盖。

(D )int func(int a,b,c){ int k=1;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) = (3,6,1)、(-4,-5,7)B. (a,b,c) = (2,5,8)、(-4,-9,-5)C. (a,b,c) = (6,8,-2)、(1,5,4)D. (a,b,c) = (4,-9,-2)、(-4,8,3)4. 阅读下面这段程序,使用逻辑覆盖法进行测试,请问哪一组关于(a,b,c)的输入值可以达到判定条件覆盖。

白盒测试用例设计练习题

白盒测试用例设计练习题
白盒测试用大值和最小值
* */
publicclassMaxmin
{
publicintmax,min;
publicvoidmaxminvalue(inta ,intb ,intc)
{
if(a>b){
max=a;
min=b;
}
else{
max=b;
min=a;
}
测试数据
预期结果
测试路径
(2)满足实现条件覆盖的要求
测试用例名称
测试数据
预期结果
测试路径
(3)满足实现路径覆盖的要求
测试用例名称
测试数据
预期结果
测试路径
2.使用路径覆盖的测试用例,结合JUnit测试框架编写测试代码,写到下方。
if(max< c)
max=c;
elseif(min> c )
min=c;
}
publicintgetmax(){
returnmax;
}
publicintgetmin(){
returnmin;
}
}
1.要求:根据上面的程序代码和程序流图,分别填写下面的最少测试用例设计表单。
(1)满足实现语句覆盖的要求
测试用例名称

白盒测试方法习题及含答案

白盒测试方法习题及含答案

[ 试题分类 ]: [04]白盒测试方法/[0400][综合]白盒测试方法1.下边不属于白盒测试能保证的是。

A. 模块中所有独立门路起码测试一次B. 测试所以逻辑决议真和假两个方面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.循环的会合C.目标的会合D.地点的会合答案 :A分数 :1题型 :单项选择题难度 :18.软件测试白箱测试是对软件的构造进行测试,下述:Ⅰ .边沿值剖析Ⅱ .语句测试Ⅲ .分值测试Ⅳ .路经测试()是其应包含的内容。

A. ⅠB. Ⅱ和ⅢC.Ⅲ和ⅣD. Ⅱ .Ⅲ和Ⅳ答案 :D分数 :1题型 :单项选择题难度 :19.在进行单元测试时,常用的方法是()。

A.采纳白盒测试,辅之以黑盒测试B.采纳黑盒测试,辅之以白盒测试D.只合用黑盒测试答案 :A分数 :1题型 :单项选择题难度 :110. 白盒测试法一般使用于()测试。

软件工程白盒测试练习及解答

软件工程白盒测试练习及解答

白盒测试练习1、什么是白盒测试?白盒测试也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。

这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

2、什么是测试用例?一组由前提条件、输入、执行条件、预期结果等组成,以完成对某个特定需求或者目标测试的数据,体现测试方案、方法、技术和策略的文档3、写出以上程序的所有路径;L1(1->2->3)L2(1->4->5->3)L3(1->2->6->7)L4(1->4->5->6->7)4、尝试用表格的形式描述满足以下情况的测试用例:a)写出满足语句覆盖需要的测试用例;解:语句覆盖就是程序中每一个语句至少能被执行一次运行结果b)写出满足判定覆盖(分支覆盖)需要的测试用例;解:判定覆盖就是程序中每个判定至少有一次为真值,有一次为假值,使得程序中每个分支至少执行一次运行结果c) 写出满足条件覆盖需要的测试用例;解:条件覆盖是程序各判定中的每个条件获得各种可能的取值至少满足一次运行结果d) 写出满足判定/条件覆盖需要的测试用例;解:判定/条件覆盖是程序中每个判定至少有一次为真值,有一次为假值,使得程序中每个分支至少执行一次,且使得各判定中的每个条件获得各种可能的取值至少满足一次。

运行结果e) 写出满足条件组合覆盖需要的测试用例。

解:条件组合覆盖是判定中条件的各种组合都至少被执行一次运行结果更改逻辑运算符以条件组合覆盖测试用例进行测试运行结果。

白盒测试例题

白盒测试例题

例题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用白盒测试方法设计测试用例。

白盒测试逻辑覆盖练习题

白盒测试逻辑覆盖练习题

白盒测试逻辑覆盖练习题一、语句覆盖if (a > 0 && b > 0) {c = a + b;} else {c = 0;}def check_age(age):if age < 18:return "未成年"elif age >= 18 and age < 60:return "成年人"else:return "老年人"二、分支覆盖if (x > 0) {if (y > 0) {printf("第一象限");} else {printf("第四象限");}} else {if (y > 0) {printf("第二象限");} else {printf("第三象限");}}function calculateGrade(score) {if (score >= 90) {return 'A';} else if (score >= 80) {return 'B';} else if (score >= 70) {return 'C';} else {return 'D';}}三、路径覆盖public int calculate(int a, int b) { if (a > 0) {if (b > 0) {return a + b;} else {return a b;}} else {if (b > 0) {return b a;} else {return 0;}}}public int Max(int a, int b, int c) { if (a > b) {if (a > c) {return a;} else {return c;}} else {if (b > c) {return b;} else {return c;}}}四、条件覆盖def check_password(password):if len(password) >= 8 and any(char.isdigit() for char in password):return "密码强度高"else:return "密码强度低"function validateForm(username, password) {if (username.length > 0 && password.length > 0) { return true;} else {return false;}}五、判定条件覆盖public boolean isEligible(int age, boolean hasLicense) {if (age >= 18 && hasLicense) {return true;} else {return false;}}int isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i < num; i++) {if (num % i == 0) {return 0;}}return 1;}六、多条件覆盖public string GetGrade(int score, bool isFinalExam) { if (score >= 90 || (isFinalExam && score >= 80)) { return "A";} else if (score >= 80 || (isFinalExam && score >= 70)) {return "B";} else if (score >= 70 || (isFinalExam && score >= 60)) {return "C";} else {return "D";}}return "Eligible";} else {return "Not Eligible";}}七、条件组合覆盖def check_login(username, password, is_admin):if (username == "admin" or username == "user") and password == "56" and not is_admin:return "User logged in";elif (username == "admin" and is_admin) and password == "admin123":return "Admin logged in";else:return "Invalid credentials";public String authenticate(String username, String password, boolean hasTwoFactor) {if (username.equals("admin") &&password.equals("admin123") && hasTwoFactor) {return "Admin access granted";} else if (username.equals("user") &&password.equals("user123") && !hasTwoFactor) {return "User access granted";} else {return "Access denied";}}八、路径条件覆盖void processOrder(int quantity, float discount) {if (quantity > 10) {if (discount < 0.1) {printf("Order processed with standard discount");} else {printf("Order processed with special discount");}} else {printf("Order processed without discount");}}function calculateTotal(price, isMember, hasCoupon) { let total = price;if (isMember) {total = 0.9; // 10% discount for members}if (hasCoupon) {total = 0.95; // Additional 5% discount for coupon}return total;}九、修改条件/判定覆盖def upgrade_account(user_type, points):if user_type == "basic" and points >= 100:return "Upgrade to premium"elif user_type == "premium" and points >= 200:return "Upgrade to elite"else:return "No upgrade available"public String checkSubscription(String type, int duration) {if (type.equals("monthly") && duration >= 6) {return "Eligible for annual plan";} else if (type.equals("annual") && duration >= 12) {return "Eligible for lifetime plan";} else {return "Continue current plan";}}答案一、语句覆盖1. 测试用例:a=1, b=1;a=1, b=12. 测试用例:age=15;age=25;age=65二、分支覆盖1. 测试用例:x=1, y=1;x=1, y=1;x=1, y=1;x=1, y=12. 测试用例:score=95;score=85;score=75;score=65三、路径覆盖1. 测试用例:a=1, b=1;a=1, b=1;a=1, b=1;a=1, b=12. 测试用例:a=10, b=5, c=3;a=5, b=10, c=8;a=5, b=5, c=10;a=3, b=3, c=3四、条件覆盖1. 测试用例:password="567";password=""2. 测试用例:username="test", password="pass";username="", password=""五、判定条件覆盖1. 测试用例:age=20, hasLicense=True;age=17, hasLicense=False2. 测试用例:num=2;num=1;num=0;num=1六、多条件覆盖1. 测试用例:score=95, isFinalExam=False;score=85, isFinalExam=True;score=75, isFinalExam=False;score=65, isFinalExam=True七、条件组合覆盖1. 测试用例:username="admin", password="admin123",is_admin=False;username="user", password="56",is_admin=False;username="admin", password="admin123",is_admin=True2. 测试用例:username="admin", password="admin123", hasTwoFactor=True;username="user", password="user123", hasTwoFactor=False;username="admin", password="wrong", hasTwoFactor=True八、路径条件覆盖1. 测试用例:quantity=15, discount=0.05;quantity=8, discount=0.05;quantity=15, discount=0.22. 测试用例:price=100, isMember=True, hasCoupon=True;price=100, isMember=False, hasCoupon=False;price=100, isMember=True, hasCoupon=False九、修改条件/判定覆盖1. 测试用例:user_type="basic", points=50;user_type="basic", points=150;user_type="premium",points=150;user_type="premium", points=2502. 测试用例:type="monthly", duration=3;type="monthly", duration=9;type="annual", duration=9;type="annual", duration=15。

白盒测试及例题

白盒测试及例题

语句覆盖
为使程序中每个语句 至少执行一次,只需设计 一个能通过路径ace的例 子就可以了,例如选择输 入数据为: A=2,B=0,X=3 就可达到“语句覆盖” 标准。
语句覆盖
语句覆盖
从上例可看出,语句覆盖实际上是很 弱的,如果第一个条件语句中的AND错误 地编写成OR,上面的测试用例是不能发现 这个错误的;又如第三个条件语句中X>1 误写成X>0,这个测试用例也不能暴露它, 此外,沿着路径abd执行时,X的值应该保 持不变,如果这一方面有错误,上述测试 数据也不能发现它们。
1)A>1, B=0 3) A≤1, B=0 B≠0 5) A=2, X>1 7) A≠2, X>1 2) A>1, B≠0 4) A≤1, 6) A=2,X≤1 8) A≠2, X≤1
5)、 6)、 7)、8)四种情况是 第二个 IF语句的条件组合,而X的值 在该语句之前是要经过计算的,所以 还必须根据程序的逻辑推算出在程序 的入口点X的输入值应是什么。
白盒测试的主要目的:
• 保证一个模块中的所有独立路径至少被执 行一次; • 对所有的逻辑值均需要测试真、假两个分 支; • 在上下边界及可操作范围内运行所有循环; • 检查内部数据结构以确保其有效性。
测试覆盖标准
• 白盒法特点:以程序的内部逻辑为基础设计 测试用例,所以又称为逻辑覆盖法。应用白 盒法时,手头必须有程序的规格说明以及程 序清单。
条件组合覆盖
• 针对上述问题又提出了另一种标准——―条 件组合覆盖”。它的含义是:执行足够的 例子,使得每个判定中条件的各种可能组 合都至少出现一次。显然,满足“条件组 合覆盖”的测试用例是一定满足“分支覆 盖”、“条件覆盖”和“分支/条件覆盖” 的。

白盒测试作业题目-附答案

白盒测试作业题目-附答案

1.说出静态白盒测试的几个好处
答:进行静态白盒测试的首要原因是尽早发现软件缺陷,以找出动态黑盒测试难以发现或隔离的软件缺陷。

另一个好处是给黑盒测试人员提供思路。

2.判断是非:静态白盒测试可以找出需求遗漏之处和相关问题。

答:错误,因为静态白盒测试保证程序中所有关键路径的测试,防止由于没有执行的路径在实际投入运行后执行到发生意外的情况,但无法找出需求遗漏之处和相关问题。

3.正式审查由哪些关键要素组成?
答:确定问题、遵守规则、准备、编写报告
4.为以下流程图所示的程序段设计一组测试用例,要求分别满足语句覆盖、判
定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖
语句覆盖:
判定覆盖
条件覆盖
将X>8 真为T1,假为F1 将Y>5 真为T2,假为F2 将X>0 真为T3,假为F3 将Y>0 真为T4,假为F4 将X>16 真为T5,假为F5 将Y>10 真为T6,假为F6
判定/条件覆盖
条件组合覆盖
组合1:T1,T2 组合5:T3,T4 组合9:T5,T6 组合2:T1,F2 组合6:T3,F4 组合10:T5,F6 组合3:F1,T2 组合7:F3,T4 组合11:F5,T6 组合4:F1,F2 组合8:F3,F4 组合12:F5,F6
路径覆盖:
所有路径:a b c d e f g h k m n p
6. 按照基本路径测试方法设计测试用例
●画流图、计算环形复杂度
●导出独立路径
流图如下:。

软件测试补充练习-白盒测试

软件测试补充练习-白盒测试

软件测试补充练习白盒测试练习1、本流程图描述了某子程序的处理流程,现要求用白盒测试法对子程序进行测试。

根据判定覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖(条件组合覆盖)、路径覆盖五种覆盖标准,从供选择的答案中分别找出满足相应覆盖标准的最小的测试数据组(用①-⑩表示)。

供选择的答案:①a=5 b=1②a=5 b=-1③a=5 b=1 a=-5 b=-1④a=5 b=1 a=0 b=-1⑤a=5 b=-1 a=-5 b=1 a=-5 b=-1⑥a=5 b=1 a=0 b=0 a=-5 b=-1⑦a=5 b=1 a=0 b=1 a=0 b=-1 a=-5 b=1⑧a=5 b=1 a=0 b=-1 a=-5 b=1 a=-5 b=-1⑨a=5 b=1 a=0 b=-1 a=0 b=1 a=-5 b=1a=-5 b=-1⑩a=5 b=1 a=5 b=0 a=5 b=-1 a=0 b=1 a=0 b=0 a=0 b=-1 a=-5 b=1 a=-5 b=0判定覆盖:________________条件覆盖:________________判定/条件:______________条件组合:________________路径覆盖:________________2、本流程图描述了某子程序的处理流程,现要求用白盒测试法对其进行测试。

根据判定覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖(条件组合覆盖)、路径覆盖等 5 种覆盖标准,从供选择的答案中分别找出满足相应覆盖标准的最小的测试数据组(用①-⑩表示)。

供选择的答案:①x=90,y=90②x=50,y=50③x=90,y=90x=50,y=50④x=90,y=70x=40,y=90⑤x=90,y=90x=50,y=50x=90,y=70⑥x=90,y=70x=70,y=90x=50,y=50⑦x=90,y=90x=50,y=50x=90,y=70x=70,y=90⑧x=90,y=90x=50,y=50x=90,y=50x=80,y=80⑨x=90,y=90x=90,y=70x=70,y=90x=30,y=90x=70,y=70x=50,y=50⑩x=90,y=90x=80,y=80x=90,y=70x=90,y=30x=70,y=90x=30,y=90x=70,y=70x=50,y=50判定覆盖:________________条件覆盖:________________判定/条件:______________条件组合:________________路径覆盖:________________3、本流程图描述了某子程序的处理流程,现要求用白盒测试法为该子程序设计测试数据。

软件测试之白盒测试题及答案

软件测试之白盒测试题及答案

#include <iostream.h> //白盒测试测验题目白盒测试测验题目//程序功能:输入年、月,输出该月份的最大天数 void main() 1{2 int year, int month;3 int maxday = 0;4 cin>>year>>month;5 if ( month >= 1 && month <= 12 )6 {7 if ( month == 2 )8 {9 if ( year % 4 == 0 ) 10 { 11 if ( year % 100 == 0 ) 12 {13 if ( year % 400 == 0 ) 14 maxday = 29; 15 else16maxday = 28;17 } 18 else19 maxday = 29; 20 } 21else22 maxday = 28; 23 } 24 else 25 {26 if ( month == 4 || month == 6 || month == 9 || month == 11 ) 27 maxday = 30; 28 else29 maxday = 31; 30 } 31 }32cout<<"The MaxDay is:"<<maxday<<endl;33}要求:要求: 1. 画出该程序的程序流程图画出该程序的程序流程图1 2345 7 F1T168 10 F 2 T2912 11 27 F3 T 31331 33 F6 T632 28 14 29 23 F4 T4 1535 24 341630 25 36 18 F5 T51737 2026 2138 2219 39400:开始:开始 1 2 3456798 101112 13 14 1516 17 18 19 2021 22 23242526 27 28 29 30 31 323334:结束结束2. 画出该程序的DD 路径图路径图转换后的(D-D 图):A :{1-5};B :{6-7};C:{8-9}; D :{24-26};E :{10-11}; F :{21-23}; G :{12-13}; H :{18-20}; I :{14};J :{15-17};K :{27}; L :{28-31}; M :{32-33}; F1T1F2 T2T3F6 T6 F3 F4 T4F5T50:开始开始ABD C FEH GJ KL M 34:结束:结束 I3. 试用路径覆盖法中的语句覆盖、判定覆盖、条件覆盖、判定条件覆盖以及路径覆盖五种方法对上述问题设计测试用例述问题设计测试用例 1.语句覆盖:语句覆盖: 测试用例编号输入数据输入数据预期输出结果预期输出结果 覆盖语句覆盖语句yearmonthTC-00120002The MaxDay is:290,1,2,3,4,5,6,7,8,9,10,11,12,13,14,32,33,34TC-002 1700 2 The MaxDay is:280,1,2,3,4,5,6,7,8,9,10,11,12,13,15,16,17,32,33,34 TC-003 1604 2 The MaxDay is:290,1,2,3,4,5,6,7,8,9,10,11,18,19,20,32,33,34TC-004 1605 2 The MaxDay is:28 0,1,2,3,4,5,6,7,8,9,21,22,23,32,33,34TC-005 1914 6 The MaxDay is:30 0,1,2,3,4,5,6,7,24,25,26,27,32,33,34TC-006 1914 7 The MaxDay is:310,1,2,3,4,5,6,7,24,25,26,28,29,30,31,32,33,342.判定覆盖:判定覆盖:解释:我在各判断分支的真假分支都编有相应的真假符号,在判定覆盖中用判定分支的真假序号表示; 测试用例编号 输入数据输入数据 预期输出结果预期输出结果 覆盖判定覆盖判定yearmonthTC-001 2000 2 The MaxDay is:29 T1,T2,T3,T4,T5 TC-002 1700 2 The MaxDay is:28 T1,T2,T3,T4,F5TC-003 1604 2 The MaxDay is:29 T1,T2,T3,F4TC-004 1605 2 The MaxDay is:28 T1,T2,F3TC-005 1914 6 The MaxDay is:30 T1,F2,T6TC-006 1914 7 The MaxDay is:31 T1,F2,F6TC-007 1914 14 The MaxDay is:0 F13.条件覆盖:条件覆盖:(1)在判定语句5中有以下条件:中有以下条件:1.month >= 1 ;2.month <= 12 ;(2)在判定语句7中有以下条件:中有以下条件:3.month == 2;(3)在判定语句9中有以下条件:中有以下条件:4.year % 4 == 0;(4)在判定语句11中有以下条件:中有以下条件:5.year % 100 == 0;(5)在判定语句13中有以下条件:中有以下条件:6. year % 400 == 0;(6)在判定语句26中有以下条件:7. month == 4 ;8.month == 6 ;9.month == 9 ;10.month == 11;测试用例编号 输入数据输入数据 预期输出结果预期输出结果 覆盖的条件覆盖的条件yearmonthTC-001 2000 0 The MaxDay is:0 F1TC-002 1700 15 The MaxDay is:0 T1,F2TC-003 2000 2 The MaxDay is:29 T1,T2,T3,T4,T5,T6 TC-004 1605 4 The MaxDay is:30 T1,T2,F3,T7TC-005 1900 2 The MaxDay is:28 T1,T2,T3,T4,T5,F6TC-006 1604 2 The MaxDay is:29 T1,T2,T3,T4,F5TC-007 2013 2 The MaxDay is:28 T1,T2,T3,F4TC-008 1700 5 The MaxDay is:31 T1,T2,F3,F7,F8,F9,F10TC-009 1604 11 The MaxDay is:30 T1,T2,F3,F7,F8,F9,T10TC-0010 1605 9 The MaxDay is:30 T1,T2,F3,F7,F8,T9TC-0011 1914 6 The MaxDay is:30 T1,T2,F3,F7,T84.判定条件覆盖:(1)在判定语句5中有以下条件:中有以下条件:1.month >= 1 ;2.month <= 12 ;(2)在判定语句7中有以下条件:中有以下条件:3.month == 2;(3)在判定语句9中有以下条件:中有以下条件:4.year % 4 == 0;(6)在判定语句11中有以下条件:中有以下条件:5.year % 100 == 0;(7)在判定语句13中有以下条件:中有以下条件:6. year % 400 == 0;(6)在判定语句26中有以下条件:7. month == 4 ;8.month == 6 ;9.month == 9 ;10.month == 11;(覆盖的判定语句在程序流程图中有标识)(覆盖的判定语句在程序流程图中有标识)测试用例编号 输入数据输入数据 预期输出结果预期输出结果 覆盖的条件覆盖的条件 覆盖的判定覆盖的判定yearmonthTC-001 2000 0 The MaxDay is:0 F1 F1 TC-002 1700 15 The MaxDay is:0 T1,F2 F1TC-003 2000 2 TheMaxDay is:29 T1,T2,T3,T4,T5,T6 T1,T2,T3,T4,T5TC-004 1605 4 TheMaxDay is:30 T1,T2,F3,T7 T1,F2,T6TC-005 1900 2 TheMaxDayis: 28 T1,T2,T3,T4,T5,F6 T1,T2,T3,T4,F5TC-006 1604 2 The MaxDay is:29 T1,T2,T3,T4,F5 T1,T2,T3,F4 TC-007 2013 2 The MaxDay is:28 T1,T2,T3,F4 T1,T2,F3TC-008 1700 5 The MaxDay is:31 T1,T2,F3,F7,F8,F9,F10T1,F2,F6TC-009 1604 11 The MaxDay is:30 T1,T2,F3,F7,F8,F9,T10T1,F2,T6TC-0010 1605 9 The MaxDay is:30 T1,T2,F3,F7,F8,T9T1,F2,T6TC-0011 1914 6 The MaxDay is:30 T1,T2,F3,F7,T8 T1,F2,T65.路径覆盖:路径覆盖:解释:我在控制流程图的各条边上都编了序号,在路径覆盖中覆盖的路径用分支边上的序号表示;测试用例编号 输入数据输入数据 预期输出结果预期输出结果 覆盖的路径覆盖的路径year monthTC-001 2000 2 The MaxDay is:29 1-2-3-4-5-6-8-9-11-13-14-15-16-17-19-39-40 TC-00217002The MaxDay is:281-2-3-4-5-6-8-9-11-13-14-15-16-18-20-21-22-39-40TC-003 1604 2 The MaxDay is:29 1-2-3-4-5-6-8-9-11-13-14-23-24-25-26-39-40 TC-004 1605 2 The MaxDay is:28 1-2-3-4-5-6-8-9-11-27-28-29-30-39-40TC-005 1914 6 The MaxDay is:30 1-2-3-4-5-6-8-10-12-31-32-34-39-40TC-006 1914 7 The MaxDay is:31 1-2-3-4-5-6-8-10-12-31-33-35-36-37-38-39-40 TC-007 191414The MaxDay is:01-2-3-4-5-7-39-404. 用三种方法求出上述问题的圈复杂度(基路径数量V (G ))方法一:判定()结点个数计算法:V(G)=p+1;在此D-D 图中,判定结点个数为P=6;V(G)=6+1=7;方法二:.圈数计算法:V(G)= 圈数+1;该D-D 图中,圈数为6;V(G)=6+1=7;方法三:根据连通图公式计算:V(G)=E-N+2p ;E 是D-D 图中边的个数,图中边的个数, N 是D-D 图中结点的个数,p 是连通图的个数,p 一般等于1;在该图中E=40,N=35,p=1; V(G)=E-N+2p=40-35+2=7; 5. 写出上述问题的基路径测试方法所采用的基路径,写明过程写出上述问题的基路径测试方法所采用的基路径,写明过程过程:过程: 首先我根据D-D 路径来寻找基路径,找到一条最长的路径为路径1,再根据路径1中的中的 第一个分一个分支结点A 寻找其他没走过的路,这条路为路径2, 此时遍历完了分支结点A ,再在路径1中找第2个分支结点为B ,根据分支结点B 找到路径3,同理我们在路径1中还有分支结点C ,E ,G ,它们可以找到路径4,路径5和路径6,此时我们会发现已经查找完了5个分支结点,只剩下分支结点D 未被遍历,我们根据分支结点D 可以找到路径7,此时所有的基路径就已经全部找到的。

白盒测试用例练习

白盒测试用例练习

白盒测试用例练习白盒測試用例練習 1.為以下所示の程序段設計一組測試用例,要求分別滿足語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、組合覆蓋和路徑覆蓋,並畫出相應の程序流程圖。

void DoWork (int x,int y,int z) { int k=0,j=0; if ( (x3) } //語句塊 2 j=j%3; //語句塊 3 } a Y c N b e Y N d x3 and z5 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= {x3 and z5} 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=5k=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:x3 取真時 T1,取假時 F1; z5 取真時 T4,取假時 F4。

條件:x3,z5 條件:x=10,x!=4,y3,z5 P1(a-c-e) x=3,z=11,y=5 k=0, j=0F1, F2, F3, F4 x=10,x!=4,y3,z5 P1(a-c-e)x=3,z=11,y=5 k=0, j=0 F1, F2, F3, F4x=10,x!=4,y3,z3,z=10 3) x=10 5)x=4,y5 6)x=4,y58)x!=4,y c) if((a == b) || (b == c) || (a == c)) // 判斷為等腰三角形 return 2; else // 判斷為普通三角形return 1; } else { // 為非三角形 return 0; } } } 二、程序流程圖开始输入数据a + b c int leap=0;if( (year%4==0 if(year31)return 0;break; case 4:case 6:case 9:case 11:if(day30) return 0; break; case 2:if(leap==1} if(leap==0} break; default:return0;break; } return pass; } void fun(){ intyear,month,day,sumday; sumday=0; printf(“input year,month,day:\n“); scanf(“%d%d%d“,if(check(year,month,day)==0){printf(“輸入の日期無效“);return;} if(month==1||month==2) { month+=12; year--; } sumday=(day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7; if(month==13||month==14){ month-=12; year++;} switch(sumday) {case0:printf(“%d-%d-%d isMonday\n“,year,month,day);break; case 1:printf(“%d-%d-%d is Tuesday\n“,year,month,day);break; case2:printf(“%d-%d-%d isWednesday\n“,year,month,day);break; case3:printf(“%d-%d-%d isThurday\n“,year,month,day);break; case 4:printf(“%d-%d-%d is Friday\n“,year,month,day);break; case5:printf(“%d-%d-%d isSaturday\n“,year,month,day);break; case6:printf(“%d-%d-%d isSunday\n“,year,month,day);break;default:printf(“date error“);break; } } main(){ for(int i=0;i31 day30 return 0 no yes return 0 yesleap==1 i list.n-1; i++ ) { int k = i; //在list.V[i].key到 list.V[n-1].key中找具有最小關鍵碼の對象 for ( int j = i+1; j list.n; j++) if( list.V[j].getKey ( ) list.V[k].getKey ( ) ) k = j;//當前具最小關鍵碼の對象 if ( k != i ) Swap( list.V[i], list.V[k] ); //交換 } } ( 1)試計算此程序段の McCabe 複雜性;( 2)用基本路徑覆蓋法給出測試路徑;( 3)為各測試路徑設計測試用例。

【免费下载】白盒测试方法习题及答案

【免费下载】白盒测试方法习题及答案
18.对下面的个人所得税程序中满足判定覆盖测试用例的是( ) If(income < 800) taxrate = 0; else if(income <= 1500) taxrate = 0.05;
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。

白盒测试 例子

白盒测试 例子

白盒测试例子
白盒测试是软件测试中的一种重要方法,其主要目的是验证程序的内部结构是
否符合设计要求,以此来检查代码的覆盖率和质量。

在白盒测试中,测试人员可以查看源代码,并且能够了解程序的逻辑结构,以便更好地设计测试用例和发现潜在的缺陷。

以下是一个关于白盒测试的例子,以便更好地理解这一概念。

假设现在有一个计算器应用程序,其中包含了加法、减法、乘法和除法等功能。

我们需要对这个计算器应用程序进行白盒测试,以确保其功能的正确性和稳定性。

首先,我们可以查看计算器应用程序的源代码,了解其内部实现逻辑。

接下来,我们可以设计一些测试用例,例如针对加法功能的测试用例: - 输入
两个正整数,验证计算结果是否正确。

- 输入一个正整数和一个负整数,验证计算
结果是否正确。

- 输入两个小数,验证计算结果是否正确。

对于减法、乘法和除法功能也可以设计类似的测试用例。

在执行这些测试用例时,我们可以通过观察计算结果和预期结果是否一致来判断程序的正确性。

同时,还可以利用代码覆盖率工具来分析测试覆盖范围,确保所有的代码路径都得到覆盖。

通过这个例子,我们可以看到白盒测试的准确性和深度优势。

通过深入了解程
序的内部结构,白盒测试可以更好地发现潜在的问题,保障软件质量,提高用户体验。

综上所述,白盒测试是一种重要的软件测试方法,通过设计测试用例和分析源
代码,可以全面检查程序的内部逻辑和质量。

在软件开发过程中,合理运用白盒测试可以有效提高软件的稳定性和可靠性,确保软件交付符合设计要求。

大连东软信息学院 软件测试考题题库 白盒测试方法习题及答案

大连东软信息学院 软件测试考题题库 白盒测试方法习题及答案

1.计算环路复杂度方法有哪三种?答:(1)V(G)=判定节点数+1;(2)V(G)=E-N+2;(3)V(G)=区域数+12.白盒测试有几种方法?答:白盒测试方法分为两大类:静态测试方法和动态测试方法。

静态测试方法:检查软件的表示和描述是否一致,没有冲突或者没有歧义。

动态测试方法:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。

4.比较白盒测试和黑盒测试?答:使用白盒测试方法时,测试根据程序的内部逻辑和指定的覆盖标准;黑盒测试法是通过分析程序的接口功能设计测试用例的。

5.为以下程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖。

int test(int A,int B){if((A>1)AND(B<10))thenX=A-B;if((A=2)OR(B>20))thenX=A+B;return x;}答:语句覆盖测试用例:A=2,B=0;判定覆盖测试用例:A=3,B=0;A=2,B=20;条件覆盖测试用例:A=2,B=0;A=0,B=21;6.为以下程序段设计一组测试用例,要求分别满足语句覆盖、判定覆盖、条件覆盖。

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);}//语句块1if((x==4)||(y>5)){j=x*y+10;}//语句块2j=j%3;//语句块3}答:语句覆盖测试用例:x=4、y=5、z=5;判定覆盖测试用例::x=4、y=5、z=5;x=2、y=5、z=5;条件覆盖测试用例:x=4、y=6、z=5;x=2、y=5、z=15;8.看代码程序:void Sort(int iRecordNum,int iType)1{2int x=0;3int y=0;4while(iRecordNum>0)5{6If(iType==0)7x=y+2;8else9If(iType==1)10x=y+10;11else12x=y+20;13}14}要求(1)给以上代码画出控制流图(2)控制流图的环复杂度V(G),写出独立路径。

《白盒测试及例题》课件

《白盒测试及例题》课件
• 白盒测试使用被测单元内部如何工作的信息,允许测试人员对 程序内部逻辑结构及有关信息来设计和选择测试用例,对程序 的逻辑路径进行测试。基于一个应用代码的内部逻辑知识,测 试是基于覆盖全部代码、分支、路径、条件。
白盒测试的主要目的:
• 保证一个模块中的所有独立路径至少被执 行一次;
• 对所有的逻辑值均需要测试真、假两个分 支;
语句覆盖
为使程序中每个语句 至少执行一次,只需设计 一个能通过路径ace的例 子就可以了,例如选择输 入数据为:
A=2,B=0,X=3 就可达到“语句覆盖” 标准。
语句覆盖
语句覆盖
从上例可看出,语句覆盖实际上是很 弱的,如果第一个条件语句中的AND错误 地编写成OR,上面的测试用例是不能发现 这个错误的;又如第三个条件语句中X>1 误写成X>0,这个测试用例也不能暴露它, 此外,沿着路径abd执行时,X的值应该保 持不变,如果这一方面有错误,上述测试 数据也不能发现它们。
测试覆盖标准
测试覆盖标准
• 上页小程序的流程图,其中包括了一个执 行达20次的循环。那么它所包含的不同执 行路径数高达520(=1013)条,若要对它 进行穷举测试,覆盖所有的路径。假使测 试程序对每一条路径进行测试需要1毫秒, 同样假定一天工作24小时,一年工作365 天, 那么要想把如图所示的小程序的所有 路径测试完,则需要3170年。
测试覆盖标准
– 条件组合覆盖:执行足够的例子,使得 每个判定中条件的各种可能组合都至少 出现一次。
这是一种相当强的覆盖准则,可以 有效地检查各种可能的条件取值的组合 是否正确。它不但可覆盖所有条件的可 能取值的组合,还可覆盖所有判断的可 取分支,但可能有的路径会遗漏掉。测 试还不完全。
白盒测试的主要方法:

白盒测试实例

白盒测试实例

白盒测试实例之一——需求说明三角形的问题在很多软件测试的书籍中都出现过,问题虽小,五脏俱全,是个很不错的软件测试的教学例子。

本文借助这个例子结合教学经验,从更高的视角来探讨需求分析、软件设计、软件开发与软件测试之间的关系与作用。

题目:根据下面给出的三角形的需求完成程序并完成测试:一、输入条件:1、条件1:a+b>c2、条件2:a+c>b3、条件3:b+c>a4、条件4:0<a<2005、条件5:0<b<2006、条件6:0<c<2007、条件7:a==b8、条件8:a==c9、条件9:b==c10、条件10:a2+b2==c211、条件11:a2+ c2== b212、条件12:c2+b2== a2二、输出结果:1、不能组成三角形2、等边三角形3、等腰三角形4、直角三角形5、一般三角形6、某些边不满足限制白盒测试实例之二——答案很多初学者一看到这个需求,都觉得很简单,然后立刻就开始动手写代码了,这并不是一个很好的习惯。

如果你的第一直觉也是这样的,不妨耐心看到文章的最后。

大部分人的思路:1、首先建立一个main函数,main函数第一件事是提示用户输入三角形的三边,然后获取用户的输入(假设用户的输入都是整数的情况),用C语言来写,这一步基本上不是问题(printf和scanf),但是要求用java来写的话,很多学生就马上遇到问题了,java5.0及之前的版本不容易获取用户的输入。

点评:这样的思路做出来的程序只能通过手工方式来测试所有业务逻辑,而且这个程序只能是DOS 界面版本了,要是想使用图形化界面来做输入,就得全部写过代码。

2、业务处理流程的思路用流程图表示如下:3、15. else16. {17. if(a==b || b==c || a==c)18. {19. printf("2是等腰三角形");20. }21. else22. {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. else28. {29. printf("4是一般三角形");30. }31. }32. }33. }34. else35. {36. printf("5不能组成三角形");37. }38. }39. else40. {41. printf("6某些边不满足限制");42. }43. }白盒测试实例之三——需求分析需求分析是后续工作的基石,如果分析思路有问题,后续工作可能就会走向不正确的方向,比如:代码重用性差、难于测试、难于扩展和难于维护等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

测试覆盖标准
– 条件组合覆盖:执行足够的例子,使得 每个判定中条件的各种可能组合都至少 出现一次。
这是一种相当强的覆盖准则,可以 有效地检查各种可能的条件取值的组合 是否正确。它不但可覆盖所有条件的可 能取值的组合,还可覆盖所有判断的可 取分支,但可能有的路径会遗漏掉。测 试还不完全。
白盒测试的主要方法:
– 判定覆盖(也称为分支覆盖):执行足够的 测试用例,使得程序中的每一个分支至少都 通过一次。 判定覆盖只比语句覆盖稍强一些,但实 际效果表明,只是判定覆盖,还不能保证一 定能查出在判断的条件中存在的错误。因此, 还需要更强的逻辑覆盖准则去检验判断内部 条件。
– 条件覆盖:执行足够的测试用例,使程序中 每个判断的每个条件的每个可能取值至少执 行一次; 条件覆盖深入到判定中的每个条件,但 可能不能满足判定覆盖的要求。
① A=3,B=0,X=1 (沿路径acd执行); ② A=2,B=1,X=3(沿路径abe执行)
分支覆盖
A=3,B=0,X=1 (沿路径
判定覆盖
分支覆盖
程序中含有判定的语句包括IF-THENELSE、DO-WHILE、REPEAT-UNTIL等,除了 双值的判定语句外,还有多值的判定语句,如 PASCAL中的CASE语句、FORTRAN中带有三 个分支的IF语句等。所以“分支覆盖”更一般的 含义是:使得每一个分支获得每一种可能的结 果。
测试覆盖标准
– 判定/条件覆盖:执行足够的测试用例,使得判 定中每个条件取到各种可能的值,并使每个判定 取到各种可能的结果。
判定/条件覆盖有缺陷。从表面上来看,它测 试了所有条件的取值。但是事实并非如此。往往 某些条件掩盖了另一些条件。会遗漏某些条件取 值错误的情况。为彻底地检查所有条件的取值, 需要将判定语句中给出的复合条件表达式进行分 解,形成由多个基本判定嵌套的流程图。这样就 可以有效地检查所有的条件是否正确了。
• 白盒测试使用被测单元内部如何工作的信息,允许测试人员对 程序内部逻辑结构及有关信息来设计和选择测试用例,对程序 的逻辑路径进行测试。基于一个应用代码的内部逻辑知识,测 试是基于覆盖全部代码、分支、路径、条件。
白盒测试的主要目的:
• 保证一个模块中的所有独立路径至少被执 行一次;
• 对所有的逻辑值均需要测试真、假两个分 支;
• 在上下边界及可操作范围内运行所有循环; • 检查内部数据结构以确保其有效性。
测试覆盖标准
• 白盒法特点:以程序的内部逻辑为基础设计 测试用例,所以又称为逻辑覆盖法。应用白 盒法时,手头必须有程序的规格说明以及程 序清单。
白盒法考虑的是测试用例对程序内部逻 辑的覆盖程度。最彻底的白盒法是覆盖程序 中的每一条路径,但是由于程序中一般含有 循环,所以路径的数目极大,要执行每一条 路径是不可能的,只能希望覆盖的程度尽可 能高些。
语句覆盖
为使程序中每个语句 至少执行一次,只需设计 一个能通过路径ace的例 子就可以了,例如选择输 入数据为:
A=2,B=0,X=3 就可达到“语句覆盖” 标准。
语句覆盖
语句覆盖
从上例可看出,语句覆盖实际上是很 弱的,如果第一个条件语句中的AND错误 地编写成OR,上面的测试用例是不能发现 这个错误的;又如第三个条件语句中X>1 误写成X>0,这个测试用例也不能暴露它, 此外,沿着路径abd执行时,X的值应该保 持不变,如果这一方面有错误,上述测试 数据也不能发现它们。
白盒测试
白盒测试
• 白盒测试概念 • 测试覆盖标准 • 逻辑驱动测试 • 基本路径测试
白盒测试概念
• 白盒测试也称结构测试或逻辑驱动测试,是一种测试用例设计 方法,它从程序的控制结构导出测试用例。(测试用例由测试 输入数据以及与之对应的输出结果组成。 测试用例设计的好 坏直接决定了测试的效果和结果。所以说在软件测试活动中最 关键的步骤就是设计有效的测试用例。)
测试覆盖标准
测试覆盖标准
• 为了衡量测试的覆盖程度,需要建立一些标准,目 前常用的一些覆盖标准从低到高分别是: – 语句覆盖:是一个比较弱的测试标准,它的含 义是:选择足够的测试用例,使得程序中每个 语句至少都能被执行一次。
它是最弱的逻辑覆盖,效果有限,必须与其它 方法交互使用。
测试覆盖标准
白盒测试的主要方法:
– 条件组合覆盖:设计足够多的测试用例,运 行所测程序,使程序中每个判断的所有可能 的条件取值组合至少执行一次;
• 基本路径测试 设计足够多的测试用例,运行所测程序,要覆 盖程序中所有可能的路径。这是最强的覆盖 准则。但在路径数目很大时,真正做到完全 覆盖是很困难的,必须把覆盖路径数目压缩 到一定限度。
语句覆盖
• 语句覆盖”是一个比较弱的测试标准,它 的含义是:选择足够的测试用例,使得程 序中每个语句至少都能被执行一次。 – 如,例1:
PROCEDURE M(VAR A,B,X:REAL); BEGIN IF (A>1) AND (B=0) THEN X:=X/A; IF (A=2) OR (X>1) THEN X:=X+1; END.
分支覆盖
• 比“语句覆盖”稍强的覆盖标准是“分支 覆盖”(或称分支覆盖)标准。含义是:执行 足够的测试用例,使得程序中的每一个分 支至少都通过一次。
分支覆盖
对例1的程序,如果设计两个例子, 使它们能通过路径ace和abd,或者通过 路径acd和abe,就可达到“判定覆盖” 标准,为此,可以选择输入数据为:
• 逻辑驱动测试 – 语句覆盖:语句覆盖就是设计若干个测试用例,运行被测试程 序,使得每一条可执行语句至少执行一次; – 判定覆盖(也称为分支覆盖):设计若干个测试用例,运行所 测程序,使程序中每个判断的取真分支和取假分支至少执行一 次; – 条件覆盖:设计足够多的测试用例,运行所测程序,使程序中 每个判断的每个条件的每个可能取值至少执行一次; – 判定/条件覆盖:设计足够多的测试用例,运行所测程序,使程 序中每个判断的每个条件的所有可能取值至少执行一次,并且 每个可能的判断结果也至少执行一次,换句话说,即是要求各 个判断的所有可能的条件取值组合至少执行一次;
相关文档
最新文档