技术开发 频道

软件测试技术在J2EE项目中的应用

  【IT168 技术文档】

  系统软件已深入到生活各方面,对软件质量的要求在不断提高,软件测试成为软件开发中一个重要部分。软件测试是使用为发现错误所选择的输入和状态的组合而执行代码的过程。包括白盒测试和黒盒测试。黒盒测试不考虑内部逻辑结构,只依据程序规格说明书,检查程序功能。白盒测试利用程序内部逻辑结构,设计或选择测试用例,对程序所有逻辑路径进行测试。J2EE应用开发越来越流行,并应用到各种大型电子商务中,这些电子商务对软件质量要求非常高,要是在应用中出现错误,会造成严重的损失。本文给出及J2EE项目开发时的测试过程,以及各测试阶段用到的测试工具。

  J2EE是一种利用java2平台来简化与企业解决方案的开发,部署和管理相关的复杂问题的体系结构。J2EE技术的基础是java2平台的标准版。 J2EE不仅巩固了标准版中的许多优点,还提供了对EJB,Servlet,JSP,XML的全面支持。J2EE包括四个层次,分别是客户层,web层,业务层和企业信息系统层。一个多层的分布式应用模型意味着根据功能应用逻辑被划分成组件,并可以在同一服务器或不同的服务器上安装组成J2EE应用的这些不同的组件。J2EE结构复杂,层次多,需求会不断更新,如何保证最终开发的质量变得至关重要。

  在极限编程思想中定义了两种测试的类型。1.单元测试,对系统内部模块的测试。为了适应J2EE平台,还发展出与J2EE容器紧密结合的整合测试。2.功能测试。在软件测试中还有一个经常听到的是性能测试。由于性能测试与客户的需求密不可分,将它归类于接受度测试的延伸应用。考虑到J2EE的结构和技术,不但要对其中用到的技术进行测试,还要测试各层之间的联系。

  下面对J2EE应用的测试过程进行具体介绍,主要包括对测试各阶段用到的测试类型和测试工具。

  单元是整个软件工程的基础,因此单元的质量是整个软件质量的基础。在J2EE开发中,最小可测试单位是封装的类或对象,JUnit是一个很好的单元测试工具。Junit的核心类别是Testcase,每一个testcase代表一个命令对象,Testcase包含数个测试方法。用来测试被测类别中成员方法的输出与预期的结果是否相同。Junit平台还有一个核心类别是testSuite,每个testSuite代表一个复合的对象,一个testSuite 可以由多个Testcase或多个testSuite组成。

  在单元测试的基础上,需要将所有的模块按照要求组装成系统。在开发过程中需要考虑的问题如下

  1.一个模块的功能是否对另一个模块的功能产生不利的影响。

  2.各个子功能组合起来,能否达到预期要求的父功能。

  因此在单元测试的同时可进行整合测试,发现并排除在模块连接中可能出现的问题。整合测试提供了J2EE容器的环境,可以快速轻易的检验出域对象与与 J2EE容器的互动行为是否合乎逻辑。因此整合测试的对象是以一个EJB,Servlet或JSP的程序代码为基本单元。Cactus就是为解决整合测试问题而诞生的工具。Cactus是Junit的一个扩展,但和Junit又有些不同,它分三种不同的测试类别:Jsp Testcase,Servlet testcase,filter testcase。Junit的测试代码仅在客户端,而cactus的测试代码有服务器和客户端两个部分,协同工作。

  功能测试检查在公共API边界处的代码,其目标是检验在用例中描述的行为,测试系统是否满足所需要的功能。每当完成一个阶段性的功能测试,也代表着完成了部分的系统功能。

  HttpUnit是为功能测试而发展起来的测试工具。HttpUnit是用java编写的虚拟浏览器,用来模拟浏览器的内部行为。HttpUnit平台模拟使用者浏览网站所发出的request对象,将其送到目的网站,等网站发出response对象传回给httpUnit。HttpUnit是一种黑箱作业形式的测试工具,因此只要专注如何编写模拟浏览器行为的测试代码即可。

  功能能否正确执行很重要,但多用户同时执行的效果又如何?这需要性能测试。在J2EE应用中,主要做的是压力测试。大多数压力测试检验应用程序能够在短时间内响应大量的用户请求。JMeter测试工具能够自动发送设定好的请求及跟踪应用程序的响应时间。通过分析测试报告能够找到J2EE应用程序的瓶颈,并对应用程序进行优化。

0
相关文章