
1 .测试范围:
本软件为智能红绿灯控制系统,是针对城市交通管理员设计的,城市交通管理员是这个软件的使用者,他通过此软件为各个路口设置参数,使系统能够根据输入的参数通过控制交通灯实时地对各路口的交通进行调度;能够随时掌握现在交通的具体情况。
由于各种活动的相互影响和制约,我们不可能把这个软件设计的完美无缺,可能有许多错误,这些错误甚至会对软件产品以至整个系统产生致命的危害,因此就需要对我们的软件进行测试,主要是对制作的软件产品进行检查,及时的发现程序中逻辑错误,以保证软件产品的正确性和可靠性。
具体结合到我们这个软件,是要做到一下几点。1,通过测试来检验软件是否可以正常运行。2,如果无法正常运行,需要检测出错误处在哪里,并加以纠正3,本软件是否可以一一满足用户的所有要求。4,当用户出现违规操作(例如设定最大绿灯时间大于所给范围等),系统能否发现并提醒用户改正。
在测试阶段我们首先必须明确信息的流向,下图给出了测试阶段信息流向的模型,我们也将根据这个图来指导我们完成测试阶段的工作。
软件配置 纠错 纠正错误
测试结果
错误率
测试配置 预期结果
可靠性预测
我们计划将测试分为3个阶段:
首先,将整个程序按功能划分成3个子模块,分别对每个模块进行单元测试,在该阶段我们在每个单独的程序块中,消除块内的逻辑、功能上的缺陷和错误,保证每个块作为一个单元能正确执行,并为上一级测试做准备;
第二步,进行联合测试,将3个模块进行集中和装配,形成一个完整的软件后就可以进行联合测试,联合测试除了进一步检测和排除子系统(或系统)结构或相应程序结构上的错误之外,还应该验证所有的系统单元配合是否合适、整体性能和功能是否完整;
最后,在对整个程序进行有效性测试,在模块测试、联合测试之后,就可以对组装起来的软件进行有效性测试,有效性测试就是根据需求分析规格说明书中规定的有效性标准,通过功能测试验证软件系统是否与用户的要求一致。
2.测试计划:
2.1:静态测试
静态测试是指不执行程序而找出程序存在的错误。这种方法以人工的、非形式化的方法对程序进行分析和测试,不依赖计算机的测试。在静态测试中,主要是找出程序中的语法错误,我们将通过下面检验清单来完成,可以提高检查程序的一般性错误的评审效果。
1.数据引用错误
(1)引用未赋值的变量;
(2)数组元素下标越界或非整数值;
(3)指针变量访问的内存空间非法;
(4)对具有多个名字的同一内存区中的数据,由于属性(或数据类型)说明不一致而引起的错误;
(5)使用了非法的变量类型和属性说明;
(6)访问了不存在的存储空间;
(7)指针或索引所访问的数据属性不属于编译系统处理的范围;
(8)多个过程或程序引用的数据结构不一致;
(9)变址引用越界;
(10)变址或数组下标运算“差1”;
(11)汇编累加器、位移量、程序定位及空留位值越限;
2.数据说明错误
(1)对某些变量没有说明,缺省属性使用不正确;
(2)数组或字符串初始化不正确;
(3)变量的长度,类型,存储类别规定不对;
(4)变量初始值与其存储类别说明不一致;
(5)误用相似的变量名,系统保留字、未加说明和前后矛盾的变量名;
(6)定义了未被引用或仅引用了一次的变量;
3.计算错误
(1)不同类型的变量混合计算,或用零作除数;
(2)赋值长度大于被赋值变量长度;
(3)表达式中间结果或最后结果出现上溢或下溢;
(4)二进制数的运算精度不够或变量值超出有效范围;
(5)非法运算符和运算符优先顺序不对;
(6)整形变量使用错误或有非法算式;
3.比较错误
(1)不同类型的变量进行比较,如布尔量和整形的比较;
(2)比较运算符的五接和不正确的布尔表达式;
(3)逻辑操作数和比较数混合在一起;
(4)二进制浮点数进行比较由舍入造成错误;
(5)编译程序不能正确处理的布尔表达式;
4.控制流程错误
(1)多路分支表示变量值大于可能的分支数;
(2)循环不终止或出现死循环;
(3)入口条件不正确出想多循环一次或少循环一次;
(4)复合语句不配对,或迭代次数不对(过多或过少);
5.接口错误
(1)调用模块预备调用模块间的参数个数、顺序、类型、范围和单位不匹配;
(2)模块间传送的变量的类型、范围、单位定义不一致;
(3)函数、过程和子程序调用中的实参和形参的个数、类型、范围、单位、顺序不匹配;
(4)子程序调用前后定义的属性不一致;
6.输入/输出
(1)文件显示说明、属性是否正确;
(2)I/O语句与格式语句失配,I/O缓冲区与纪录大小失配,没有必要的出错处理;
(3)使用未打开的文件;
(4)同时打开的文件数超过系统允许的文件数;
(5)忘记检查输入的有效性;
7.其他错误
(1)定义未被引用或仅引用了一次的变量;
(2)程序的功能被遗漏;
(3)忘记检查输入的有效性;
经过和以上错误清单的逐一比照,我们会改正源程序中的语法和逻辑错误,逐步完善程序。直到完全消除程序的语法和逻辑错误,可以正常运行为止,在这一阶段,我们还将规范程序的格式,添加必要的注释,使程序的结构清晰,层次分明,以便于阅读和以后的维护和修改。
2.2:单元测试
单元测试是指被测试程序是单个子程序、过程的逻辑测试。我们的任务试验整体功能和接口说明是否有不符合规定的情况,以及编码是否有错误。经过静态测试之后,应集中注意力逐一测试程序中的每一个单元,而不是把程序作为一个整体来测试。因此,为实现这一阶段的测试我们将核心程序按照功能划分成三个模块:HUANG是计算每个路口的GN的,MA是计算一个每个相位的紧迫度的,DONG则将他们联合起来,相当于是一个总的模块,是用来决策现在的通行相位,和通行相位需要调度的时间。测试的时候,则分模块进行。具体过程见后面的设计步骤。
2.3联合测试
单元测试完毕后,就要考虑用什么方法把单元连接起来的问题。就在单元测试的基础上,把每个单元按照设计要求逐步连接起来进行联合测试,主要目的是发现于接口有关的错误。由于先已经完成单元测试,所以我们采用非增试测试,就是先分别测试每个单元,再把所有单元按设计要求连接起来成为完整的程序。具体过程见后面的测试步骤。
2.4 有效性测试
有效性测试的目的是为了向用户证明系统功能能够满足用户的合理要求,由用户来验收整个软件产品。采取黑盒测试法来进行,具体过程见后面的测试步骤。
2.5 测试环境
本软件运行环境要求:
CPU :166HZ以上
内存:32M
显卡:至少支持256色
硬盘:1G
操作系统:Win9X/2000/Me/XP
车流检测仪(至少32台)
3.测试步骤
3.1静态测试
静态测试,主要是找出程序中的语法错误,我们将通过上面检验清单来完成,可以提高检查程序的一般性错误的评审效果。要求程序结构清晰,层次分明,注释详尽,为以后的修改和维护打好基础。
3. 2单元测试
单元测试,高质量的程序单元是组成可靠系统的基础,对单元性能的评价又以下几点:
1.单元接口
2.局部数据结构
3.重要的执行路径测试
4.出错处理路径
5.影响上述几点的边界条件测试
我们将核心程序分三个模块:HUANG是计算每个路口的GN的,MA是计算一个每个相位的紧迫度的,DONG则将他们联合起来,相当于是一个总的模块,是用来决策现在的通行相位,和通行相位需要调度的时间。测试的时候,则分模块进行。
HUANG的主要功能是计算控制路口的gn值(如果是通行路口该值为nc)和该路口的下游路口的nc值。
HUANG的输入值是80个数,分成5组,即是5个路口的相位参数,每组16个。16个数分别是8个相位的两个检测器返回8个方向上的车辆排队长度的值,每个方向上有ta和tb的值,前面是ta后面是tb。对于非通行相位第二次的gn的值要比第一次大;就是说对于该方向的第二次的tb-ta要比第一次的tb-ta要大,因为对于非通行相位,在这段时间类,两个检测仪之间的gn即等待的车辆数只会增加(或者相等)。对于通行相位就可以随意了,后一次比前一次大或者小都是可以的。非通行相位GN=Tb-Ta,通行方向的ov等于你第二次输入的ta减去第一次的ta的结果再除以15(即(ta.present-ta.history)/15)。
这一部分的接口:输入部分接口采用的是 void intersection::sendnumber()函数;
输出部分:通过调用 void getGN(); void getNC();两个函数从而通过一系列的计算,得到两个数组的值double GN[8]; double OV[8];这两个数组将作为后面程序的数据接口;
1.测试void intersection::sendnumber();函数是否能够正常工作
采用下列函数对其进行测试:
void main()
{
ifstream hello;
hello.open("otry.txt");
intersection H;
H.otry=&hello;
H.sendnumber();
}
ifstream hello;为一个输入流对象,通过该对象打开一个我们要读入的文件,这里我们的 文件名为:otry.txt
文件中的数据如下:
12 34 54 231 42 21 43 542 42 53 6 43 32 54 43 56
54 32 56 321 65 65 85 432 67 97 5 76 43 67 35 75
12 34 54 231 42 21 43 542 42 53 6 43 32 54 43 56
54 32 56 321 65 65 85 432 67 97 5 76 43 67 35 75
12 34 54 231 42 21 43 542 42 53 6 43 32 54 43 56
20 120 105 50 80 20 40 100 6 112 5 180 7 56 20 90
20 120 105 50 80 20 40 100 6 112 5 180 7 56 20 90
20 120 105 50 80 20 40 100 6 112 5 180 7 56 20 90
20 120 105 50 80 20 40 100 6 112 5 180 7 56 20 90
20 120 105 50 80 20 40 100 6 112 5 180 7 56 20 90
.
.
.
期待的输出结果为:12 34 54 231 42 21 43 542 42 53 6 43 32 54 43 56
实际的输出结果为:12 34 54 231 42 21 43 542 42 53 6 43 32 54 43 56
对于void sendnumber()函数能够满足相应的功能,能够将外部的数据无误的输入内部的数组,对其测试完毕;
2.
要求所输入的80个数16个一组,Double型,每输入一组数据就要换一行。测试要求主要是看HUANG的gn和nc是不是计算准确。首先输入一组80个数,对系统进行初始化:
初始化数组:
12 100 17 30 15 20 20 60 3 90 6 80 10 54 8 50
12 100 17 30 15 20 20 60 3 90 6 80 10 54 8 50
12 100 17 30 15 20 20 60 3 90 6 80 10 54 8 50
12 100 17 30 15 20 20 60 3 90 6 80 10 54 8 50
12 100 17 30 15 20 20 60 3 90 6 80 10 54 8 50
第一组数据:
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
结果:
通行相位GN=38.5
8个方向上的GN为:0.26667 61.5 100.5 110.5 66.5 33.5 146.5 .5
8个方向上的NC为: 118.333 120.667 159.667 190.333 140.5 98.5 211.667 138.333
第二组数据:
21 130 23 56 25 40 30 100 5 115 10 300 23 100 12 92
21 130 23 56 25 40 30 100 5 115 10 300 23 100 12 92
21 130 23 56 25 40 30 100 5 115 10 300 23 100 12 92
21 130 23 56 25 40 30 100 5 115 10 300 23 100 12 92
21 130 23 56 25 40 30 100 5 115 10 300 23 100 12 92
结果:
通行相位GN=46
8个方向上的GN为:6.5 75 109.5 161.5 78.5 42.5 200 71
8个方向上的NC为:134.333 142.167 176.667 249.833 161.5 115 272.667 153.833
第三组数据:
23 140 25 66 27 50 32 110 15 130 12 310 25 120 15 100
23 140 25 66 27 50 32 110 15 130 12 310 25 120 15 100
23 140 25 66 27 50 32 110 15 130 12 310 25 120 15 100
23 140 25 66 27 50 32 110 15 130 12 310 25 120 15 100
23 140 25 66 27 50 32 110 15 130 12 310 25 120 15 100
结果:
通行相位GN=59
8个方向上的GN为:0.13333 81.5 116 169.5 90 50.5 206.5 79
8个方向上的NC为: 156 159.5 194 216.5 183.333 132.167
287.833 172.667
经过三次的验证,HUANG模块运行正常,算出的GN,NC完全正确。
再检测两组出错的数据:
第四组数据:
aa 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
输出结果:
6.170e+06 0 0 0 0 0 0 0 0
第五组数据:
20 120 21 50 18 30 25 80 4.2 105 8 200 15 80 10 aa
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
输完第一行,输入就停止了
输出结果:
通行相位GN=38
8个方向上的GN为:0.26667 27.5 100.4 110.5 32.5 33.5 146.4 .5
8个方向上的NC为:38.5 27.5 100.4 110.5 32.5 33.5 146.4 .5
但运算结果明显错误!
但有一点要特别说明,也是本软件的一个不足之处,由于HUANG所输入的数据是通过路口检测其所得。由于条件的约束,我们不可能用到路口检测器,所以在这里,我们只是采用读取文件中数据的方法来模拟路口检测器的取值,也就是说,我们的取值,包括测试的时候,我们也要根据我们日常的生活经验,尽量输入符合常规的数据。在这里,Tb应该比Ta大,因为Tb是一个路口相位后面一个检测器的取值,Ta是这个路口相位前面一个检测器的取值,两者相减才是GN。而且对于非通行相位,后一次的GN值肯定要大于(至少等于)前一次的GN值,因为红灯的时候车辆累计是慢慢增加的,而对于通行相位GN值既可以大于前一次的值也可以小于前一次的值。
在测试中我们也是尽量遵循这两条规定。当然就这个模块本身而言,是不受这些条件约束的,任意的Tb和Ta值都能够输出一个结果,但如果放到现实中,有时不合情理的。其结果就会导致有的路口可能会等待很长时间,甚至会引起交通混乱。
MA的功能主要是计算一个每个相位的紧迫度的。
输入的第一组数据为:
Double GN [8]={21.5,256,16.5,107,17.5,0,24,99.5};
Double RL [8]={0,0,0,0,0,0,0,0};
Double NC [8]={39.3333,272.667,33.1667,124.833,35.6667,276.333,41.6667,116.333}
输出的结果为:
1 0.675 0.275 0 0 0 0
0.5 0.3 0.15 0 0.125 0.35 0.5
1 0.675 0.275 0 0 0 0
0.625 0.675 0.65 0.375 0.125 0 0
1 0.675 0.65 0.375 0.125 0 0
0.75 0.4875 0.2125 0 0.0625 0.1875 0.25
1 0.675 0.275 0 0 0 0
0.625 0.675 0.65 0.375 0.125 0 0
输入的第二组数据为:
Double GN [8]={21.5,25,26.5,17,17.5,10,214,.5};
Double RL [8]={0,0,0,0,0,0,0,0};
Double NC [8]={39.3333,272.667,33.1667,124.833,35.6667,276.333,41.6667,116.333}
输出的结果为:
1 0.675 0.275 0 0 0 0
0.75 0.4875 0.2125 0 0.0625 0.1875 0.25
1 0.675 0.275 0 0 0 0
0.8125 0.675 0.4625 0.1875 0.0625 0 0
1 0.675 0.275 0 0 0 0
0.5 0.3 0.15 0 0.125 0.375 0.5
0.75 0.4875 0.2125 0.0625 0.1875 0.25 0.1875
0.75 0.7375 0.5875 0.25 0.0625 0 0
输入第三组数据为:
Double GN [8]={6.5,75,109.5,161.5,78.5,42.5,200,71};
Double RL [8]={0,0,0,0,0,0,0,0};
Double NC [8]={134.333,142.167,176.667,249.833,161.5,115,272.667,153.833}
输出结果为:
0.75 0.55 0.4 0.25 0.1875 0.0625 0
0.6875 0.6125 0.525 0.3125 0.1875 0.0625 0
0.5625 0.4875 0.4625 0.375 0.3125 0.1875 0.0625
0.5 0.3625 0.3375 0.3125 0.375 0.3125 0.1875
0.6875 0.6125 0.525 0.3125 0.1875 0.0625 0
0.5625 0.4875 0.4 0.1875 0.125 0.1875 0.25
0.5 0.3 0.2125 0.1875 0.3125 0.375 0.3125
0.6875 0.6175 0.525 0.3125 0.1875 0.0625 0
输出结果完全正确,说明MA运行完全正常。因为MA的数据来源是HUANG的输出结果,所以测试的时候,我们也是选择的黄的输出结果进行测试,如果输入的数值胡乱输入,MA也可以有输出,但这和上面一样,在模块中无法显示出错误,只能放到系统运行中去检验。
3.3联合测试
在检查上面三个单元无误后,将他们联合起来,就构成了我们整个程序的一个核心的部分。在这里称之为DONG,DONG就是我们的核心代码,它的主要功能就是通过路口检测器送入的每个路口的TB和TA值,算出每个路口的路口紧迫度GN和下游路段的路口紧迫度NC,再选择最紧迫的路口,算出他需要调度的时间,选择他进行调度。
下面就对合并后的核心代码DONG进行测试,首先对系统初始化:
初始化数据:
12 100 17 30 15 20 20 60 3 90 6 80 10 54 8 50
12 100 17 30 15 20 20 60 3 90 6 80 10 54 8 50
12 100 17 30 15 20 20 60 3 90 6 80 10 54 8 50
12 100 17 30 15 20 20 60 3 90 6 80 10 54 8 50
12 100 17 30 15 20 20 60 3 90 6 80 10 54 8 50
输出:
GN_MAX=260,GN_MIN=10,OV_MAX=9,OV_MIN=2;
X_RED=0, X_RED=0,X_RED=0, X_RED=0, X_RED=0, X_RED=0,X_RED=0, X_RED=0;
X_GREEN=0, X_GREEN=0, X_GREEN=0, X_GREEN=0,
X_GREEN=0, X_GREEN=0, X_GREEN=0, X_GREEN=0;
输出说明:有初始化,得到该路口的最大绿灯时间和最小绿灯时间分别是260和10,最大和最小车辆使出率为9和2,此时各个相位的红灯持续时间为0,绿灯持续时间也都为0。
输入第一组测试数据:
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
20 120 21 50 18 30 25 80 4 105 8 200 15 80 10 78
输出:
通行相位GN=38.5
8个方向上的GN为:0.26667 61.5 100.5 110.5 66.5 33.5 146.5 .5
此时通行相位:0
此次需要调度时间:15
HGN=38.5,GL=15
X_RED=0,X_RED=15, X_RED=15, X_RED=15, X_RED=7.5, X_RED=7.5, X_RED=15, X_RED=15;
X_GREEN=15,X_GREEN=0,X_GREEN=0,X_GREEN=0,
X_GREEN=7.5,X_GREEN=7.5,X_GREEN=0,X_GREEN=0;
输出说明:此次选择调度相位为0号,调度时间为15,因此在下面的红灯持续时间中,被选中的0号相位时间不变,其他相位红灯时间累计增长15;而绿灯持续时间中,0号相位绿灯持续时间为15,而组成0号相位的两个方向则各累计增长15。此时,系统开始正常工作,路口开始调度。
第二组测试数据:
12 32 23 70 20 50 30 90 15 150 18 220 16 90 20 90
12 32 23 70 20 50 30 90 15 150 18 220 16 90 20 90
12 32 23 70 20 50 30 90 15 150 18 220 16 90 20 90
12 32 23 70 20 50 30 90 15 150 18 220 16 90 20 90
12 32 23 70 20 50 30 90 15 150 18 220 16 90 20 90
测试结果:
通行相位GN=52
8个方向上的GN为:0.1,65,77.5,124.5,72,45,168.5,33.5
此时通行相位:0
此次需要调度时间:30
X_RED=0,X_RED=30, X_RED=30, X_RED=30, X_RED=15, X_RED=15, X_RED=30, X_RED=30;
X_GREEN=30,X_GREEN=0,X_GREEN=0,X_GREEN=0,
X_GREEN=15,X_GREEN=15,X_GREEN=0,X_GREEN=0;
第三组测试数据:
11 22 33 44 55 66 77 88 11 22 33 44 55 66 77 88
11 22 33 44 55 66 77 88 11 22 33 44 55 66 77 88
11 22 33 44 55 66 77 88 11 22 33 44 55 66 77 88
11 22 33 44 55 66 77 88 11 22 33 44 55 66 77 88
11 22 33 44 55 66 77 88 11 22 33 44 55 66 77 88
测试结果:
通行相位GN=11
8个方向上的GN为:11,3.46667,11,11,11,11,11,11
此时通行相位:1
此次需要调度时间:15
RED=15,RED=0,RED=45,RED=45,RED=7.5, RED=7.5, RED=45,RED=45
GREEN=0,GREEN=15, GREEN=0, GREEN=0, GREEN=7.5, GREEN=7.5, GREEN=0,GREEN=0
第四组测试数据:
5 10 16 23 31 39 48 58 69 81 40 45 50 55 60 62
5 10 16 23 31 39 48 58 69 81 40 45 50 55 60 62
5 10 16 23 31 39 48 58 69 81 40 45 50 55 60 62
5 10 16 23 31 39 48 58 69 81 40 45 50 55 60 62
5 10 16 23 31 39 48 58 69 81 40 45 50 55 60 62
测试结果:
通行相位GN=8.5
8个方向上的GN为:6.5,6,2.1333,6,3.5,9,8.5,6
此时通行相位:2
此次需要调度时间:15
RED=30,RED=15,RED=0,RED=45,RED=7.5, RED=15, RED=45,RED=52.5
GREEN=0,GREEN=0, GREEN=15, GREEN=7.5, GREEN=0, GREEN=0, GREEN=0,GREEN=7.5
测试DONG模块完全正常,能够准确的计算出所需参数(包括各个路口相位的GN,同行相位的相位号及需要调度的时间,以及各个相位的累计红绿灯时间)。下面再测试一组出错的数据:
aa 22 33 44 55 66 77 88 11 22 33 44 55 66 77 88
11 22 33 44 55 66 77 88 11 22 33 44 55 66 77 88
11 22 33 44 55 66 77 88 11 22 33 44 55 66 77 88
11 22 33 44 55 66 77 88 11 22 33 44 55 66 77 88
11 22 33 44 55 66 77 88 11 22 33 44 55 66 77 88
输出结果:
通行相位GN=10000
8个方向上的GN为:0,0,0,0,0,0,0,0
程序运行出错!
3.4有效性测试
联合测试以后,我们把所有单元按照设计要求组成了一个完整的软件系统,基本上排除了接口错误和语法逻辑上的错误,为下面的有效性测试奠定了基础。
我们也和一般要求一样,采用黑盒测试法来完成:
首先在Debug文件夹下点击IS进入傻瓜智能交通控制系统
1.密码设置对话框
点击启动按钮,进入设置密码页面,密码可以是任何数字,符号和子母组成,数量1-10个。超过10个就不能在输入。
| 输入条件 | 合理等价类 | 不合理等价类 |
| 密码个数 | 1个(1) | 多个(2) |
| 密码字符数 | 1-10个(3) | 〉10个(4) |
出错说明和处理:
1)等价类(4)中超过10个字符就不能在输入。
2)等价类(2)中验证密码时必须填入上次输入的密码,否则就会出现弹出出错提醒对话框“密码错误,确认密码和输入密码不同”。
2.路口信息对话框
设置密码正确后,进入设置路口信息对话框。
路口信息对话框要求用户输入历史最大(小)车流量和历史最大(小)车辆驶出率,只要求每个单元中输入一个最多10位正整数。
| 输入条件 | 合理等价类 | 不合理等价类 |
| 字符个数 | 1-10(1) | 〉10个(2) |
| 字符组成 | 全数字(3) | 含字母(4),含其他符号(5) |
| 第一个字符 | 1-9(6) | 0(7) |
| 数据类型 | 正整数(8) | 无理数(9),小数(10),负数(11) |
(2)输入:a123,包括(4);+123, 包括(5);0123(7);
(3)输入:1.2(10);-2(11);
出错说明和处理:
1)如果输入的不是一个证书,系统会提示“请填入一个整数”。其余的输入都会被系统接受,进入路口控制界面。
2)本软件还存在一定问题,例如要求输入的车辆最大驶出率和最小驶出率时,如果用户输入的最小驶出率还大于最大驶出率,系统一样可以开始工作,同样也适用于最大(小)历史车流量。鉴于本系统是基于高级用户而言的,就是说他一般不会输错,万一输错了也没有办法了,这说明我们软件的可靠性不高。
3)界面制作者写错了一个字,系统要求输入的是最大驶出率和最小驶出率,她写了两个最大驶出率,这些都是在刻盘以后发生的,特此说明一下。
进入路口控制界面后,系统即开始运行。根据各个路口的车辆检测器送来的车辆检测值(在这里我们用一个随机数组模拟得出),系统经过计算得出此时需要调度的相位号,以及需要调度的时间。每隔15秒钟,数据更新一次,系统持续工作。
3.更新密码对话框
在路口控制界面内点击按钮“更新密码”,进入更新密码对话框。先输入原密码,在输入新密码及密码确认,如果原密码不正确,即会弹出出错信息“原密码错误!”其余同上面密码设置。
4.更新参数
在路口控制界面内点击按钮“更新参数”,会弹出一个对话框“请输入密码”,如果输入错误系统会有提示“原密码错误”,正确以后就进入更新参数对话框,同上面的“路口信息对话框”。
4.附录
4.1有效性测试中发现的问题
1)在启动系统时,点了启动按钮,进入设置密码对话框,此时,如果点取消按钮,系统可以开始工作。改正后排除
2)启动灰掉的问题。按理说,启动只能按一次,按一次后就灰掉,同时菜单中的更改密码和更改参数变亮。但是我们这里的启动不会变灰,还是亮的可以继续按。改正后排除。
3)还有如果系统没有启动,这时如果点界面上的8个按钮,由于没有启动的初始化操作,所以此时系统会报错。改正后排除。
4)设置参数界面的时候,由于没有把参数设到系统中去,使得在视图一界面中,通行相位的相位号始终是0,改正后排除。
5)在要求输入的车辆最大驶出率和最小驶出率时,如果用户输入的最小驶出率还大于最大驶出率,系统一样可以开始工作,同样也适用于最大(小)历史车流量。改正后排除。
4.2一些特殊的说明
1)一般允许的最大绿灯时间为105秒,这就可能出现连续调度同一个相位的问题。例如,有的方向上车流量很大,紧迫度高,需要多次调度这个方向。但累计时间不会超过105秒,超过105秒后,系统会选择其他相位调度。
2)一般我们默认的历史最大车流量位260,最小车流量为10,车辆最大驶出率为9,最小驶出率为2。
3)随机数组我们在文本文件Otry中给出,如果有发现系统运行不太正常,比如说有路口的相位的绿灯时间给的太长,或者说多次调用一个相位,那也是因为我们的数组设定得不理想,不符合实际。其实这些参数都应该是由现实中得到的。
4)
