软件测试计划书1Word格式文档下载.docx
《软件测试计划书1Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《软件测试计划书1Word格式文档下载.docx(17页珍藏版)》请在冰豆网上搜索。
这种方法以人工的、非形式化的方法对程序进行分析和测试,不依赖计算机的测试。
在静态测试中,主要是找出程序中的语法错误,我们将通过下面检验清单来完成,可以提高检查程序的一般性错误的评审效果。
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.影响上述几点的边界条件测试
我们将核心程序分三个模块:
3.2.1模块1:
HUANG
3.2.1.1.模块功能:
HUANG的主要功能是计算控制路口的gn值(如果是通行路口该值为nc)和该路口的下游路口的nc值。
3.2.1.2.测试数据和文件访问:
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)。
这一部分的接口:
输入部分接口采用的是voidintersection:
:
sendnumber()函数;
输出部分:
通过调用voidgetGN();
voidgetNC();
两个函数从而通过一系列的计算,得到两个数组的值doubleGN[8];
doubleOV[8];
这两个数组将作为后面程序的数据接口;
3.2.1.3测试步骤:
1.测试voidintersection:
sendnumber();
函数是否能够正常工作
采用下列函数对其进行测试:
voidmain()
{
ifstreamhello;
hello.open("
otry.txt"
);
intersectionH;
H.otry=&
hello;
H.sendnumber();
}
ifstreamhello;
为一个输入流对象,通过该对象打开一个我们要读入的文件,这里我们的文件名为:
otry.txt
文件中的数据如下:
123454231422143542425364332544356
543256321656585432679757643673575
2012010550802040100611251807562090
.
期待的输出结果为:
实际的输出结果为:
对于voidsendnumber()函数能够满足相应的功能,能够将外部的数据无误的输入内部的数组,对其测试完毕;
2.
要求所输入的80个数16个一组,Double型,每输入一组数据就要换一行。
测试要求主要是看HUANG的gn和nc是不是计算准确。
首先输入一组80个数,对系统进行初始化:
初始化数组:
121001730152020603906801054850
第一组数据:
201202150183025804105820015801078
结果:
通行相位GN=38.5
8个方向上的GN为:
0.2666761.5100.5110.566.533.5146.564.5
8个方向上的NC为:
118.333120.667159.667190.333140.598.5211.667138.333
第二组数据:
211302356254030100511510300231001292
通行相位GN=46
6.575109.5161.578.542.520071
134.333142.167176.667249.833161.5115272.667153.833
第三组数据:
23140256627503211015130123102512015100
通行相位GN=59
8个方向上的GN为:
0.1333381.5116169.59050.5206.579
8个方向上的NC为:
156159.5194216.5183.333132.167
287.833172.667
经过三次的验证,HUANG模块运行正常,算出的GN,NC完全正确。
再检测两组出错的数据:
第四组数据:
aa1202150183025804105820015801078
输出结果:
6.17064e+0600000000
第五组数据:
201202150183025804.21058200158010aa
输完第一行,输入就停止了
通行相位GN=38
0.2666727.5100.4110.532.533.5146.464.5
38.527.5100.4110.532.533.5146.464.5
但运算结果明显错误!
但有一点要特别说明,也是本软件的一个不足之处,由于HUANG所输入的数据是通过路口检测其所得。
由于条件的约束,我们不可能用到路口检测器,所以在这里,我们只是采用读取文件中数据的方法来模拟路口检测器的取值,也就是说,我们的取值,包括测试的时候,我们也要根据我们日常的生活经验,尽量输入符合常规的数据。
在这里,Tb应该比Ta大,因为Tb是一个路口相位后面一个检测器的取值,Ta是这个路口相位前面一个检测器的取值,两者相减才是GN。
而且对于非通行相位,后一次的GN值肯定要大于(至少等于)前一次的GN值,因为红灯的时候车辆累计是慢慢增加的,而对于通行相位GN值既可以大于前一次的值也可以小于前一次的值。
在测试中我们也是尽量遵循这两条规定。
当然就这个模块本身而言,是不受这些条件约束的,任意的Tb和Ta值都能够输出一个结果,但如果放到现实中,有时不合情理的。
其结果就会导致有的路口可能会等待很长时间,甚至会引起交通混乱。
3.2.2模块2:
MA
3.2.2.1模块功能:
MA的功能主要是计算一个每个相位的紧迫度的。
3.2.2.2测试数据和访问文件:
输入的第一组数据为:
DoubleGN[8]={21.5,256,16.5,107,17.5,0,24,99.5};
DoubleRL[8]={0,0,0,0,0,0,0,0};
DoubleNC[8]={39.3333,272.667,33.1667,124.833,35.6667,276.333,41.6667,116.333}
输出的结果为:
10.6750.2750000
0.50.30.1500.1250.350.5
0.6250.6750.650.3750.12500
10.6750.650.3750.12500
0.750.48750.212500.06250.18750.25
输入的第二组数据为:
DoubleGN[8]={21.5,25,26.5,17,17.5,10,214,89.5};
0.81250.6750.46250.18750.062500
0.50.30.1500.1250.3750.5
0.750.48750.21250.06250.18750.250.1875
0.750.73750.58750.250.062500
输入第三组数据为:
DoubleGN[8]={6.5,75,109.5,161.5,78.5,42.5,200,71};
DoubleNC[8]={134.333,142.167,176.667,249.833,161.5,115,272.667,153.833}
输出结果为:
0.750.550.40.250.18750.06250
0.68750.61250.5250.31250.18750.06250
0.56250.48750.46250.3750.31250.18750.0625
0.50.36250.33750.31250.3750.31250.1875
0.56250.48750.40.18750.1250.18750.25
0.50.30.21250.18750.31250.3750.3125
0.68750.61750.5250.31250.18750.06250
输出结果完全正确,说明MA运行完全正常。
因为MA的数据来源是HUANG的输出结果,所以测试的时候,我们也是选择的黄的输出结果进行测试,如果输入的数值胡乱输入,MA也可以有输出,但这和上面一样,在模块中无法显示出错误,只能放到系统运行中去检验。
3.3联合测试
在检查上面三个单元无误后,将他们联合起来,就构成了我们整个程序的一个核心的部分。
在这里称之为DONG,DONG就是我们的核心代码,它的主要功能就是通过路口检测器送入的每个路口的TB和TA值,算出每个路口的路口紧迫度GN和下游路段的路口紧迫度NC,再选择最紧迫的路口,算出他需要调度的时间,选择他进行调度。
下面就对合并后的核心代码DONG进行测试,首先对系统初始化:
初始化数据:
输出:
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。
输入第一组测试数据:
2012021