第7章 系统测试
7.1测试的目的
测试的目标是要发现软件中的错误,并加以纠正。方法主要分单元测试和集成测试。
单元测试:对模块中的几个小单元进行单独测试,若均完成预计的功能,便可进行下一步的集成测试。
集成测试:集成测试是组装软件的系统技术,主要有两种方法。一种是先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,成为非渐增式测试方法:另一种是把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合近来测试,称为渐增式测试。我们所用到的是第一种方法,将所有模块结合到一起进行测试。
但在其开始时采用单元测试,将设计的每个模块单独检测,主要评价模块的五个特征:
1.模块接口 2.部数据结构 3.重要的执行通路 4.出错处理通路
5.影响上述各方面特征的边界条件
在此检测中能查出30%-70%的逻辑设计错误和编码错误,所以这是一项非常有效的程序验证技术。但如果软件模块的内聚高可以简化单云测试过程。如果每个模块只实现一个功能,则需要的测试方案明显减少,模块中的错误也容易预测和发现。对于单元测试中存在的错误要的及时处理将对以后的集成测试带来很大的方便。
接下来是集成测试,采用非渐增式方法。因为我们的系统相对来说不是很大,集合到一起试的功能一目了然,不必要渐渐增加模块来增加测试的复杂性。
测试中,我们将数据库中的数据进行录入,当录入为零时,系统给出提示“无记录”;当录入几条信息是,对系统进行测试,不论是查询,删除或是更新的速度都很合乎要求。但在录入上百条记录时,就明显感觉出速度的减缓。
我所设计的部分,信息更新,也就是数据的更改的弊端是它只对输入格式错误的信息进行更改,比如实验室设备的书写错误,编码超出范围,出厂日期不符等等,对于一些填写信息均合理,但有实质性错误的信息将无法自动查找和更改,这也是次系统的其中的一个弊端。另外,在时实方面也不可避免的会出现问题,如在多机上运行时,可能会发生访问数据库的冲突等问题,所以如
31
果今后有充裕的时间我们还应继续对系统进行优化。
7.2 测试步骤
在整个系统测试过程中,按以下4个步骤进行,即模块测试、联合测试、确认测试和系统测试。
1、模块测试。主要是针对程序模块进行正确性检验的测试。单元测试的内容有:模块接口测试即对通过被测模块的数据流进行测试;局部数据结构测试,即设计测试用例检查数据类型说明、初始化、缺省值等方面的问题,还要查清全程数据对模块的影响;路径测试,即选择适当的测试用例,对模块中重要的执行路径进行测试,对基本执行路径和循环进行测试可以发现大量的路径错误;错误处理测试即检查模块的错误处理功能是否包含有错误或缺陷;边界测试,即要特别注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。这部分的测试可以发现详细设计和编程时犯下的错误,如某个变量未赋值、数组的上下界不对等。
2、联合测试。在模块测试的基础上,需要将所有模块按照设计要求组装成为系统,然后按业务流程对集成的系统进行测试。可先一个模块一个模块的增加测试,直到集成为一个系统。这个测试过程可以发现概要设计时犯的错误。 3、确认测试。又称为有效性测试,它的任务是验证软件的有效性,即验证软件的功能、性能及其它特性是否与用户的要求一致。这个测试过程最好由用户参与测试。
4、系统测试。将通过确认测试的软件,在用户的实际环境(硬件环境、软件环境、数据、人员等)进行联合测试和确认测试。
7.3 测试方法
测试软件产品有两种方法:如果已经知道了产品应该具有的功能,可以通过测试来检验是否每个功能都能正常使用;如果知道产品内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常运行。前一个方法称为黑盒测试,后一个方法称为白盒测试法。 1、黑盒测试法
也称为外部测试,其原则是对一些把程序(一个模块或一组相关的模块)当作黑盒子(即看不见其内部结构)时看到的外部规格进行测试。常用的有:等价分类法,边界值测试法、因果图法。
等价分类法,将输入数据的可能值分为若干个“等价类”,每一类的一个代表性值在测试中的作用等价于这一类中的其他值,每个等价类的数据可以发现某种类的错误,从而减少所需测试用例的数目。
边界值测试法,程序往往在处理边界值是犯错误,所以考察边界条件的测试
32
用例比别的测试用例收到更大的效果。
因果图法,等价分类法和边界值测试法的缺点是没有检查各种输入条件的组合,因果图法能清晰地表现程序的逻辑条件(因)和对应的作用(果)的关系,其产生用例的步骤为:从用自然语言书写的功能说明中找出因(输入条件)和果(输出或程序状态的修改),通过画因果图将功能说明转换成一张判定表,然后为判定表的每一列设计测试用例。
以上三种常用方法应当互相补充、互相配合地使用,才能收到更好的效果。 2、白盒测试法
它以程序的内部逻辑为基本设计测试用例,所以又称为逻辑覆盖法,它主要考虑的是测试用例对程序内部逻辑覆盖的程度,尽可能将程序每一路径都要通过一次。
语句覆盖,程序的某次运行一般并不能执行到其中的每一个语句,因此,如果某个语句中含有一个错误,而它在测试中没有执行,这个错误就不可能被发现,所以应选择足够的测试用例,使得程序中每个语句至少都能执行一次。 判定覆盖,执行足够的测试用例,使得程序中每个判定条件至少获得一次“真”值和“假”值,也就是使得程序中的每一个分支至少都通过一次。
条件覆盖,一个判定中往往包含了若干个条件,执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。
判定/条件覆盖,执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。
条件组合覆盖,执行足够的测试用例,使得每个判定条件的可能组合都至少出现一次。
7.4 小结
测试是一项复杂的、极具创造性的工作,也是在软件开发中容易被忽视其重要性的工作。在实际的测试中,可以将测试过程和方法反复进行,各种方法也需要组合使用,灵活应,才能为生产高质量的软件产品打下基础。
第8章 开发设计总结
8.1 工作小结
至此,整个酒店客房管理系统开发完毕,在开发过程中有以下心得: 第一,各种MIS的开发技术是相通的,通过对酒店客房管理系统的开发总结出的理论和实践经验可以为其他的MIS系统开发起到很大的帮助。
第二,软件复用。因为各种MIS的技术非常相似,所以很多的设计方法、流程、甚至源代码可以利用,例如报表打印控制程序,可以用于以后其他的MIS系统中。
33
第三,前期的需求分析和软件设计工作非常重要,不要怕在这个阶段占用系统开发的时间过长,只有做好需求分析和软件设计才能保证软件的成功率,否则在软件开发后才来修改存在的问题会浪费更多的人力和物力,而且修改会带入新的问题。
第四,在系统设计时,应当考虑到系统应用环境可能发生的变化,应当使系统具有良好的环境适应性,例如,本系统在不同的酒店应用时,能让用户在系统提供的代码维护功能中快速建立适合本酒店的环境,而不需要改变程序的源代码。
第五,在系统设计中,即可能多的使用存储过程完成对数据库的操作,可以减少网络流量,提高系统的响应速度,另外还有利于增加系统的安全性。 第六,在系统测试时,采用黑盒法与白盒法综合测试的方法,而且每写一段代码就进行一次测试,将测试与代码编写结合起来,虽然比较费时,但出错率降低不少,对用黑盒法测试出现错误比较多的模块,采用了判定/条件覆盖的测试方法进行多次测试。
在开发过程中也发现了一些问题:
第一,文档是软件开发各阶段成果的标志,受时间限制,本文并没有关于文档的具体描述。
第二,在与用户打交道的过程中,需求分析做的不是很成功,没有将用户的想法以模型的方式反馈给用户,以至在开发的后期有几次修改,增加了一些不必要的开发工作。如:开始设想将所有的收银操作都交给前台收银模块来处理,但在实际中发现客人在前台登记完,还需在收银台交纳预付金,比较费时,所以后来在前台接待中增加了“代收帐务”功能。
第三,测试不可轻视,由于时间因素,详细的测试过程有待进一步完善,在系统中还存在一定的问题。
8.2 系统展望
受开发时间的限制,本系统的开发主要是完成酒店客房的预订、入住、查询、退房的管理,这只是整个酒店管理系统的一部分内容,所以系统还存在较大的继续开发空间,这在做系统设计时已经考虑到了的,主要有以下几个方面: 第一,进一步完善系统功能,增加商务中心管理模块、餐饮管理模块、茶秀管理模块、电话计费模块,使得客人可以凭借房卡在酒店实现“一卡式”消费。 第二,随着互联网上电子商务的发展,没有开展电子商务的酒店将没有生机,将失去竞争力。尤其是随着国内游泳业的发展,酒店竞争和发展迫在眉睫,它要求酒店经营者不断寻找新的经济增长点、采取新的营销模式。由于Internet具有传播面广、费用低、效率高的特点,有效地通过Internet进行电子商务模式的市场营销活动,将成为酒店在于激烈市场竞争中成功的关键之一,如网上宣传、网上订房系统,而电子商务系统也必将成为酒店MIS的延伸和拓展。
34
第三,客户的消费是酒店所有经济收入的源泉,因此在酒店管理系统中应当增加客户关系的管理,例如对于经常消费的客户应当设置一定的折扣,还应当记住他的一些嗜好(如喜欢散装茶)等,这些都会让客户有宾至如归的感觉,提高客户的满意度,从而增加客户的忠诚度。
8.3结束语
经过几个星期的努力,一个完整的宾馆客房信息管理系统就创建完毕了,在此详细介绍了该管理系统的系统设计部分,包括功能模块设计,数据库结构设计等,系统创建了一些典型的管理模块,基本实现了所预期的功能,但是由于毕业设计时间较短,所以该系统中还有许多不尽如人意的地方,比如用户界面不够美观,出错处理不够等多方面问题,这些都有待进一步改善,在此系统的开发过程中,遇到一些难以解决的问题,例如在VC中如何与数据库连接,如何对数据库进行修改等等,在曲秀敏老师的帮助下最终都得以实现,我在此次设计中积累了一些宝贵的经验,软件水平有了很大的提高。
这次的毕业设计对作者来说是非常难得的一次锻炼机会。毕业设计使作者对几年来所学的专业课有了更为深刻的认识,提高了对管理信息系统开发理论,方法和步骤的认识,使知识得到了融会贯通,得到了比以往学习任何一门课都大的提高和进步。对于作者来讲这不仅仅是一次毕业设计,不仅仅学会了一门数据库开发工具,更重要的是在学习的过程中,遇到了很多的困难,在解决这些困难的过程中提高了作者学习的能力、解决问题的能力和实际工作能力,学到了许多书本以外的知识。
总之,理论+实践=知识。程序设计过程中,作者以理论为指导,以实践为主体,将理论与实践紧密结合起来,亲身体会到只有将理论与实践有效的结合起来,才能使理论指导实践,又反过来丰富理论,二者相得益彰,使学习效率大大提高。
参考文献
[1]刘彦保,李军利,郝继升.用PowerBuilder和SQL Server开发酒店管理信息系统[J].延安大学学报,2003,Vol.04
[2]亓协民.龙铁宾馆网络系统分析[J].哈尔滨铁道科技,1999,Vol.01
[3]So-Yeon LEE,Jai-Sang Koh.WWW-Based Reliability Information System [J].Computers ind. Engng,1998,Vol.35:599-602
[4]吴锋.PowerBuilder在企业MIS开发中的应用与思考[J].计算机工程与应用,1999,Vol.01
35
[5]张鸿,熊文龙.基于C/S模式的SQL数据库应用技术[J].武汉理工大学学报,2003,Vol.06
[6]陈建平.Sybase SQL Server与管理信息系统设计[J].长春邮电学院学报,1996,Vol.02
[7]叶蓓.Microsoft Office Access 2003专业级认证教程[J].现代电子技术,2003,Vol.23
[8]刘凯,苗放,王艳.PowerBuilder与Sybase在客户/服务器模式下的连接及应用[J].物探化探计算技术,2001,Vol.04
[9]樊银亭,曾春先.SQL Server数据库系统中的数据完整性研究[J].金陵科技学院学报,2005,Vol.02
[10]钱学忠.SQL在数据库应用系统中的运用[J].电子器件,2000,Vol.03 [11]Timo Manterea,Jarmo T. Alanderb.Evolutionary software engineering,
a review[J].Applied Soft Computing,2005,Vol.05:315-331
36