在物流管理信息系统设计的各个环节都有可能出现差错,在系统交付使用之前,必须认真地审查,进行系统的测试,尽早发现并纠正错误,否则等到系统投入运行后再来改正错误,将在人力、物力上造成很大的浪费,有时甚至导致整个系统的瘫痪。所以,系统测试是物流管理信息系统的开发周期中一个十分重要的活动。
(一)系统测试的基本原则
系统测试的目的是要通过测试的方法发现尽可能多的错误,并尽早改正。系统测试时,要遵循以下基本原则:
1.系统测试人员必须有别于系统设计人员
由于个人的思维方式和习惯的限制,系统设计人员往往不容易发现自己设计中存在的错误和问题,需要另外组织系统测试人员以不同的思维方式和习惯去审查新系统的程序,这样才能尽早发现更多的错误,以便改进。
2.系统测试的数据应有预期运行结果
在执行测试程序之前应该对运行结果有一定的预期(或使用旧系统运行出确切的结果),测试后,将新系统程序的输出结果和它仔细对照检查,确定新系统运行结果的正确性。如果不事先确定预期的结果,则无法判断新系统的运行是否正确,甚至可能把似乎是正确而实际是错误的结果当成是正确结果。
3.系统测试的数据要有代表性
在有限的系统设计时间和资金的条件下,不可能对所有程序、算法逐一测试,只能通过进行有限操作,尽可能多发现一些错误。这就需要测试的数据要有代表性,不仅要选择合理的数据测试系统运行正确性,还要选择不合理的甚至错误的数据测试系统运行的可靠性,观察和分析系统的反应,以便更进一步完善系统的设计。
4.系统测试结果要全面检查
系统测试结果的判断,除了需要检查程序是否做了它应该做的工作,还应检查程序是否做了它不该做的事情,对每一个测试结果进行全面的检查。例如,部分程序采用嵌套调用方式,很容易出现虽然观察到的输出的运行结果正确,但调用它的程序运行错误,将对系统其他功能产生错误影响。
5.系统测试过程要保存
一般的管理信息系统规模比较大,系统的测试工作复杂度较高,费时费力。如果系统测试的过程不保留,一旦系统需要维护,进行再次测试时,需要花很多人力物力,会造成重复性的资源浪费。通常再次的测试很少有第一次测试那样全面。如果能够将每次系统测试过程保存下来,就可以避免这种情况的发生。
(二)系统测试的方法
系统测试的主要方法为先经过人工测试,然后再进行机器测试。人工测试又称为代码复审,通过人工阅读程序来查找程序静态结构的错误。机器测试指的是在计算机上直接用事先设计好的数据运行被测程序,比较运行结果与预期结果是否一致,从而发现程序错误。
1.人工测试
人工测试主要通过三种方法来实现,包括个人审查、走查和会审。
(1)个人审查,指的是由程序设计员本人对程序进行检查,发现程序中的错误。由于个人的精力有限,这种方法的效率往往不高,由于个人的思维习惯,这种方法纠错率较低,所以,适合于小规模的程序或模块测试。
(2)走查,指的是由3~5人组成测试小组,扮演计算机的角色,把有代表性的数据沿着程序的逻辑顺序执行,及时观察执行结果并记录,以发现程序中的错误。需要注意的是,测试小组的成员应该是没有参加该项程序设计的有经验的程序设计员;这种方法需要沿着程序的逻辑顺序检测,比较费时,适合于应用数据类型单一的程序。
(3)会审,指的是由3~5人组成测试小组,召开程序审查会,然后由程序设计员讲解程序语句,测试员根据经验审查资料(如系统分析、系统设计说明书、程序设计说明书、源程序等),列出错误,逐个提问讨论,来发现程序中的错误。需要注意的是,审查会的目的在于发现程序中的错误,以便下一步的改进。所以,审查会的结果应该只限于程序审查会参会者知道。如果其他人员使用了审查会的结果,那么这种审查过程就会失去意义。
2.机器测试
机器测试可以分为黑盒测试和白盒测试两种。
(1)黑盒测试,也叫功能测试,将程序看成是一个黑盒子,不关心程序的内部结构,主要检测系统能够实现的功能是否与需求说明书的要求一致。黑盒测试主要是为了发现是否有错误的功能或遗漏的功能。黑盒测试的设计技术主要有等价划分、边界值分析、错误推测法、因果图、功能图等。
①等价划分技术。等价划分技术的主要思想,就是将程序的输入数据按照程序说明划分为若干个等价类,每一个等价类比照输入条件,又可以划分为有效的输入和无效的输入,然后从每个等价类(包括每一个有效的等价类和无效的等价类)中取一组有代表性的输入数据进行测试,如果某个等价类的一组测试数据运行结果正常,则说明它所在的同一等价类中其他输入数据测试的结果应该也正常;反之,如果某个等价类的一组测试数据运行结果出现错误,则说明它所在的同一等价类中其他输入数据测试的结果应该也会出现同样的错误。这样一来,就可以用较少的测试次数,完成对整个系统的测试。
等价划分技术一般分为两步进行:第一步,划分等价类,如表7-4所示;第二步,选择测试数据。
表7-4 等价类表
(www.zuozong.com)
在划分等价类时,可以按以下原则进行:如果规定了输入值的条件范围,可以根据输入值满足此条件进行等价划分,满足条件的可以分为有效的等价类,不满足条件的可以分为无效的等价类。根据与条件的比较,从各种不同角度,又可以将无效的等价类细分为不同的无效等价类,例如,输入数据可以分为小于最小值的无效等价类和大于最大值的无效等价类。
选择测试数据时,首先给每个等价类规定一个唯一的编号,然后针对不同的等价类选择测试数据,主要分为两步。第一步,针对有效等价类,选择一个测试数据,使它尽可能多地覆盖未被覆盖的有效等价类,再选择一个测试数据,重复第一个测试数据的要求,直到所有的有效等价类都被选择的测试数据覆盖为止;第二步,针对无效等价类,选择一个测试数据,使它只覆盖一个未被覆盖的无效等价类,依次为所有的无效等价类选择测试数据,直到覆盖了全部无效等价类为止。
例如:测试一个计算(x-4)/(6-x)的开平方的程序。
首先,划分等价类,并分类编码,如表7-5所示。
表7-5 测试程序的等价类表
其次,选择测试数据:第一步选择x=4,x=5;第二步选择x=3,x=6,x=7。最后,确定测试数据为x=3,x=4,x=5,x=6,x=7,如表7-6所示。
表7-6 测试数据表
②边界值分析。边界值分析也是黑盒测试技术,是等价类划分的一种补充。一般来说,等价类划分技术主要考虑有代表性的数据测试,容易忽略边界情况,而处理边界数据很容易发生错误,所以,检查边界值发现错误的可能性较高。
边界值分析是指对每个等价类的各边界、稍高于其边界和低于其边界的数据进行测试。选择测试数据应遵循以下原则:如果输入数据规定了条件范围,则选择这个条件范围的边界以及刚刚超出范围的无效类数据作为测试数据。
例如,某仓库物资进行仓存ABC分析,物资储存量小于20%,其占用价值大于80%的列为A类货物,重点保管。用程序计算其中物资总价值的比例,并进行条件判断,也就是“价值≥80%”,满足条件的列入A类,否则列入B或C类。在选择数据测试时,可以选择边界值80%,还有稍微小于80%的数据79%。
③错误推测法。不同类型的程序通常有一些特殊的容易出错的情况,必须依靠测试人员根据经验和直觉选取可能会出错的测试数据。错误推测法在很大程度上靠直觉和经验进行。例如,输入数据为零或输出数据为零时,往往容易发生错误。
④因果图。因果图是分析待测的系统规格,找出原因与结果,以结果作为特性,以原因作为因素,在它们之间用箭头联系表示因果关系,从因果分析图中可以产生测试数据。其中原因是表示输入条件,结果是对输入执行的一系列计算后得到的输出。因果图方法最终生成的就是判定表,它适合于检查程序输入条件的各种组合情况。
(2)白盒测试。它是按照程序内部的结构测试程序,通过测试来检测产品内部运作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。它是对软件的过程性细节做详细的检查,着重测试程序内部结构,要求测试者必须对程序内部结构和处理过程非常清楚。白盒测试的测试方法主要有逻辑覆盖测试、基本路径测试等。
①逻辑覆盖法,以程序内部的逻辑结构为基础的测试技术。它考虑的是测试数据覆盖程序的逻辑程度。根据覆盖情况的不同,逻辑覆盖法可以分为语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖和路径覆盖。语句覆盖,就是选择足够多的测试数据,使被测试程序中的每个语句至少执行一次;判定覆盖,就是选择足够多的测试数据,使得每个条件判定至少有一次“真”和一次“假”的结果,或者说,每个分支方向都必须至少经过一次;条件覆盖,就是选择足够多的测试数据,使得判定表达式中的每个条件的各种可能结果都包含在内;判定条件覆盖,就是选择足够多的测试数据,既要使得每个条件判定至少有一次“真”和一次“假”的结果,还要使得判定表达式中的每个条件的各种可能结果都包含在内;条件组合覆盖,选择足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次,是前面几种覆盖标准中最强的;路径覆盖,使程序中每一条可能的路径至少执行一次,是一种比较全的逻辑覆盖标准。
②基本路径测试法,是运用最为广泛的白盒测试方法,在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试数据的方法。
基本路径测试法的步骤:首先画出程序的控制流图(描述程序控制流的一种图示方法),然后计算程序圈复杂度(一种为程序逻辑复杂性提供定量分析的度量,将该度量用于计算程序的基本的独立路径数目,表明了所有语句至少执行一次的测试数量的上限),最后导出测试数据。
(三)系统测试的步骤
在系统测试过程中,需要进行有效的管理,保证测试质量和测试效率。如果测试步骤安排得不合理,将造成大量时间的浪费以及不必要的重复性测试。通常,系统测试先进行模块调试,然后进行分调,最后总调。
1.模块调试
模块调试是系统测试的基础,主要对单个模块进行测试,保证每个模块作为一个单元能够正确运行。其发现的错误主要是编码和设计方面的错误。首先由人工打印出源程序,然后参照设计说明书的要求把呈现在纸上的程序审查一遍,最后利用所用高级语言提供的调试机制或软件工具,进行上机调试,完善各模块。
2.分调
分调也称子系统测试,就是在模块测试的基础上,把测试过的单个模块组合在一起形成一个子系统来调试,测试的重点在接口。测试的方法主要有非渐增式测试和渐增式测试。非渐增式测试,先分别测试每个模块,再把所有模块按设计要求组合在一起进行测试;渐增式测试,总是把待测试的模块同已经测试过的模块结合起来进行测试,测试完成后再把下一个待测试的模块结合进来调试。对渐增式来说,又可分为“自顶向下”“自底向上”等多种方式进行调试。自顶向下测试,是从程序开头的模块开始依次向下进行的测试。自底向上测试,是从程序的末端下层模块开始向上进行的测试。经过比较,渐增式调试方法较非渐增式要优越,尤其是“自底向上”的渐增式方法更适合管理信息系统的测试。
3.总调
总调,也称为系统测试,它是所有子系统经过测试后,装配成一个完整的系统来测试,用以发现系统设计和程序设计中遗留的未解决的问题,验证系统的功能是否达到设计目标,测试系统的总体性能。还要考察系统的有效性、可靠性和效率。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。