电子政务应用已成为今天人们普遍关注的话题,随着各地“数字城市”、“数字政府”、“数字xxxx”等等数字化信息的应用正在中国政府部门里蓬勃开展,随着应用的普及和应用的规模化,对政务系统运行平台和应用开发工具的选择越来越重要,特别是软件开发过程中,为了保证电子政务系统的质量,应用系统开发的软件测试方法和工具的选择尤其受到关注,因为它直接影响到应用的好坏和项目能否顺利实施,严重的可能影响到系统实施的成败。
市建设经济运行信息管理系统是建立在j2EE框架基础上,其BLE(BizLogicHandler)是J2EE框架中的Domain层的实现;BPO(Business Persistence Object)是DAO与BO的结合体,对应J2EE中Persistence层的实现;Web层开发采用Struts框架。涉及各政府职能部门,和下属乡镇政府,辖区大中型企业、重点企业和新招商企业等诸多干系人,需要实现系统查询、问题反映、信息上报,信息审查,网上办公,跟踪督办,即时通讯,短信提醒,报表打印等主要功能。
对于应用系统的测试,我们划分为单元测试、部件组合测试、功能测试、性能测试和验收测试。其中重点关注了单元测试和性能测试,下面分别介绍。
单元测试阶段,我们采用开发人员自己写测试代码、小组内同级审查和测试组抽查相结合的测试策略。要求单元测试应用紧接在编码编译通过之后,鼓励进行测试先行(即先编写测试用例,然后用测试驱动代码的实现)。
单元测试工具采用junit测试框架。因为,我们的开发语言是JAVA,开发工具采用的是MYECLIPSE,而junit是当前JAVA自动化单元测试的实际标准,MYECLIPSE对junit提供了很好的支持。
对Action部分使用StrutesTestCase进行单元测试,StrutsTestCase for Junit是对标准Junit中TestCase的扩展,可以对Strus framework的测试提供方便。我们使用了其中的Mock object方法,测试Action objects、mappings、form beans以及forwords declarations,它不需要servlet引擎及web application container的环境,而且StrutsTestCase提供了许多“validation methods”,方便测试案例编写。我们采取的原则是,尽可能的把逻辑代码从jsp/servlet/action中移出,使用Junit作单元测试。该系统单元测试中面临两个脱离,脱离BizDelegate(封装了对Session Fa?ade 的调用过程,降低Application 层与Services层的耦合性)对action进行测试,脱离BPO对BLH进行单元测试,为此我们使用EaseMock技术,为一个接口创建一个模仿对象,将模仿对象作为参数来调用域代码,具体为测试者提供了抽取方法和工厂方法。
为了保证测试的质量,我们测试之初就设置了专门的测试小组。在单元测试阶段,该小组监控所有的测试活动和任务的执行情况,对测试的总体进行跟踪、控制和报告,对于类的提交,我们制定了严格的审核过程。首先,开发人员测试自己的类;然后小组内审查人员审查相应的类,打上已审查标记;最后,测试小组审核和抽查已审查的测试类和代码;测试小组还需要根据审核和抽查情况进行统计分析,调节测试资源分布。
在性能测试阶段,我们分为四个阶段实施;启动阶段、准备阶段和分析阶段。测试工具采用Rational Test Manager 2003,测试环境包括local computer和Test agent,Local computer作为测试平台的控制主机,负责整个测试的计划、设计、实现、执行和评估,作为Test agent的机器,统一接收由Local computer,最后由Local computer生成统计报告。在测试中我们也发现响应时间慢的问题,在经过对服务器的调优,以及相应部分的代码优化、SQL优化之后,性能得到明显改善。
下面简单介绍性能测试中我们对遇到的问题所采取的策略:
(1)该系统采用的是J2EE架构的一种模式,GUI客户端直接和服务器连接,采用的是BEA公司独有的T3协议,而且前自动化测试工具能够录制和回放脚本的大都是基于HTTP协议的浏览器客户端方式。对此,我们采取自动录制和手工编写脚本相结合的方式,对于浏览器客户端的测试,采用自动测试工具录制脚本;对于GUI客户端的测试,用JAVA配以性能测试工具提供的API包,手动或半手动编写测试脚本。
(2)该系统业务功能繁多,测试需要准备的数据量大,而测试时间短。我们分析出业务具有代表性的重要和关键用例,并且利用开发过程已有的客户端程序,减少测试脚本的开发量。
(3)该系统渠道多,与外部系统接口复杂,而且系统采用多家公司产品,如果出现问题,分析和定位困难。对此,我们利用性能测试检验客户和系统之间的交互,包括浏览器和GUI客户端等方式的连接。同时在进行性能测试的时候,将内部各种系统,与其连接的各外部系统的日志和监控工具全部打开,记录各部分的处理过程,这样当发现性能问题时,便能及时的定位瓶颈出现的位置;测试环境准备和测试时,请相关厂家的工程师提供现场支持,进行性能监控和问题分析。
由于采用了适当的测试方法、测试策略和测试工具,总体来看,我们的测试取得了不错的效果,有力地保证了项目的质量,XX市经济运行信息系统现已正式稳定的运行,也受到用户的好评,这是我们重视软件开发过程的测试保证软件质量的结果。当然也有不足的地方,具体存在以下几个方面;
(1)开发人员的测试观念还不够强,虽然我们制定了良好的单元测试策略,但开发人员并没有很好的执行,以至于在以后阶段的测试和运行中受害不浅。
(2)每种测试之前,我们都组织力量充分准备了测试方案,但是在测试数据的准备上,由于系统复杂性等多方面的原因,有些数据准备的不够完备。
要解决以上问题,我认为首先还是要树立开发人员的测试理念,只有从具体的开发人员做起,才能整整提高测试的质量,其次还要坚决贯彻执行项目中确立的测试方法和策略。
我们从实践中领会到,测试确实可以在保证软件质量方面起到很大的作用。但同时我们也认识到,测试中还有很多领域和知识需要继续研究和实践,新技术的发展对测试也提出了新的要求和挑战,我们将在测试领域不断探索,不断创新,为我国电子政务建设和企业信息化建设多做贡献。
作者:孟晓微 来源:科学与财富 2010年11期
更多论文请到千里马论文发表网