系统程序及数据库文件加q1973189227
28
系统程序及数据库文件加q1973189227
5 软件测试
5.1 软件测试的目标
软件测试的目的就是为了发现程序中的错误而执行程序的过程,这是一种以反向思维的方式来验证程序正确性的办法,就是测试各种情况而未发现错误,可认为该软件是基本可用的。软件测试从不同的角度出发有两种不同的测试原则:
(一)从用户的角度出发,希望通过软件测试流程可以充分暴露软件中存在的缺陷和问题,从而确认是否可以接受该产品;
(二)从开发者的角度出发,希望通过测试可以表明软件产品不存在错误,并且已经能够满足用户的需求、正常使用,以此来确立用户对该软件质量的信心。
这两种观点都是人们处在不同位置时正常的心理反应,除了这些主观的因素外,正确的认识软件测试目的是十分重要的,因为目标的确定可以直接决定测试方案的设计,最终影响到测试结果和对软件正确性的评价[7]。
5.2 软件测试的方法
对于软件而言,如果要查找出所有的错误,所作的测试应尽可能全面:一方面通过测试来检查软件每个功能的执行情况;另一方面,详细测试软件执行的内部过程是否完全按照规格说明书上的规定正常运行。两方面的测试分别称为黑盒测试和白盒测试。白盒测试法是通过分析程序内部的逻辑与执行路径来设计测试用例,并对用例进行测试的方法因此也称作结构测试或逻辑驱动方法。黑盒测试法是根据输入/输出数据条件来设计测试用例,查看程序的功能是否正确或满足要求,不需要考虑程序的内部结构与执行路径如何,因此也称作功能驱动或数据驱动测试方法。两种测试方法的侧重点不同,分别应用于测试的不同阶段,基本上能够覆盖用户需求及代码实现,从而保证测试的完全性和彻底性[8]。
(一)白盒测试法
软件的白盒测试法是对程序的执行细节进行测试,通过设计测试数据,验证程序模块的每个路径的执行情况。执行路径包括所有的逻辑判定、循环的边界条件和界限内条件等,当程序的逻辑相对简单时,基本能够保证验证所有路径。但是,当遇到多重选择或多层循环嵌套时,不同的路径组合后数目是十分庞大的,无法实现完全的验证[9]。因此,对于测试数据的选择就很关键,它对路径的覆盖程序直接影响测试的效果。
(二)黑盒测试法
黑盒测试法是把软件看成一个黑盒子,完全不考虑程序的内部的框架结构和处理过程。它只检查软件的功能是否能按照规格说明书的内容正常实现,程序接收输入数据能否产生正确的输出信息,并且还可以保持外部信息的完整性[10]。黑盒法设计程序测试用例的方
29
系统程序及数据库文件加q1973189227
法有三种,分别是错误推测法、边界值分析法和等价类划分法,它们的主要目的是设法以少量的测试数据子集来测试出软件系统尽可能多的错误。
5.3 软件测试的步骤
1.单元测试。单元测试也称模块测试,是针对软件设计的最小单元程序模块进行测试的工作。其目的是发现模块内部的错误,修改这些错误使其代码可以正确运行。其中,多个功能独立的程序模块能够进行并行测试。
2.集成测试。集成测试也称为组装测试,它的任务是按照特定的策略对要进行单元测试的模块进行组装,同时在组装过程中能够进行模块接口与系统功能测试。
3.确认测试。确认测试也可以称为有效性测试,它的主要目的是验证软件的有效性,就是验证软件的性能和功能及其他特性是否与用户要求一致[11]。软件的功能和性要求参照软件需求说明书进行测试。
4.系统测试。经过了前面一系列测试,软件的功能已经能基本符合要求,之后进行系统测试的主要目的是为了测试软件当被安装到实际应用的操作系统中后,是否可以与系统的其余部分进行协调工作,以及在系统运行可能出现的各种情况的处理能力。
5.4 测试用例
1.系统登录模块
测试数据:用户名111与密码111,用户名222与密码222,用户名333与密码333。 测试结果:当用户名与密码正确时,进入系统进行操作。用户分为系统管理员与普通用户,系统管理员可做管理操作,而普通管理员则只可进行一些权限内的基本操作。
2.添加模块
测试数据:输入与界面提示的相关信息,并遵从提示,进行操作。
测试结果:输入的内容部分不能为空或者错误内容,并且可以将要添加的内容保存到数据库中。
3.删除模块
测试结果:当进行删除操作时,检查要删除的数据是否在存数据库中移除。若数据消失,删除操作就成功了;反之,此操作就失败了。
4.修改模块
测试结果:当进行修改操作时,可以对当前内容进行修改,并且更新数据库中的内容。如果数据库中的内容更新了,则修改操作成功,否则操作失败。
5.查询模块
测试结果:输入查询条件,能显示出要查询的内容。在数据库中存有数据的前提下,当输入查询条件时,显示正确的查询结果,则操作成功,否则操作失败[7]。
30
系统程序及数据库文件加q1973189227
31
系统程序及数据库文件加q1973189227
结论
通过这次比较完整的系统设计,我摆脱了单纯理论知识的学习状态,和实际的结合锻炼了我的综合运用能力,通过对整体的设计,对局部的取舍,以至对细节的斟酌处理,都使我的能力得到了提高,经验得到了丰富,并且意志品质力、抗压能力以及耐力也都得到了不同程度的提升,虽然毕业设计内容繁多,过程繁琐,但我的收获却更加丰富。各种系统的适用条件,各种语言的选用标准,各种系统的设计方式,我都是随着设计的不断深入而不断熟悉并学会运用的。和同学们的沟通交流更使我从程序设计的角度对设计有了很大的认识,举个简单的例子,在数据库的设计过程中,要考虑到本系统内所涉及的全部内容,否则在后来的开发过程中,会给程序的编写带来较大的麻烦,不断更改数据库,从而也降低了程序的完整性,也会导致一些损失,通过这次毕业设计让我提前了解了这些知识,这是很珍贵的。
经过长时间的艰辛努力最终换来了丰硕的成果,虽然有些不完善的地方,但毕竟是我花费大量的时间设计出来的,也感到有一丝的欣慰。现在的我对程序设计这一块也有了一定的了解,但我深知我所了解的不过仅仅是皮毛而已,离真正的运用自如还相距甚远。所以从毕业设计所暴露出的问题入手,不断努力完善自己,哪里欠缺,哪里补足。
32