关闭

软件测试与调试技术研究

发表于:2010-9-15 13:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  本文针对java语言编程中深受欢迎的极限编程(eXtreme Programming,简称XP)方法展开讨论,并结合项目对其中的软件测试与调试应用深入分析。极限编程是一种以编码为核心任务的轻量级的开发方法,以代码为中心的活动将存在于软件开发生命周期中的每个阶段中。极限编程是一种极为严格的开发方法,其重点在于代码评审,频繁测试,客户参与,快速反馈,持续重构,精练框架,持续性整合以便在开发过程的早期发现问题,时刻进行设计与再设计,还有持续计划。极限编程的四大价值与五个原则不得不提,四大价值:沟通、简单、反馈、勇气。他们是吸引人们的美酒。五个原则:提供快速反馈、简单假设、制造增量式的变化、包容变化、质保工作。这些则是获得美酒的原则。

  本文使用JUnit、Cactus、HTTPUnit、JMeter、JUnitPer这些测试工具,并结合Ant来详细讲解极限编程中全方位的测试过程。从名字就可以看出JUnit用于单元测试。Cactus用于容器服务测试。HTTPUnit用于功能测试。JMeter用于应用程序性能测试。JUnitPerf用于进行负载测试。

  一、论述

  或许你还没有在大学校园的项目中写过真正意义上的测试,测试是每一个项目必不可少的步骤,如果你不做测试,你怎么确定某个功能能够正常运行?如果你不做测试,你怎么知道代码在改变后仍然能够运行?

  先写代码还是先写测试,也许你还没有考虑这个问题。在极限编程中,先写测试是推荐的策略。如果你先写好了测试,那么写代码的工作将会是轻易的,因为你已经对自己该做什么,怎么做一清二楚了。下面我们将论述测试工具的特点。

  JUnit的单元测试

  为了证明程序代码能工作,有些人使用System.out.println()来监视他们的程序代码。这种方法有三个问题:卷动盲目性、主观性及缺乏自动化。这种方法可能此刻有效,然而随着时间的推移,有可能失效,甚至过一段时间后,你也忘了他们的意义,成为程序中无用的部分。

  JUnit的格言是:Keep the bar green to keep the code clean,就如下图所示:当

  图中的条栏绿色时,表示没有错误,测试通过,代码无误。

  用户的测试类必须继承JUnit的TestCase或TestSuite,有几个方法继承于父类,那就是setUp()、tearDown(),在setUp()中初始化变量,在tearDown()中释放测试过程中使用的资源。像C++语言中的Assert一样,JUnit主要利用Assert为前缀的方法测试是否成功。其中有assertEquals()、assertFalse()、assertNotNull()、assertNotSame()、assertNull()、assertSame()、assertTrue()。

  Cactus的容器服务测试

  Cactus的框架工具用来测试J2EE代码,我们已经做过了单元测试,但是没有任何代码会存在于真空中,仅仅单元测试是不够的。我们已经有了用于隔离测试的模拟对象(Mock Object)和整合测试的工具,但是J2EE对于容器服务是如此严重的依赖,没有一个与部署容器交互的烟雾测试(smoke test)将会使项目背负重大的风险。

  Cactus提供了Servlet、JSP自定义标记和Servlet Filters(过滤器)的容器内测试,支持对诸如HttpServletRequest、PageContext和FilterChain对象的访问。同时Cactus是JUnit的扩展,继承了JUnit测试类。

  HTTPUnit的功能测试

  HTTPUnit的功能测试,或者说是黑盒测试,并不对程序代码的片断做测试,而是在外部询问Web服务器并检查接收的响应。测试整个Web应用程序是一件令人畏惧的任务,存在很多不同的用户行为组合,而尝试去重复所有这些用户行为是困难的事,而HTTPUnit提供的自动化测试无疑将会减小程序员的工作量。

  HTTPUnit可以看成是两个功能团:

  1、一个维持状态、提供发送请求和接收响应功能的Web客户端

  2、简化验证响应内容的各种方法

  从本质上来说,HTTPUnit是模拟Web浏览器,并且HTTPUnit API可以模拟浏览器的许多行为,包括:

  ● 表单提交

  ● JavaScript

  ● HTTP 认证

  ● Cookie

  JMeter的性能测试

  在项目的设计阶段,我们会得到一系列重要的性能标准要求,诸如系统运行的硬件平台、所支持的目标并发用户数量等。我们不能在项目快结束时才开始进行性能测试工作,而应该一开始就逐步为系统建立跟踪手段,以确定系统的瓶颈。

  JMeter能够加载测试以及为HTTP、FTP和带有JAVA数据库连接支持的RDBMS做性能测试。JMeter可以用来测试不同负载下的系统性能,如大量的更新操作、大量的浏览操作、大量的事务处理或同时在不同的负载组合下工作,你可以从他的图表和齿线得到可视化的系统性能反馈。

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号