=i){tm=a[t];a[t]=a[i];a[i]=tm}}
答:
inti=0;/*实现***功能
intt=0;
inttm=0;
For(i=1;i<=n-1,i++) /*实现***功能
{
t=i;
for(j=i+1,j<=n,j++) /*实现***功能
if(a[j]<a[t])
t=j;
if(t!
=i)
{
tm=a[t];/*实现***功能
a[t]=a[i];
a[i]=tm
}
}
(12)试按照规范编写一个求3个数中最小值的程序。
程序规范如下:
1)禁止使用GOTO语句;
2)使用缩排编写程序;
3)变量命名明晰
答:
main()//accode aboutfindingoutthesmallone intreeinputnumber ﻫ{int num1,num2,num3,min;ﻫ printf("Pleaseinput threenumbers:
");
scanf("%d,%d,%d",&num1,&num2,&num3);ﻫ if(num1 MIN=num1;
else
MIN=num2;
if(num3<MIN)
MIN=num3;
printf("Thesmall oneis:
%d",small);
ﻬ(13)举例说明软件测试的不完备性。
答:
就目前的软件测试方法而言,还无法做到对代码的完全覆盖测试,所以说软件测试是不完备的。
例如,下面的代码是无法完全测试的。
包含的不同执行路径数达520条,对每一条路径进行测试需要1毫秒,假定一年工作365×24小时,要想把所有路径测试完,需3170年。
(14)试解释单元测试中“驱动模块”、“桩模块”与“被测模块”含义以及它们之间的关系。
答:
●驱动模块相当于被测模块的主程序,它接收测试数据,并把这些数据传送给被测模块,最后再输出实测结果。
●桩模块也叫做存根模块,用以代替被测模块调用的子模块。
●被测模块是单元测试要测试的模块,他与驱动模块和桩模块有被调用和调用的关系。
(15)简述软件改正性、适应性维护的含义。
答:
改正性是为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应进行的诊断和改正错误的过程。
适应性维护是指,随着信息技术的飞速发展,软件运行的外部环境(新的硬、软件配置)或数据环境(数据库、数据格式、数据输入/输出方式、数据存储介质)可能发生变化,为了使软件适应这种变化,而修改软件的过程叫做适应性维护
ﻬ(16)举例说明影响维护工作量的因素。
答:
(1)系统规模:
系统规模大,维护困难;
(2)程序设计语言:
开发语言复杂,维护也困难;
(3)系统年龄大小:
时间久远的系统,维护困难;
(4)数据库技术的应用水平:
数据应用水平低,维护工作量大。
(5)所采用的软件开发技术及软件开发工程化的程度:
工程化程度高,维护相对容易。
例如:
商业企业进销存管理软件。
由于商品品种多,经营手段灵活,所以对数据库技术应用的水平要求比较高;一般大型商业企业,如沃尔玛是全球连锁,所以系统规模巨大,维护困难;商业企业管理软件一般要处理的内容多样,目前还没有一种语言可以完成整个系统的开发任务,所以选择功能相对强大的语言会减少开发困难。
二、已知程序框图如图2-1所示,试分别给出(a)语句覆盖,(b)条件覆盖,(c)判断覆盖,(d)条件组合覆盖,(e)判断/条件的最小测试用例和路径。
(每小题5分,共25分)
答:
(a)语句覆盖
路径:
ace
测试用例【(2,0,4),(2,0,3)】
ﻩ(b)条件覆盖
路径:
ace
测试用例:
【(2,0,4),(2,0, 3)】
路径:
abd
测试用例:
【(1,1,1),(1,1,1)】
ﻩ(c)判断覆盖
路径:
ace
测试用例:
【(2,0,4),(2, 0, 3)】
路径:
abd
测试用例:
【(1,1, 1),(1,1,1)】
ﻩ(d)条件组合覆盖
路径:
ace
测试用例:
【(2, 0,4),(2,0, 3)】
路径:
abd
测试用例:
【(1,1,1),(1, 1,1)】
路径:
abe
测试用例:
【(2,1,1),(2,1,2)】
路径:
abe
测试用例:
【(1,0,3),(1,0,4)】
ﻩ(e)判断/条件覆盖
路径:
ace
测试用例:
【(2,0,4),(2,0,3)】
路径:
abd
测试用例:
【(1, 1,1),(1,1,1)】
ﻬ三、现有一个PASCAL语言的编译器。
试采用黑盒测试法测试该编译器对语法规定:
“标识符是由字母开头、后跟字母或数字的任意组合构成;有效字符数为8个,最大字符数为80个;标识符必须先说明,再使用;在同一说明语句中,标识符至少必须有一个。
”的一致性。
(每一个分类5分,共25分)
答:
等价类划分如下:
测试用例:
下面选取了8个测试用例,它们覆盖了所有的等价类。
①VARx,T1234567:
REAL;}
(1)
(2)(4)(7)(8)(11)
(13)
BEGINx:
=3.414;T1234567:
=2.732;……
② VAR:
REAL; }(3)
③VAR x,:
REAL; }(5)
④VART12345……:
REAL; }(6)多于80个字符
⑤VART$:
CHAR; }(9)
⑥VARGOTO:
INTEGER; }(10)
⑦VAR2T:
REAL; }(12)
⑧VARPAR:
REAL; }(14)
BEGIN……
PAP:
=SIN(3.14*0.8)/6;
四、已知程序伪代码如图4-1所示,试完成下列工作:
1)试用算法4.1给出对应的流图;
2)计算流图的复杂性V(G);
3)求基本路径构成的基本集合(num1,num2,num3各取一次最小值);
4)给出每条路径执行的期望结果;
5)给出每一条路径的测试用例。
(每小题3分,共15分)
答:
环形复杂性:
3
基本路径集:
12357
12457
12367
期望结果:
12357的结果:
num1是最小值
12457的结果:
num2是最小值
12367的结果:
num3是最小值
测试用例:
Num1=3;num2=4;num3=5
Num1=4;num2=3;num3=5
Num1=4;num2=5;num3=3
五、已知程序伪代码如图5-1所示,试完成下列工作:
1)试用算法5.1给出对应的流图;
2)计算流图的复杂性V(G);
3)求基本路径构成的基本集合(num1,num2,num3各取一次最小值);
4)给出每条路径执行的期望结果;
5)给出每一条路径的测试用例。
(每小题3分,共15分)
V(G)=6
path1:
1-2-10-11-13
path2:
1-2-10-12-13
path3:
1-2-3-10-11-13
path4:
1-2-3-4-5-8-9-2……
path5:
1-2-3-4-5-6-8-9-2……
path6:
1-2-3-4-5-6-7-8-9-2……
path1:
输入数据:
value[k]=有效输入,限于k
n个值的正确的平均值、正确的总计数。
注意:
不能孤立地进行测试,应当作为路径4、5、6测试的一部分来测试。
path2:
输入数据:
value[1]=−999;预期结果:
平均值=−999,总计数取初始值。
path3:
输入数据:
试图处理101个或更多的值,而前100个应当是有效的值;预期结果:
与测试用例1相同。
答:
ﻬ六、一个网络教学系统的功能需求内容:
1)学生通过客户端根据学号和密码进入选课界面,在这里学生可以进行查询已选课程、指定自己的选修课程以及对自己基本信息的查询;
2)学生可以登录本系统中学习模块,浏览课程信息、选择和查找自己所需要学习课程的课件并进行下载;
3)教师可以登录本系统,在网站上输入课程介绍、上传课程的课件、发布、更新和修改消息;
4)系统管理员可以对本系统进行维护和批准用户申请注册等操作。
对课程信息进行维护,包括:
添加、删除和修改课程信息;对学生基本信息进行维护,包括:
添加、修改、查询和删除;对教师信息进行维护,包括:
添加、修改、查询和删除等操作。
试完成系统的分析与设计工作。
具体要求如下:
●画出系统的数据流程图
●画出系统E-R图
●画出系统状态转换图
●画出系统功能的模块结构图
●给出模块结构图中学生选课并下载课件的算法的伪代码(每问4分,共20分)
答:
七、采用面向对象的分析与设计方法完成“网络教学系统”下面要求的系统分析与设计工作。
(每问4分,共20分)
●画出系统UML用例图
●画出系统UML类图
●画出系统UML状态转换图
●画出系统UML顺序图
●给出类图中教师发布课程信息方法的伪代码;