使用 JdbcProxy 测试 Java 应用程序(下)

发表于:2008-11-18 17:13

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

 作者:郑溪龙、徐方    来源:IBM

#
java

  记录用于回放的 JDBC 调用过程

  方便开发人员和测试人员阅读的 JDBC 调用过程其记录形式不便于进行解析,因此并不能直接被用来回放的 JDBC 调用过程。为了简化准备数据的过程,JdbcProxy 还可以生成一种用于回放 JDBC 调用过程的,特别是易于在 HTTP 服务器上使用的记录文件。在运行新的程序之前,我们首先需要新建一个空的文件夹 output 用来存放 JdbcProxy 生成的一系列 request/response 文件,然后将 url 做以下修改,如 清单 3 所示。

  清单 3

String url = "jdbc:stubtracer:output:COM.ibm.db2.jdbc.app.DB2Driver:jdbc:db2:SAMPLE";

  URL 结构如下:

jdbc:stubtracer:<foldername>:<driver>:<url>

  其中:

   <foldername> 是输出 request/response 文件的位置;如果为空则将文件内容输出到控制台。

   <driver> 是数据库驱动名,该示例程序使用的是 DB2 的驱动。

   <url> 是数据源的 URL,该示例程序使用 jdbc:db2:SAMPLE,不需要用户名和密码。

  运行上述程序会在指定目录下生成 32 个以 request/response 开头的文本文件,如图 1所示。

图 1. request/response 文件

  这些文件包含了回放 JDBC 调用过程所需的所有请求和响应。以建立 Connection 的请求为例,该示例程序对数据库的第一个请求就是建立 Connection,这个过程记录在 request_0_0.txt 文件中,参见清单 4。其中文件名中的 2 个" 0 "分别代表本次 JDBC 调用的 id 和 status,调用的方法是 connect 。

  清单 4

<?xml version="1.0" encoding="UTF-8"?>
 <request>
   <class>java.sql.Driver</class>
   <id>0</id>
   <status>0</status>
   <method>connect</method>
   <parameter>
      <class>java.lang.String</class>
      <value>jdbc:db2:SAMPLE</value>
   </parameter>
   <parameter>
      <class>java.util.Properties</class>
      <value>{language=C}</value>
   </parameter>
 </request>

  JdbcProxy 会根据 request 文件中 id 和 status 的值找到对应的 response 文件,在本例中为 response_0_0.txt,参见清单 5。在 response_0_0.txt 中,我们看到已经新建了一个 java.sql.Connection 的对象,并且指定了下一个请求的 id 和 status 。

  清单 5

<?xml version="1.0" encoding="UTF-8"?>
 <response>
   <newstatus>1</newstatus>
   <returnvalue>
      <nl.griffelservices.proxy.stub.ProxyObject>
         <class>java.sql.Connection</class>
         <id>1</id>
         <status>0</status>
      </nl.griffelservices.proxy.stub.ProxyObject>
   </returnvalue>
 </response>

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

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号