软件测试习题课

  • 格式:pdf
  • 大小:170.16 KB
  • 文档页数:6

3、针对以下 C 语言程序,请按要求回答问题
以下是一个用来求解一元二次方程的 C 语言程序:
1 main()
2{
3
float a,b,c,x1,x2,delta;
4
scanf("%f%f%f",&a,&b,&c);
5
if (a!=0)
6
{
7
delta=b*b-4*a*c;
8
if (delta>0)
9
2{
3
int i_temp=0;
4
while(i_count>0)
5
{
6
if(0==i_flag)
7
{
8
i_temp=i_count+100;
9
break;
10
}
11
else
12
{
13
if(1==i_flag)
14
{
15
i_temp=i_temp+10;
16
}
17
else
18
{
19
i_temp=i_temp+20;
4、一个系统的登录操作规格说明如下: 登录对话框有两个数据输入:用户名和密码。登录操作对两个输入数据进行检查,要求用户
名中只能包含字母和数字(字母不区分大小写),密码可以包含任何字符。用户名和密码都 不能为空且长度不限。当用户名或密码为空时,则登录失败并提示对应的出错信息;当用户 名不正确或用户名不存在或密码错误时,则登录失败并提示以下三种相应的出错信息:用户 名不合法(即包含有非字母、非数字字符),或用户名不存在,或密码错误;当用户名和密 码都正确时,则显示登录成功信息,完成登录。 假设正确的用户名是 abcd123,密码是123456 试用等价类方法为上述规格说明设计等价类表和测试用例。
{
10
x1=(-b+sqrt(delta))/(2*a);
11
x2=(-b-sqrt(delta))/(2*a);
12
printf("x1=%f,x2=%f\n",x1,x2);
13
}
14
else
15
{
16
if (delta==0)
17
{
18
x1=-b/(2*a);
19
printf("x1=%f\n",x1);
20
}
21
}
22
i_count--;
23
}
24
return i_temp;
25
}
(1)画出该函数的控制流程图。
(2)采用基本路径测试法设计一组测试用例,保证每个基本独立路径都至少执行一次。
2、针对以下 C 语言程序,请按要求回答问题 下面是一个简单的 C 语言程序:
int func1(int a,b,c) { int k=1;
3、以下是一个自动饮料售货机软件的操作规格说明,请按要求回答问题: 设要对一个自动饮料售货机软件进行黑盒测试。该软件的规格说明如下: "有一个处理单价为 1 元 5 角钱的盒装饮料的自动售货机软件。若投入 1 元 5 角硬币,按下" 可乐"、"雪碧"或"红茶"按钮,相应的饮料就送出来。若投入的是 2 元硬币,在送出饮料的同 时退还 5 角硬币。 (1)试利用因果图法,建立该软件的因果图 (2)设计测试该软件的全部测试用例
(1)根据上述要求,设计判定表。 (2)根据上述判定表设计测试用例,尽量使其覆盖所以得情况。
二、等价类 1、以下是某应用程序的规格描述,请按要求回答问题 程序规则:实现某城市的电话号码,该电话号码由三部分组成。它的说明如下:区号:空白 或 3 位数字;前缀:非"0"或"1"开头的 3 位数字;后缀:4 位数字。
2、以下电费计算的几条规则,请按要求回答问题 一些城市的电力公司把用户分为两类:单费率用户和复费率用户。对于单费率用户实行
单一电价,即在任何时间段都是一个价;对于复费率用户在不同时段实行不同的电价。有4 条计算电费的规则:对于单费率用户,按公式 A 计算电费;对于复费率用户,如果不在规 定期间内,同单费率用户,按照公式 A 计算电费,否则按公式 B 计算;如果既不是单费率 用户也不是复费率用户,则做其他处理。
20
}
21
else
22
{
23
printf("no real solution\n");
24
}
25
}
26
}
27 }
(1)画出 main( )函数的控制流图。 (2)采用基本路径测试法设计一组测试用例,保证,每个基本独立路径都至少执行一次。
4、针对以下 C 语言程序,请按要求回答问题。 已知 weekday.c 源程序如下: #include<stdio.h> #include<conio.h> /*主函数*/ int main() { char letter; printf("please input the first letter,"Y"to exit!\n")【1】; while((letter=getch())!=Y)/*当输入字母为 Y 时结束*/【22】 { switch(letter) { case S:【2】 printf("%c\n",letter); printf("please input second letter\n");【3】 //输入第二个字母 if((letter=getch())==a)【4】 printf("Saturday\n");【5】 else if(letter==u)【6】 printf("sunday\n");【7】 else printf("data error\n");【8】 break; case F:【9】 printf("Friday\n");【10】 break; caseM:【11】 printf("Monday\n");【12】 break; caseT:【13】 printf("%c\n",letter); printf("please input second letter\a");【14】 //输入第二个字母 if((letter=getch())==u)【15】 printf("tuesday\n");【16】 else if(letter==h)【17】 printf("thursday\n");【18】 else printf("data error\n");【8】 break; case W:【19】 printf("wednesday\n");【20】
num+=m[i]; num+=(p->date); if((p->year)%4==0&&(p->year)%100!=0||(p->year)%400==0)
if((p->month)>2) num++;
printf("This day is %d day in the year. ",num); } (1)画出此程序主函数的控制流程图。 (2)设计一组测试用例,使该程序所有函数的语句覆盖率和分支覆盖率均能达到100%。如 果认为该程序的语句或分支覆盖率无法达到100%,需说明为什么。
break; default:【21】 printf("data error\n");【8】 } } return 0;【22】 } 1)画出主函数 main 的控制流程图; 2)设计一组测试用例,使 main 函数的语句覆盖率尽量达到 100%; 3)main 函数的语句覆盖率能否达到 100%?如果认为无法达到,需说明原因。
if((a>0||b<0)) k=k+a; else k=k+b; if(c>0) k=k+c; return k; } (1)画出该函数的程序流程图。 (2)设计测试用例,分别使函数的各种逻辑覆盖率尽量达到 100%。如果认为该函数的某 种逻辑覆盖率无法达到 100%,需要说明原因。 (3)设计特殊的测试用例,说明各种逻辑覆盖之间 返回 i_count+100 当 i_flag=1; 返回 i_count+10 否则 返回 i_count+20
输入参数:int i_count int i_flag 输出参数:int i_return 程序代码如下:
1 int Test(int i_count,int i_flag)
3、以下是一软件规格说明,请按照要求回答问题: 软件规格说明:某学校的学生公寓有 14 栋楼,用 A~N 这 14 个大写字母的其中一个代表楼 号。每栋楼的层数为六层,代号为 1~6。每层楼有 40 个房间,编号为 01~40。具体表示一 个宿舍房间时,用一个字母加三位数字表示,例如:"C527"表示 C 楼第 5 层的 27 室。软件 运行时,如果输入的房间号不在上述范围内,将不予接受,并显示输入无效。 (1)请根据规格说明,划分等价类。 (2)使用等价类划分方法为该软件设计测试用例。
三、因果图 1、以下是某软件项目规格说明,请按要求回答问题 某一软件项目的规格说明:对于处于提交审批状态的单据,数据完整率达到 80%以上或已 经过业务员确认,则进行处理。 (1)请根据规格说明,画出对应的因果图。 (2)采用基于因果图的方法为该软件项目设计测试用例。
2、以下是某"象棋中走马事件"应用程序的走马规则,请按要求回答问题: 以下是中国象棋中走马事件中的走马原则: 1)如果落点在棋盘外,则不移动棋子。 2)如果落点与起点不构成日字型,则不移动棋子。 3)如果落点处有己方棋子,则不移动棋子。 4)如果在落点方向的邻近交叉点有棋子(绊马腿),则不移动棋子。 5)如果不属于(1)~(4)条,且落点处无棋子,则移动棋子。 6)如果不属于(1)~(4)条,且落点处为对方棋子(非老将),则移动棋子并除去对 方棋子。 7)如果不属于(1)~(4)条,且落点处为对方老将,则移动棋子,并提示战胜对方, 游戏结束。 (1)画出该应用程序的因果图。 (2)对该软件进行基于因果图的方法设计测试用例。