目录
前面内容请移步
免费源代码+毕业设计+论文
-
功能模块测试
在软件开发的一系列活动中,为了保证软件的可靠性,人们研究并使用了很多方法进行分析、设计及编码实现。但是由于软件产品本身是无形的、复杂的、知识密集的逻辑产品,其中难免有各种各样的错误,因此需要通过测试查找错误,保证软件的质量。软件测试是保证软件质量的关键,它是对需求分析、设计和编码的最终复审。
软件测试在软件开发的生命周期中也扮演着重要的角色,通过测试,我们可以找出系统现在存在的漏洞,并对其进行修改,只有通过完整的测试才能将产品放心的交付给客户。在投入使用之前尽可能多的发现系统的不足,并且完善,是保障系统质量的一个重要手段。本章进行的软件测试将对注册会员,会员登录,管理员登录,浏览帖子,发帖回帖,管理员具有删除用户,管理板块,能够增加、删除、修改板块信息这些功能进行测试。
6.1 测试概述及所用方案
6.1.1软件测试概述
软件测试是以发现软件的缺陷为目的,使软件运行,并将软件不运行所产生的危险性降低到允许的范围
(1)软件测试是为了发现错误而执行程序的过程;
(2)测试是为了证明程序有错,而不是证明程序无错误;
(3)一个好的测试用例是在于它能发现至今未发现的错误;
(4)一个成功的测试是发现了至今未发现的错误的测试。
测试的主要目的并不仅仅是为了找出错误,而是通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。6.1.2 测试的重要性及目的
(1)测试的重要性
在软件生命周期中,软件的测试占据着一个重要的位置,在传统的瀑布模式中,软件测试学只是处于在运行维护阶段之前,是软件产品交付给大众用户使用之前用以保证软件质量重要的一个方法。近来,软件工程界中更加趋向于一种新观点,即认为软件每一阶段中的生命周期都理应包含测试,因此使检查本阶段的成果能不能接近预期的结果目标,进而尽可能早一点发现到错误并加以改正,如果测试不是在早期阶段进行的,那么错误将延时扩散,最后常常会导致成品测试面临巨大的困难。
对于软件来讲,事实上,无论采用任何方法或者任何技术,系统中仍然会出现错误。采用新的开发方式、先进的语言、完善的开发过程,可以最大限度的降低错误的引进,但还是不能完全的杜绝软件中有可能出现的错误,这些引入的错误需要通过测试找出来,系统中错误的密度也需要通过测试来进行估量。测试是所有学科的工程的最基本的组成单元,是软件开发的一个很重要的部分。自有设计程序的那天起测试就一直跟随着。统计表明,在典型的软件开发项目中,系统测试工作量通常占开发系统总工作量的45%以上。在开发系统总的成本中,用在测试上的开销要占30%到50%。如果把维护阶段也考虑在内,讨论整个系统生存期时,测试的成本比例也许能降低,但实际上维护程序的工作相当于二次开发,甚至是多次开发,其中一定又包含了很多测试的工作。
在实践中,测试软件非常困难,从而常常使我们敷衍了事或望而却步,这是因为对测试还是存在了一些错误的看法和不正确的态度,这包括:
- 难以给测试的工作人员某种成就感; 认为测试工作并不像编码和设计那样容易进行发展
- 在测试的过程中发现错位其实是一种对责任者工作的否定; 测试是以发现软件的错误为目标的,这是非建设性的,甚至还是具有破坏性的,
- 测试的工作过程非常枯燥无味,因此不足以引起我们的兴趣和爱好;
- 测试工作需要是细致而艰苦的进行;
- 一般来说,我们都对自己编写出来的程序比较盲目的自信,在发现到错误的时候,可能会顾虑别人对我们自己开发的能力的看法。
以上这几个观点对测试系统的工作进行是尤为不利的,我们必须要端正态度、澄清认识,才可能将系统产品的质量加以提高。
- 测试的目的
如果测试程序的目的是为了尽可能全面地找出系统中的错误,那么测试就必须直观的针对软件较为复杂的部分或者是前期出现错误比较多的位置。
- 系统的测试是为了检查出错误而执行程序的运行过程;
- 测试则是为了证明程序中有错误,而不是用来证明程序没有错误;
- 每一个好的测试的用例是因为它能检查到至今未出现的错误;
- 一个很成功的测试就是检查出了至今未能发现的错误的测试。
这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此。
首先,测试并不仅仅是为了要找出错误。通过分析错误的分布特征和错误产生的原因,可以使项目管理者发现当前所应用系统的缺陷,以便改进。此外,这种分析还可以使我们设计出有针对性地检测方法,改善测试的有效性。其次,没有检查出错误的测试也有它的价值,完整的测试是测试质量评定的一种方式。
6.1.3 测试的步骤
类似系统开发的过程,测试工作的过程也需要分步骤来进行,每个步骤在逻辑上是前一个步骤的继续。大型系统软件一般是由若干个子系统而组成的,每以个子系统又是由若干个小的模块组成的。因此,大型系统软件的测试功过基本上由下面的几个步骤组成:
(1)模块测试 在对模块进行的测试工作步骤中所发现的经常是详细设计和编码的错误。
(2)系统测试 在对系统进行的测试工作步骤中发现的经常是软件设计时出现的错误,也有可能会发现需求说明中的出现错误。
(3)验收测试 在对验收进行的测试工作步骤中发现的经常是系统需求说明书中出现的错误。
6.1.4 测试的主要内容
我们在进行测试工作的时候为了保证系统的质量,可以将测试工作的内容分成以下所说的几个部分,即: 审查代码、集成测试、单元测试、系统测试和确认测试。
(1)单元测试
检查系统设计最小的单位(—个模块)就是单元测试,通过测试检查出用来定义该模块的功能说明不符合与实现该模块的实际功能的情况,以及编码时的错误。
(2)集成测试
我们可以将每个小的模块按照设计的需求组装起来后同时进行集成测试,集成测试的主要目的是检查与接口有关联的某些问题。假设一个模块和另一个模块可能会出现由于疏忽的问题而引起有危害的影响;把子功能模块组合起来后可能不能产生预期的主功能;有个别的看起来视乎能接受的误差却很有可能积累到不能接受的程度;全程数据结构可能有错误等。
(3)确认测试
确认测试的目的是向未来的用户表明系统能够像预定要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,基本排除了接口的错误,接下来我们就应该进一步的检验系统软件的有效性,就是确认测试工作的任务,是将系统软件的性能和功能发挥到如用户们合理期待的一样。
(4)系统测试
完成软件设计开发以后,最后还要将它与系统中其他的部分整合运行,从性能测试、安全测试、强度测试和恢复测试等四个方面来进行系统测试。
此外对系统的单独测试主要从以下三个方面入手:
- 功能测试:测试能否满足开发的要求,能否实现了设计所描述的功能,能否让用户的需求得到满足。系统测试必须和最常用的测试是功能测试。一般来说还会以对软件正式的说明书为标准进行测试。
- 性能及强度的测试:最高实际限度的测试系统能力,即软件在某些超负荷环境下功能是否还实现的情况。
- 安全测试:对安装在系统内的安全保护机构确实能能不能保护系统进行验证,使系统不会受到各种不正常的干扰。因此针对本次开发的系统主要是测试错误的数据、无效的数据,测试权限系统和对抗非法数据干扰的能力。
6.1.5 测试方案
测试方法一般分为动态测试和静态测试。动态方法中又根据测试用例的设计方法不同,分为黑盒测试和白盒测试。
黑盒测试,也称功能测试或数据驱动测试。他不考虑程序内部结构和处理过程。把被测试程序看成一个黑盒子,只在软件接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。每个功能是否都能正常使用,是否满足用户的要求。程序能否适当的接受输入数据并产生正确的输出信息,并且保持外部信息(如数据库或者文件等)的完整性。
通过黑盒测试束腰发现以下错误:
- 是否有不正确或者遗漏的功能;
- 在接口上能否正确的接受输入数据,能否产生正确的输出信息;
- 访问外部信息是否有错;
- 性能上是否满足要求;
- 界面是否有错,是否美观、友好。
白盒测试,也称结构测试或逻辑驱动测试。白盒测试法与黑盒测试法不同,测试人员将程序视为一个透明的白盒子,测试人员需要了解程序的内部结构和处理过程,以检查处理过程的细节为基础,要求对程序的结构特性做到一定程度的覆盖,对程序中的所有逻辑路径进行检测,并检验内部控制结构是否有错,确定实际的运行状态与预期的状态是否一致。
在对动漫论坛系统的功能测试中,我们选用的是黑盒测试。将对前端功能:注册会员,会员登录,管理员登录,浏览帖子,发帖回帖,后台功能:删除用户,管理板块:能够增加、删除、修改板块信息,管理分区:添加、修改、删除分区,管理子版块:添加、删除、修改子版块,管理主体:浏览和删除主题这些功能进行测试。
6.1.6测试设计
(1)单一功能模块测试要求:
表5 单元测试用例表
- 多功能模块组合测试要求:
表6 多功能模块组合测试表
- 系统整体测试要求:
表7 系统整体测试表
6.2 前端功能测试
6.2.1 登录功能测试
在用户登录模块测试中,涉及到用户名和密码两项数据,我们用以下的数据来测试
- (已经注册成功的数据,用户名、密码正确)用户名:owee 密码:123456
- (已经注册成功的数据,密码不正确)用户名:owee 密码:123
- (没有注册的数据)用户名:kochan 密码:244
进入登录界面,输入第一组数据,登录成功,如下图6.2.1所示:
进入登录界面,输入第二组数据和第三组数据,登录均不成功,并弹出错误提示,具体情况如下图6.2.2所示:
6.2.2 注册功能测试
在用户注册测试模块中,涉及以下几项数据:用户名、密码、邮箱以及真实姓名,且均为必填项,其中密码两次输入须保持一致,针对用户名、密码、确认密码、email、真实姓名这几项内容,我们选用以下数据来进行测试:
- kochan 244 244 kochan@qq.com D本K一
- Onno 12345 123 onno@163.com 面包
- Onno 12345 12345 (null) 面包
- Onno 12345 12345 onno@163.com (null)
进入注册界面,将第一组数据填入,第一组数据信息完整且两次密码相同,符合注册所需条件,因此注册成功,如下图6.2.1所示:
进入注册界面,将第二组数据填入,第二组数据中密码,与确认密码框内填入的密码不相同,注册失败,弹出下列窗口,如下图6.2.2所示:
进入注册界面,将第三组数据填入,第三组数据中两次密码相同但没有填入邮箱,注册失败,弹出下列窗口,如下图6.2.3所示:
进入注册界面,将第四组数据填入,第四组数据中密码,两次密码相同且邮箱正确但没有填入真实姓名,注册失败,弹出下列窗口,如下图6.2.4所示:
6.2.3 发帖功能测试
进入主页,依次进入发帖所在的分区、版块、和版块下的子版块中,点击“新帖”发表新帖子,依次写入标题与正文内容,之后点击“发新话题”即完成新帖的发表,所发表的帖子就是该子版块中的帖子,如下图6.2.5所示:
点击“发新话题”发表新帖子,新帖子将出现在刚刚所处于的子版块中,如下图6.2.6所示:
6.2.4 回复帖子测试
在浏览的帖子下方“快速回复主题”中输入自己要回复的内容,点击“发表回复”即可完成回复帖子的功能,该回复的帖子将在主题帖下方显示出来,如下图6.2.7所示:
6.3 后台功能测试
6.3.1 管理员登录测试
管理员为了进入后台进行操作,管理员首先要进行登录,管理员的登录入口与普通用户相同,在进入到主界面后,点击“管理员登录”即可进行到后台管理的登录操作,在该功能测试中涉及到两个内容,分别是用户名、密码,我们将采用以下三组数据来进行测试。
- 用户名:admin 密码:1
- 用户名:admin 密码:2
- 用户名:owee 密码:123456
首先利用管理员的用户名和密码进行常规登录,在主页面中点击“管理员登录”进入管理员登录界面,输入第一组数据,登录后台成功,如下图6.3.1所示:
首先利用管理员的用户名和密码进行常规登录,在主页面中点击“管理员登录”进入管理员登录界面,输入第二组数据,由于密码错误,登录失败,如下图6.3.2所示:
首先利用管理员的用户名和密码进行常规登录,在主页面中点击“管理员登录”进入管理员登录界面,输入第三组数据,由于用户名不是admin,即用户权限不支持进行后台管理登录,登录失败。(如上图6.3.2所示)
6.3.2 分区管理测试
-
分区添加
点击“分区管理”框内的“分区添加”,管理员在“添加分区”的框内写入要新增的分区,点击“提交”即可完成分区的添加,我们在“添加分区”内添加“同好专区”,单击“提交”,如下图6.3.3所示,分区中多了“同好专区”这一分区。
-
分区编辑
单击“分区管理”,在右侧显示框内,点击“编辑”跳转至编辑分区,管理员在“编辑分区”内填入重新编辑好的分区名称,点击“提交”即完成编辑分区的功能操作。本次我们选择对“同好专区”进行编辑,点击“同好专区”右侧的“编辑”将“同好专区”修改为“吐槽专区”,点击提交,如下图6.3.4所示,“同好专区”已经被修改为“吐槽专区”。
-
分区删除
想要删除现有的分区测试,单击“分区管理”在右侧显示框内,点击“删除”,弹出窗口询问“确认删除”点击“确定”即完成删除操作,本次我们点击“吐槽专区”右侧的“删除按钮”,确定删除后如下图6.3.5所示,“吐槽专区”已经被删除。
6.3.3 版块管理测试
A、添加版块:
点击“版块管理”框内的“版块添加”,管理员在“添加版块”的框内写入要新增的版块,在“上级分区”内选择该板块所属的分区,完成之后点击“提交”即可完成在指定分区下版块的添加,对应数据库内新增一条信息。我们选择在“九重天动漫”分区下添加版块“活动专区”提交后发现在该分区下新增了“活动专区”版块,如下图6.3.6所示:
B、编辑版块:
若想对现存的分区进行重命名等重新编辑的操作,单击“版块管理”,在右侧显示框内,点击“编辑”跳转至编辑版块,管理员在“编辑版块”内填入重新编辑好的版块名称,并选择其上级分区,上级分区默认是未修改版块前所属的分区,点击“提交”即完成编辑版块的功能操作,我们将之前添加“活动专区”版块进行编辑,改为“近期活动”编辑版块如下图6.3.7所示:
C、删除版块:
想要删除现有的版块,单击“版块管理”在右侧显示框内,选定需要删除的版块,点击“删除”,弹出窗口询问“确认删除”点击“确定”即完成删除操作,我们将刚刚修改过的“近期活动”删除,执行操作之后,版块版块如下图6.3.8所示:
6.3.4 子版块管理测试
A、添加子版块:
点击“子版块管理”框内的“子版块添加”,管理员在“添加子版块”的框内写入要新增的版块,在“上级版块”内选择该子板块所属的版块,完成之后点击“提交”即可完成在指定版块下子版块的添加,我们在“动漫公社”版块下选择添加子版块“银魂”造作完成之后如下图6.3.9所示:。
B、编辑子版块:
若想对现存的分区进行重命名等重新编辑的操作,单击“子版块管理”,在右侧显示框内,点击“编辑”跳转至编辑子版块,管理员在“编辑子版块”内填入重新编辑好的子版块名称,并选择其上级版块,上级版块默认是未修改子版块前所属的分区,点击“提交”即完成编辑子版块的功能操作,我们将刚刚添加的子版块“银魂”修改为“鬼灯的冷彻”如下图6.3.10所示:。
C、删除子版块:
想要删除现有的版块,单击“子版块管理”在右侧显示框内,选定需要删除的子版块,点击“删除”,弹出窗口询问“确认删除”点击“确定”即完成删除操作,我们将刚刚修改过的子版块“鬼灯的冷彻”删除,子版块如下图6.3.11所示:
6.3.5 主题管理测试
后台帖子管理的功能主要包括帖子的查询和删除,在前台发布过的帖子,这里都有显示其具体内容,为了论坛的内容健康和谐,需要对不良信息的帖子进行删除操作,单击“主题管理”在右侧显示框内选定需要删除的主题,点击“删除”即可完成删除帖子的操作,我们选择刚刚发表的新帖子“九重天十周年社庆宣传第一弹”进行删除操作,完成之后帖子如下图6.3.12所示
6.3.6 用户管理测试
测试方法后台用户管理的功能主要包括查询系统用户的相关信息和删除用户,在前台注册成功的用户,在这里都有显示出来,为了论坛的秩序井井有条,对于散布不良信息或者蓄意发布无用帖子等不良行为的用户,管理员可以对用户进行删除操作。点击“用户管理”在右侧显示框内找到所删除用户的信息,点击“删除”即可删除该用户的信息,我们对刚刚注册的用户kochan进行删除操作,操作完成后用户如下图6.3.13所示:
6.4 测试结果及总结
(1)上述测试用例及结果总结
- 前台测试总结
表8 登录功能测试表
测试序号 | 用户名 | 密码 | 测试结果 |
1 | owee | 123456 | 成功 |
2 | owee | 123 | 失败 |
3 | kochan | 244 | 失败 |
表9 注册功能测试
序号 | 用户名 | 密码 | 确认密码 | | 真实姓名 | 测试结果 |
1 | Kochan | 244 | 244 | kochan@qq.com | D本K一 | 成功 |
2 | onno | 12345 | 123 | onno@163.com | 面包 | 密码不一致 |
3 | onno | 12345 | 12345 | 面包 | 邮箱为空 | |
4 | onno | 12345 | 12345 | onno@163.com | 真名为空 |
- 后台测试总结
表10 管理员登录功能测试表
测试序号 | 用户名 | 密码 | 测试结果 |
1 | admin | 1 | 成功 |
2 | admin | admin | 用户名或密码错误 |
3 | owee | 123456 | 用户名或密码错误 |
-
测试总结
经过上述的测试阶段之后,软件项目的功能大体上满足了用户的对项目的需求,测试工作宣告结束,在整个测试过程中,发现了软件项目中存在很多错误,并及时得到改正,减少了很多不必要的麻烦,使软件项目可以尽可能的完善。通过这次软件测试的经验,我深刻体会到软件测试的重要性,在以后的工作中,我 一定要重视并积极的完成测试,让自己的项目更加可靠、安全。
参考文献
- 耿乡义. JSP基础教程[M]. 北京:清华大学出版社,2004:101-103.
- 孙卫琴、李洪成.Tomat与Java Web开发技术详解[M]. 北京:电子工业出版社,2004:73-78.
- 赛奎春.JSP信息系统开发实例精选[M]. 北京:机械工业出版社,2006:66-72.
- 张金霞.HTML网页设计参考手册[M]. 北京:清华大学出版社,2006.
- 曹淑琴.基于JSP的网站建设[J]. 华北科技学院报,2007(2).
- 李振捷.JSP网站开发经典模块与实例精讲[M]. 北京:电子业出版社,2006.
- 王艳霞,陈长生.基于JSP的BBS论坛设计[J].才智,2010(25):90-91
[8] JH Goto,ML Puterman. Coffee, Tea, or ...?: A Markov Decision Process Model for Airline Meal Provisioning ;《Transportation Science》, 2004, 38(1):107-118
[9] XD Li,CS Poon,SC Lee,SS Chung,F Luk. Waste reduction and recycling strategies for the in-flight services in the airline industry; 《Resources Conservation & Recycling》, 2003, 37(2):87-99
[10] L Wang,B Liu,LU Minyan. A Modeling Language Based on UML for Modeling Simulation Testing System of Avionic Software; 《Chinese Journal of Aeronautics》, 2011, 24(2):181-194