java测试代码性能 java编写完测试代码 怎么运行( 六 )


一、测试环境准备
1. 被测服务器准备,根据测试目的,搭建需要的数据库服务器,确保数据库能够正常访问,正常操作;
2. Java代码的准备,无论使用哪种IDE,只要能够编写访问数据库的class就可以,形式可以是j2se,也可以是j2ee,因为在操作时只使用class的部分方法 , 所以j2ee就可以了;
3. LR的脚本调试,把java的class导入到脚本调试模式,根据需要添加事务以及其他操作 。
二、编写数据库访问
1. 使用myeclipse , 创建web project,创建如下图的包目录:
Java文件中包含各种访问数据库的方法 。
需要注意的是,class中的方法必须是public static,否则LR中无法调用 。由于创建的是j2ee程序,所以不用main函数,在web中就可以进行功能验证 。
确认class中的方法编写完成,创建一个web.jsp文件 , 如下:
导入class
声明类,并实例化,直接调用刚才编写的3个方法 , 因为这3个方法是直接对数据库进行操作,不需要实参,也没有返回值,所以直接实现即可 。
此时启动web服务,在浏览器中输入jsp的地址,直接刷新页面,就可以调用这3个方法,如果正确,就会对相应的表进行操作,如果不正确 , 则需要修改相应的代码 。
2. LR脚本准备:
LR脚本实际上就是对访问代码的调用,关键在于需要根据测试场景划分不同的脚本布局 。
例如:在myEclipse里,我们只编写了一个class,其中包含三个方法 , 如果在执行性能测试时,这三个方法相互独立 , 互不干涉,则最简单的划分方法是 , 创建三个java user,每个java user中包含一个方法,做三份脚本,场景执行时分别进行调用 。如果三个方法之间有相互关系,则需要根据实际情况,把有关联的方法放在一起,具体情况可按实际灵活分配 。
因为已经将class文件进行编译发布了,所以可以在“java2postgres\WebRoot\WEB-INF\classes\\lr\test”目录中找到对应的class文件,
复制这个文件,找到LR的目录:HP\LoadRunner\classes\\lr\test\ 如果没有文件夹,按相同的内容创建 。
在LR脚本中进行引包操作:
将需要执行的java类以及方法,放在action中,可根据实际测试情况和所需要验证的内容,具体调试代码 。
在这里可以像编写普通LR脚本一样,添加事务或 *** 点等内容 。
由于是通过JDBC对数据库进行访问,因此要在java user中加载jdbc驱动 。
运行时设置中,增加jdbc驱动,需要注意的是java user使用的本地jdk , 需要至多1.6版......
利用 Oracle DMS 测量 Java 应用程序性能如果您开发了一个运行在 Oracle 应用服务器 (OracleAS) 或 Oracle Containers for J EE (OC J) 上的 Java 应用程序 那么您可以使用 Oracle 的动态监控服务 (DMS) 来测量您的应用程序的性能 本文分几个简单的步骤说明了如何准备好您的应用程序 以进行性能测量 并如何读取结果 Oracle DMS 提供了一组 Java 和 C API 来为 OracleAS 和其它的 Oracle 产品测量和报告性能量度 状态 信息和诊断信息 Oracle 产品调用 DMS 函数库例程来计算量度 并把它们输出到 Oracle 企业管理器中 有关监控和优化 OracleAS 及其组件的性能的详细信息 请参见 Oracle Application Server g 性能指南 DMS 测量 API 小 简单而高效 为了创建定制的量度 开发人员在事件发生时 重要的时间段开始和结束时 或者当预先计算的性能量度改变了它们的值时通知 DMS 然后 DMS 将量度发送到 Oracle 企业管理器 将它们转储到文本文件中 或者进行格式化 以适合 web 浏览器 下面进行简要介绍 首先 您将需要确定您要测量应用程序的动作(可能以某种层次表示 例如 读时间 和 写时间 可以结合构成 总时间 ) 然后创建一个准备这些定时 事件 的结构的专用 Java 类 然后在 Java 应用程序的相关位置上 调用这个专用类中的方法来启动和停止相关的定时器 然后运行应用程序(运行多次以采集实际的平均值) 并通过一个专门的 URL 来查看时间测量的结果 下面更详细地介绍了这个过程中的步骤第 步 确定您想要测量的应用程序部分 下面是根据我自己经验而编写的示例 为了进行概念验证 我的小组需要显示 Java 应用程序中的一个特定序列的步骤可以在 秒内执行 我们想要测量总时间 以及每一个步骤花费多少时间(从而我们能够指出需要改进的地方) 我们想要测量以下步骤所花费的时间(三层的层次结构) 总时间 检索数据(不需部分求和) 读取数据库 写入文件 计算 计算的初始化 重复计算步骤 提交结果 图形表示 字母数字表示 这些测量必须在应用程序的每次运行中进行 以便您能够比较它们在不同情况下的值 并为每一个应用程序组件计算平均时间 就我们而言 输入参数之一是计算步骤的数目 因此我们运行了几次 每次执行不同数量的步骤 因此 我们能够指出哪些部分有一致的性能 以及如果我们增加步骤数 对于其它的部分需要增加多少时间第 步 安装 dms jar 找到 dms jar(在 [OC J_HOME]\lib 或 [OracleAS_HOME]\lib 中) 并确保它在您的应用程序的类路径中(特别在开发环境中 因为如果您部署到 OracleAS 或 OC J 中 那么在部署环境中它将已经存在) 如果您使用 JDeveloper 那么您可以将 dms jar 作为一个资料库添加到 JDeveloper 项目设置中 以实现这一目的 为您的项目创建一个新的资料库 然后在它的类路径中为 dms jar 增加一个项目(指定到 dms jar 的完整路径)第 步 创建类 PerformanceMeasurement 在您的 Java 应用程序中创建一个新的 Java 类 在该类中您可以准备好测量层次结构 列表 显示了一个准备第 步中说明的层次结构的示例类 这个示例使用 DMS PhaseEvent 感应器( 定时器 )来测量在代码的完整特定部分中所花费的时间 并且它使用 DMS Nouns( 树结构 )来在一个层次结构中组织 PhaseEvent 感应器 这种层次结构类似于文件系统中的目录结构第 步 测量应用程序 现在 在应用程序中的适当位置开始和停止相应的定时器已非常容易(用 DMS 的术语 这称为 instrumenting ) 您所需要做就是初始化一个 PerformanceMeasurement 对象 然后将这个对象传递给需要控制这些定时器中的某一个启动和停止的 Java 例程 下面是一个示例代码段 // Initialize Performance Measurement objectp = new PerformanceMeasurement( MyApplication_ +numberOfSteps+ _steps );p start(p TOTAL);// And now the actual steps in the caseDataHandler getData(p);doCalculations(p);generateChart(p);您可以按您的需要频繁调用 p start 和 p stop 只要您确保对于某个定时器的每一次启动操作 总存在对该定时器的停止操作 例如 p start(p READING);// Load the Oracle JDBC driver and connect to the database p stop(p READING);p start(p WRITING);// Initialize output file p stop(p WRITING);p start(p READING);// Get first batch of data p stop(p READING);p start(p WRITING);// Write first batch of data p stop(p WRITING);记住您还必须手动启动和停止 Total 和 Subtotal 定时器第 步 捕获一个页面在浏览器中完全显示的时刻 在我们的概念验证中 将在浏览器中显示图形和字母数字数据所需的时间包括在我们的测量中是必需的 我们的页面相当大 因此完全加载它要花一些时间 我们使用一个 Javascript 陷阱来捕获结束时间 Javascript 在客户机上执行 因此如果您将一段脚本放在页面的末尾 那么只有页面在客户机上完全加载时才执行 在那段脚本中 我们调用了另一个页面 该页面调用了一个 Java 方法来停止相应的定时器 下面是一个示例 JSP 代码段 jsp:useBean id= myApplicationBean class= MyApplicationBean scope= session ! Do all the calculation stuff first % myApplicationBean doSteps(); myApplicationBean p start(myApplicationBean p GRAPHICAL); % show chart % myApplicationBean p stop(myApplicationBean p GRAPHICAL); myApplicationBean p start(myApplicationBean p ALPHANUMERIC);% show alphanumerical data % myApplicationBean p stop(myApplicationBean p ALPHANUMERIC);%script window open( Stop jsp stop width= height= );/script/JSP:USEBEANJSP:USEBEAN class=MyApplicationBeanid=myApplicationBean scope= session 下面是 Stop jsp 的源代码 %@ page contentType= text/;charset=windows %jsp:useBean id= hopCalBean class= HopCalBean scope= session /Stop!!!!% myApplicationBean stop(); %myApplicationBean stop() 方法包含以下 Java 代码 /* * This method will be called after everything has been done*/public void stop(){p stop(p PRESENTATION_TOTAL);p stop(p TOTAL);p writeLogFile( d://temp//MyApplicationPerformance log );}第 步 运行应用程序 现在将经过测量的应用程序部署到 OracleAS 或 OC J 中 并运行它 DMS 将采集时间统计数据 如果您想比较几次运行的时间测量结果 请多次运行您的应用程序(可能用不同的变量 变量可以在初始化 PerformanceMeasurement 对象时放到运行名称中)第 步 在浏览器中查看 DMS 输出 如果您编写了对 p writeLogFile 的调用 那么您可以查看该日志文件的内容 它包含原始的 DMS 数据 通过在应用服务器上调用一个特定的 URL 可以找到一种更加清晰的数据表示方法 用您的 Java 应用程序使用的应用服务器的主机名和端口号来替换 [host:port] 对于独立的 OC J 使用//[host:port]/dms /Spy 对于 OracleAS 使用//[host:port]/dmsoc j/Spy 您将看到如下页面educity cn/img_ / / / gif正如您所看到的 DMS 还收集 JDBC JVM 和 OC J 的统计数据 并且无需任何进一步的调整 关于内置性能量度的一个列表 请参见 Oracle Application Server g 性能指南的附录 A 要查看某种类别的详细信息 请单击左边框中的名称educity cn/img_ / / / gif总结 如果您以一种结构化的方式安装了 DMS Nouns 和 DMS PhaseEvent Sensors(利用一个 PerformanceMeasurement 类) 那么利用 DMS 您可以容易地测量您的 Java 应用程序的性能 并且获得性能时间测量结果的一种易读的结构化输出 lishixinzhi/Article/program/Java/JSP/201311/19348

推荐阅读