爱收集资源网

用例语句和判定条件的全面覆盖(2015更新)

网络整理 2023-09-30 20:09

#0:a:2:b:a:0:c:a:2:8:9:1:f:9:f:a:3:e:6:0:3:a:1:b:7:1:6:5:4:f:6:1#

白盒测试用例练习

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

voidDoWork(intx,inty,intz)

intk=0,j=0;

if((x>3)&&(z

{k=x*y-1;

j=sqrt(k);//句子块1

if((x==4)||(y>5))

j=x*y+10;

}//句子块2

j=j%3;//句子块3

#8:1:b:a:4:6:1:2:8:8:b:3:6:c:5:0:f:9:8:f:a:7:9:d:b:c:4:f:e:4:0:0#

由这个流程图可以看出,该程序模块有4条不同的路径:

P1:(a-c-e)P2:(a-c-d)

P3:(a-b-e)P4:(a-b-d)

将上面的判断条件和过程记录如下:

判断条件M={x>3andz

判断条件N={x=4ory>5}

1、语句覆盖

2、判定覆盖

也可以让测试用例测试路径P2和P3。相应的两组输入数据如下:

3、条件覆盖

对于M:x>3取真时T1,取假时F1;

对于N:x=4取真时T3,取假时F3;

y>5取真时T4,取假时F4。

条件:x>3,z5

条件:x=10,x!=4,y3,z3,z>=10

3)x56)x=4,yc)&&(b+c>a)&&(a+c>b)){//判定为三角形

if((a==b)&&(b==c))//判定为等腰三角形

return3;

if((a==b)||(b==c)||(a==c))//判定为等边三角形return2;

else//判定为普通三角形

return1;

else{//为非三角形

return0;

二、程序流程图

三、测试用例

四、程序控制流图

基本路径覆盖测试用例

题目三:估算生日是礼拜几

已知公元1年1月1日是礼拜一。编撰一个程序,只要输入年月日,能够回答这天是礼拜几。应用逻辑覆盖方式和基路径测试方式为里面的问题设计测试用例

一.程序代码

#include

intcheck(intyear,intmonth,intday){

intpass=1;

intleap=0;

if((year%4==0&&year0!=0)||year%400==0)

leap=1;

if(year

switch(month)

{case1:case3:case5:case7:case8:case10:case12:if(day>31)return0;break;case4:case6:case9:case11:if(day>30)return0;break;

case2:if(leap==1&&day>29){return0;}

if(leap==0&&day>28){return0;}

break;

default:return0;break;

returnpass;

voidfun(){

intyear,month,day,sumday;

sumday=0;

printf("inputyear,month,day:\n");

scanf("%d%d%d",&year,&month,&day);

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-%disMonday\n",year,month,day);break;

case1:printf("%d-%d-%disTuesday\n",year,month,day);break;

case2:printf("%d-%d-%disWednesday\n",year,month,day);break;

case3:printf("%d-%d-%disThurday\n",year,month,day);break;

case4:printf("%d-%d-%disFriday\n",year,month,day);break;

case5:printf("%d-%d-%disSaturday\n",year,month,day);break;

case6:printf("%d-%d-%disSunday\n",year,month,day);break;

default:printf("dateerror");break;

main()

{for(inti=0;i

fun();

二.画出程序的控制流图

1.程序流程图如下:

2.程序控制流图如下:

3.用基本路径的测试路径

4.测试用例

题目四:选择排序

下边是选择排序的程序,其中datalist是数据表,它有两个数据成员:一是元素类型为Element的字段V,另一个是链表大小n。算法中用到两个操作,一是取某链表元素V[i]的关键码操作getKey(),一是交换两链表元素内容的操作Swap()::

voidSelectSort(datalist&list){

/对表list.V[0]到list.V[n-1]进行排序,n是表当前厚度。

for(inti=0;i

intk=i;//在list.V[i].key到list.V[n-1].key中找具有最小关键码的对象

for(intj=i+1;j

if(list.V[j].getKey()

if(k!=i)Swap(list.V[i],list.V[k]);//交换

(1)试估算此程序段的McCabe复杂性;

(2)用基本路径覆盖法给出测试路径;

(3)为各测试路径设计测试用例。

解答如下:

首先画出程序的流程图

(1)McCabe复杂性为:

V(G)=判断节点数+1=4+1=5

(2)用基本路径覆盖法给出测试路径:

从以上程序图中确定无关的基本路径:Path1:0-1-2-12

Path2:0-1-2-3-4-5-9-11

Path3:0-1-2-3-4-5-9-10-11

Path4:0-1-2-3-4-5-6-8

Path5:0-1-2-3-4-5-6-7-8

(3)为各测试路径设计测试用例:

因为节点2和节点5判断条件是等价的,所以Path2和Path3不可直达。A={1},n=1

路径:0-1-2-12

A={1,2},n=2

路径:0-1-2-3-4-5-6-8-5-9-11-2-12

A={2,1},n=2

路径:0-1-2-3-4-5-6-7-8-5-9-10-11-2-12

A={1,3,2},n=3

路径:0-1-2-3-4-5-6-8-5-9-11-2-3-4-5-6-7-8-5-9-10-11-2-12

基本路径测试法题目
上一篇:错误0xx000006x000006000006cc解决 下一篇:没有了