软件测试习题课
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2、以下电费计算的几条规则,请按要求回答问题 一些城市的电力公司把用户分为两类:单费率用户和复费率用户。对于单费率用户实行
单一电价,即在任何时间段都是一个价;对于复费率用户在不同时段实行不同的电价。有4 条计算电费的规则:对于单费率用户,按公式 A 计算电费;对于复费率用户,如果不在规 定期间内,同单费率用户,按照公式 A 计算电费,否则按公式 B 计算;如果既不是单费率 用户也不是复费率用户,则做其他处理。
函数说明:当 i_flag=0; 返回 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)
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;
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%,需说明为什么。
一、判定表 1、用户登录界面通常需要用户输入用户名和密码,以下是系统反馈信息的几条规则,请按 照要求回答问题。
如果用户名和密码正确无误,则显示"登录成功" 只要用户名为空,就提示"用户名不能为空",清空密码框; 用户名不为空,而密码为空,则提示"密码不能为空"; 若用户名不正确,则提示"用户名错误",清空用户名框和密码框; 若用户名正确,密码不正确,则提示"密码错误",清空密码框; (1)根据上述规则,设计判定表 (2)根据判定表设计测试用例(假设有一用户名/密码:abc/123456,不存在名为 xyz 的用户)
(1)根据上述要求,设计判定表。 (2)根据上述判定表设计测试用例,尽量使其覆盖所以得情况。
二、等价类 1、以下是某应用程序的规格描述,请按要求回答问题 程序规则:实现某城市的电话号码,该电话号码由三部分组成。它的说明如下:区号:空白 或 3 位数字;前缀:非"0"或"1"开头的 3 位数字;后缀:4 位数字。
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)设计特殊的测试用例,说明各种逻辑覆盖之间的关系。
3、以下是一个自动饮料售货机软件的操作规格说明,请按要求回答问题: 设要对一个自动饮料售货机软件进行黑盒测试。该软件的规格说明如下: "有一个处理单价为 1 元 5 角钱的盒装饮料的自动售货机软件。若投入 1 元 5 角硬币,按下" 可乐"、"雪碧"或"红茶"按钮,相应的饮料就送出来。若投入的是 2 元硬币,在送出饮料的同 时退还 5 角硬币。 (1)试利用因果图法,建立该软件的因果图 (2)设计测试该软件的全部测试用例
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】
{
10
Hale Waihona Puke Baidu
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);
3、以下是一软件规格说明,请按照要求回答问题: 软件规格说明:某学校的学生公寓有 14 栋楼,用 A~N 这 14 个大写字母的其中一个代表楼 号。每栋楼的层数为六层,代号为 1~6。每层楼有 40 个房间,编号为 01~40。具体表示一 个宿舍房间时,用一个字母加三位数字表示,例如:"C527"表示 C 楼第 5 层的 27 室。软件 运行时,如果输入的房间号不在上述范围内,将不予接受,并显示输入无效。 (1)请根据规格说明,划分等价类。 (2)使用等价类划分方法为该软件设计测试用例。
请分析该程序的规则说明和被测程序的功能,采用等价类划分方法设计测试用例。
2、以下是一软件规格说明,请按要求回答问题: 软件规格说明:某工厂招工规定,报名者年龄应该在 16 周岁到 35 周岁之间(到 2005 年 12 月 31 日为止),即出生年月不在上述范围内的人员将不予接受,并显示"年龄不合格"的出错 信息。 (1)请根据规格说明,划分等价类。 (2)使用等价类划分方法为该软件设计测试用例。
4、一个系统的登录操作规格说明如下: 登录对话框有两个数据输入:用户名和密码。登录操作对两个输入数据进行检查,要求用户
名中只能包含字母和数字(字母不区分大小写),密码可以包含任何字符。用户名和密码都 不能为空且长度不限。当用户名或密码为空时,则登录失败并提示对应的出错信息;当用户 名不正确或用户名不存在或密码错误时,则登录失败并提示以下三种相应的出错信息:用户 名不合法(即包含有非字母、非数字字符),或用户名不存在,或密码错误;当用户名和密 码都正确时,则显示登录成功信息,完成登录。 假设正确的用户名是 abcd123,密码是123456 试用等价类方法为上述规格说明设计等价类表和测试用例。
四、边界值 1、以下是某程序说明,请按要求回答问题: 程序说明:假设有一个把数字串转换为整数的函数。其中数字串要求长度为 1-6 个数字构 成,机器字长为 16 位。 分析程序中出现的边界情况,采用边界值法为该程序设计测试用例。
五、白盒测试
针对以下 C 语言程序,请按要求回答问题: 下面是一个程序段(C 语言),试设计基本路径测试的测试用例,设计出的测试用例要保证 每一个基本独立路径至少要执行一次。
三、因果图 1、以下是某软件项目规格说明,请按要求回答问题 某一软件项目的规格说明:对于处于提交审批状态的单据,数据完整率达到 80%以上或已 经过业务员确认,则进行处理。 (1)请根据规格说明,画出对应的因果图。 (2)采用基于因果图的方法为该软件项目设计测试用例。
2、以下是某"象棋中走马事件"应用程序的走马规则,请按要求回答问题: 以下是中国象棋中走马事件中的走马原则: 1)如果落点在棋盘外,则不移动棋子。 2)如果落点与起点不构成日字型,则不移动棋子。 3)如果落点处有己方棋子,则不移动棋子。 4)如果在落点方向的邻近交叉点有棋子(绊马腿),则不移动棋子。 5)如果不属于(1)~(4)条,且落点处无棋子,则移动棋子。 6)如果不属于(1)~(4)条,且落点处为对方棋子(非老将),则移动棋子并除去对 方棋子。 7)如果不属于(1)~(4)条,且落点处为对方老将,则移动棋子,并提示战胜对方, 游戏结束。 (1)画出该应用程序的因果图。 (2)对该软件进行基于因果图的方法设计测试用例。
5、以下是某 C 程序段,其功能是计算出某一天是一年中的第几天,请仔细阅读程序并完成 要求。
#include struct days {
int year; int month; int date; }day; void main() { struct days *p; int num=0,i; int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; p=&day; printf("please input the day: "); scanf("%d%d%d",&(p->year),&(p->month),&(p->date)); for(i=0;i<(p->month);i++)
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;
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
单一电价,即在任何时间段都是一个价;对于复费率用户在不同时段实行不同的电价。有4 条计算电费的规则:对于单费率用户,按公式 A 计算电费;对于复费率用户,如果不在规 定期间内,同单费率用户,按照公式 A 计算电费,否则按公式 B 计算;如果既不是单费率 用户也不是复费率用户,则做其他处理。
函数说明:当 i_flag=0; 返回 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)
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;
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%,需说明为什么。
一、判定表 1、用户登录界面通常需要用户输入用户名和密码,以下是系统反馈信息的几条规则,请按 照要求回答问题。
如果用户名和密码正确无误,则显示"登录成功" 只要用户名为空,就提示"用户名不能为空",清空密码框; 用户名不为空,而密码为空,则提示"密码不能为空"; 若用户名不正确,则提示"用户名错误",清空用户名框和密码框; 若用户名正确,密码不正确,则提示"密码错误",清空密码框; (1)根据上述规则,设计判定表 (2)根据判定表设计测试用例(假设有一用户名/密码:abc/123456,不存在名为 xyz 的用户)
(1)根据上述要求,设计判定表。 (2)根据上述判定表设计测试用例,尽量使其覆盖所以得情况。
二、等价类 1、以下是某应用程序的规格描述,请按要求回答问题 程序规则:实现某城市的电话号码,该电话号码由三部分组成。它的说明如下:区号:空白 或 3 位数字;前缀:非"0"或"1"开头的 3 位数字;后缀:4 位数字。
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)设计特殊的测试用例,说明各种逻辑覆盖之间的关系。
3、以下是一个自动饮料售货机软件的操作规格说明,请按要求回答问题: 设要对一个自动饮料售货机软件进行黑盒测试。该软件的规格说明如下: "有一个处理单价为 1 元 5 角钱的盒装饮料的自动售货机软件。若投入 1 元 5 角硬币,按下" 可乐"、"雪碧"或"红茶"按钮,相应的饮料就送出来。若投入的是 2 元硬币,在送出饮料的同 时退还 5 角硬币。 (1)试利用因果图法,建立该软件的因果图 (2)设计测试该软件的全部测试用例
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】
{
10
Hale Waihona Puke Baidu
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);
3、以下是一软件规格说明,请按照要求回答问题: 软件规格说明:某学校的学生公寓有 14 栋楼,用 A~N 这 14 个大写字母的其中一个代表楼 号。每栋楼的层数为六层,代号为 1~6。每层楼有 40 个房间,编号为 01~40。具体表示一 个宿舍房间时,用一个字母加三位数字表示,例如:"C527"表示 C 楼第 5 层的 27 室。软件 运行时,如果输入的房间号不在上述范围内,将不予接受,并显示输入无效。 (1)请根据规格说明,划分等价类。 (2)使用等价类划分方法为该软件设计测试用例。
请分析该程序的规则说明和被测程序的功能,采用等价类划分方法设计测试用例。
2、以下是一软件规格说明,请按要求回答问题: 软件规格说明:某工厂招工规定,报名者年龄应该在 16 周岁到 35 周岁之间(到 2005 年 12 月 31 日为止),即出生年月不在上述范围内的人员将不予接受,并显示"年龄不合格"的出错 信息。 (1)请根据规格说明,划分等价类。 (2)使用等价类划分方法为该软件设计测试用例。
4、一个系统的登录操作规格说明如下: 登录对话框有两个数据输入:用户名和密码。登录操作对两个输入数据进行检查,要求用户
名中只能包含字母和数字(字母不区分大小写),密码可以包含任何字符。用户名和密码都 不能为空且长度不限。当用户名或密码为空时,则登录失败并提示对应的出错信息;当用户 名不正确或用户名不存在或密码错误时,则登录失败并提示以下三种相应的出错信息:用户 名不合法(即包含有非字母、非数字字符),或用户名不存在,或密码错误;当用户名和密 码都正确时,则显示登录成功信息,完成登录。 假设正确的用户名是 abcd123,密码是123456 试用等价类方法为上述规格说明设计等价类表和测试用例。
四、边界值 1、以下是某程序说明,请按要求回答问题: 程序说明:假设有一个把数字串转换为整数的函数。其中数字串要求长度为 1-6 个数字构 成,机器字长为 16 位。 分析程序中出现的边界情况,采用边界值法为该程序设计测试用例。
五、白盒测试
针对以下 C 语言程序,请按要求回答问题: 下面是一个程序段(C 语言),试设计基本路径测试的测试用例,设计出的测试用例要保证 每一个基本独立路径至少要执行一次。
三、因果图 1、以下是某软件项目规格说明,请按要求回答问题 某一软件项目的规格说明:对于处于提交审批状态的单据,数据完整率达到 80%以上或已 经过业务员确认,则进行处理。 (1)请根据规格说明,画出对应的因果图。 (2)采用基于因果图的方法为该软件项目设计测试用例。
2、以下是某"象棋中走马事件"应用程序的走马规则,请按要求回答问题: 以下是中国象棋中走马事件中的走马原则: 1)如果落点在棋盘外,则不移动棋子。 2)如果落点与起点不构成日字型,则不移动棋子。 3)如果落点处有己方棋子,则不移动棋子。 4)如果在落点方向的邻近交叉点有棋子(绊马腿),则不移动棋子。 5)如果不属于(1)~(4)条,且落点处无棋子,则移动棋子。 6)如果不属于(1)~(4)条,且落点处为对方棋子(非老将),则移动棋子并除去对 方棋子。 7)如果不属于(1)~(4)条,且落点处为对方老将,则移动棋子,并提示战胜对方, 游戏结束。 (1)画出该应用程序的因果图。 (2)对该软件进行基于因果图的方法设计测试用例。
5、以下是某 C 程序段,其功能是计算出某一天是一年中的第几天,请仔细阅读程序并完成 要求。
#include struct days {
int year; int month; int date; }day; void main() { struct days *p; int num=0,i; int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; p=&day; printf("please input the day: "); scanf("%d%d%d",&(p->year),&(p->month),&(p->date)); for(i=0;i<(p->month);i++)
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;
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