mirror of https://github.com/apache/jmeter.git
505 lines
17 KiB
HTML
505 lines
17 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<!--
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
this work for additional information regarding copyright ownership.
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
(the "License"); you may not use this file except in compliance with
|
|
the License. You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
-->
|
|
|
|
<!-- Content Stylesheet for Site -->
|
|
|
|
|
|
<!-- start the processing -->
|
|
<!-- ====================================================================== -->
|
|
<!-- Main Page Section -->
|
|
<!-- ====================================================================== -->
|
|
<html>
|
|
<head>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
|
|
|
|
|
|
<meta name="author" value="Martin Ramshaw">
|
|
<meta name="email" value="mramshaw@alumni.concordia.ca">
|
|
|
|
<title>JMeter - User's Manual: Building a Database Test Plan</title>
|
|
</head>
|
|
|
|
<body bgcolor="#ffffff" text="#000000" link="#525D76">
|
|
<table border="0" cellspacing="0">
|
|
<!-- TOP IMAGE -->
|
|
<tr>
|
|
<td>
|
|
<!-- Need to specify height otherwise iframe seems to grab extra -->
|
|
<iframe src="http://www.apache.org/ads/halfbanner.html" height="102"
|
|
style="border-width:0; float: left" frameborder="0" scrolling="no"></iframe>
|
|
</td>
|
|
<td align="left">
|
|
<a href="http://jakarta.apache.org"><img width="505" height="48" src="../images/jakarta-logo.gif" alt="Jakarta" title="Jakarta" border="0"/></a>
|
|
</td>
|
|
<td align="right">
|
|
<a href="http://jakarta.apache.org/jmeter/"><img width="221" height="102" src="../images/logo.jpg" alt="JMeter" title="JMeter" border="0"/></a>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<table border="0" width="100%" cellspacing="4">
|
|
<tr><td colspan="2">
|
|
<hr noshade size="1"/>
|
|
</td></tr>
|
|
|
|
<tr>
|
|
<!-- LEFT SIDE NAVIGATION -->
|
|
<td width="20%" valign="top" nowrap="true">
|
|
<p><strong>About</strong></p>
|
|
<ul>
|
|
<li> <a href="../index.html">Overview</a>
|
|
</li>
|
|
<li> <a href="../changes.html">Changes</a>
|
|
</li>
|
|
<li> <a href="../known_bugs.html">Known Bugs</a>
|
|
</li>
|
|
<li> <a href="../license.html">License</a>
|
|
</li>
|
|
<li> <a href="http://wiki.apache.org/jakarta-jmeter/JMeterCommitters">Contributors</a>
|
|
</li>
|
|
</ul>
|
|
<p><strong>Download</strong></p>
|
|
<ul>
|
|
<li> <a href="http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi">Download Releases</a>
|
|
</li>
|
|
<li> <a href="../nightly.html">Developer (Nightly) Builds</a>
|
|
</li>
|
|
</ul>
|
|
<p><strong>Documentation</strong></p>
|
|
<ul>
|
|
<li> <a href="../usermanual/index.html">User Manual</a>
|
|
</li>
|
|
<li> <a href="../api/index.html">Javadocs</a>
|
|
</li>
|
|
<li> <a href="../localising/index.html">Localisation (Translator's Guide)</a>
|
|
</li>
|
|
<li> <a href="../building.html">Building JMeter and Add-Ons</a>
|
|
</li>
|
|
<li> <a href="http://wiki.apache.org/jakarta-jmeter">JMeter Wiki</a>
|
|
</li>
|
|
<li> <a href="http://wiki.apache.org/jakarta-jmeter/JMeterFAQ">FAQ (Wiki)</a>
|
|
</li>
|
|
</ul>
|
|
<p><strong>Tutorials (PDF format)</strong></p>
|
|
<ul>
|
|
<li> <a href="../usermanual/jmeter_distributed_testing_step_by_step.pdf">Distributed Testing</a>
|
|
</li>
|
|
<li> <a href="../usermanual/jmeter_proxy_step_by_step.pdf">Recording Tests</a>
|
|
</li>
|
|
<li> <a href="../usermanual/junitsampler_tutorial.pdf">JUnit Sampler</a>
|
|
</li>
|
|
<li> <a href="../usermanual/jmeter_accesslog_sampler_step_by_step.pdf">Access Log Sampler</a>
|
|
</li>
|
|
<li> <a href="../extending/jmeter_tutorial.pdf">Extending JMeter</a>
|
|
</li>
|
|
</ul>
|
|
<p><strong>Community</strong></p>
|
|
<ul>
|
|
<li> <a href="http://jakarta.apache.org/site/getinvolved.html">Get Involved</a>
|
|
</li>
|
|
<li> <a href="http://jakarta.apache.org/site/mail.html">Mailing Lists</a>
|
|
</li>
|
|
<li> <a href="http://jakarta.apache.org/site/cvsindex.html">SVN Repositories</a>
|
|
</li>
|
|
</ul>
|
|
</td>
|
|
<td width="80%" align="left" valign="top">
|
|
<table>
|
|
<tr>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="index.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Index</font></a></div>
|
|
</td>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="build-ftp-test-plan.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div>
|
|
</td>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="build-adv-web-test-plan.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Prev</font></a></div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#525D76">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="building"><strong>7. Building a Database Test Plan</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
In this section, you will learn how to create a basic
|
|
|
|
<a href="build-test-plan.html">
|
|
Test Plan
|
|
</a>
|
|
to test a database server.
|
|
You will create ten users that send five SQL requests to the database server.
|
|
Also, you will tell the users to run their tests three times. So, the total number
|
|
of requests is (10 users) x (2 requests) x (repeat 3 times) = 60 JDBC requests.
|
|
To construct the Test Plan, you will use the following elements:
|
|
|
|
<a href="test_plan.html#thread_group">
|
|
Thread Group
|
|
</a>
|
|
,
|
|
|
|
<a href="../usermanual/component_reference.html#JDBC_Request">JDBC Request</a>
|
|
,
|
|
<a href="../usermanual/component_reference.html#Graph_Results">Graph Results</a>
|
|
.
|
|
</p>
|
|
<p><table border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" cellpadding="2">
|
|
<tr><td> This example uses the MySQL database driver.
|
|
To use this driver, its containing .jar file must be copied to the JMeter
|
|
|
|
<b >
|
|
lib
|
|
</b>
|
|
directory (see
|
|
<a href="get-started.html#classpath">
|
|
JMeter's Classpath
|
|
</a>
|
|
|
|
for more details).
|
|
</td></tr>
|
|
</table></p>
|
|
</blockquote>
|
|
</p>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#525D76">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="adding_users"><strong>7.1 Adding Users</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
The first step you want to do with every JMeter Test Plan is to add a
|
|
|
|
<a href="test_plan.html#thread_group">
|
|
Thread Group
|
|
</a>
|
|
element. The Thread Group
|
|
tells JMeter the number of users you want to simulate, how often the users should
|
|
send requests, and the how many requests they should send.
|
|
</p>
|
|
<p >
|
|
Go ahead and add the ThreadGroup element by first selecting the Test Plan,
|
|
clicking your right mouse button to get the Add menu, and then select
|
|
Add --> ThreadGroup.
|
|
</p>
|
|
<p >
|
|
You should now see the Thread Group element under Test Plan. If you do not
|
|
see the element, then "expand" the Test Plan tree by clicking on the
|
|
Test Plan element.
|
|
</p>
|
|
<p >
|
|
Next, you need to modify the default properties. Select the Thread Group element
|
|
in the tree, if you have not already selected it. You should now see the Thread
|
|
Group Control Panel in the right section of the JMeter window (see Figure 7.1
|
|
below)
|
|
</p>
|
|
<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img src="../images/screenshots/jdbctest/threadgroup1.png"><br>
|
|
<font size="-1">
|
|
Figure 7.1. Thread Group with Default Values
|
|
</font></td></tr></table></p>
|
|
<p >
|
|
Start by providing a more descriptive name for our Thread Group. In the name
|
|
field, enter JDBC Users.
|
|
</p>
|
|
<p><table border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" cellpadding="2">
|
|
<tr><td> You will need a valid database, database table, and user-level access to that
|
|
table. In the example shown here, the database is 'mydb' and the table name is
|
|
'Stocks'.
|
|
</td></tr>
|
|
</table></p>
|
|
<p >
|
|
Next, increase the number of users to 10.
|
|
</p>
|
|
<p >
|
|
In the next field, the Ramp-Up Period, leave the the default value of 0
|
|
seconds. This property tells JMeter how long to delay between starting each
|
|
user. For example, if you enter a Ramp-Up Period of 5 seconds, JMeter will
|
|
finish starting all of your users by the end of the 5 seconds. So, if we have
|
|
5 users and a 5 second Ramp-Up Period, then the delay between starting users
|
|
would be 1 second (5 users / 5 seconds = 1 user per second). If you set the
|
|
value to 0, then JMeter will immediately start all of your users.
|
|
</p>
|
|
<p >
|
|
Finally, enter a value of 3 in
|
|
the Loop Count field. This property tells JMeter how many times to repeat your
|
|
test. To have JMeter repeatedly run your Test Plan, select the Forever
|
|
checkbox.
|
|
</p>
|
|
<p><table border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" cellpadding="2">
|
|
<tr><td> In most applications, you have to manually accept
|
|
changes you make in a Control Panel. However, in JMeter, the Control Panel
|
|
automatically accepts your changes as you make them. If you change the
|
|
name of an element, the tree will be updated with the new text after you
|
|
leave the Control Panel (for example, when selecting another tree element).
|
|
</td></tr>
|
|
</table></p>
|
|
<p >
|
|
See Figure 7.2 for the completed JDBC Users Thread Group.
|
|
</p>
|
|
<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img src="../images/screenshots/jdbctest/threadgroup2.png"><br>
|
|
<font size="-1">
|
|
Figure 7.2. JDBC Users Thread Group
|
|
</font></td></tr></table></p>
|
|
</blockquote>
|
|
</p>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#525D76">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="adding_requests"><strong>7.2 Adding JDBC Requests</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
Now that we have defined our users, it is time to define the tasks that they
|
|
will be performing. In this section, you will specify the JDBC requests to
|
|
perform.
|
|
</p>
|
|
<p >
|
|
Begin by selecting the JDBC Users element. Click your right mouse button
|
|
to get the Add menu, and then select Add --> Config Element --> JDBC Connection Configuration.
|
|
Then, select this new element to view its Control Panel (see Figure 7.3).
|
|
</p>
|
|
<p >
|
|
Set up the following fields (these assume we will be using a local MySQL database called test):
|
|
</p>
|
|
<ul >
|
|
|
|
|
|
<li >
|
|
Variable name bound to pool. This needs to uniquely identify the configuration. It is used by the JDBC Sampler to identify the configuration to be used.
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Database URL: jdbc:mysql://localhost:3306/test
|
|
</li>
|
|
|
|
|
|
<li >
|
|
JDBC Driver class: com.mysql.jdbc.Driver
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Username: guest
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Password: password for guest
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
<p >
|
|
The other fields on the screen can be left as the defaults.
|
|
</p>
|
|
<p >
|
|
JMeter creates a database connection pool with the configuration settings as specified in the Control Panel.
|
|
The pool is referred to in JDBC Requests in the 'Variable Name' field.
|
|
Several different JDBC Configuration elements can be used, but they must have unique names.
|
|
Every JDBC Request must refer to a JDBC Configuration pool.
|
|
More than one JDBC Request can refer to the same pool.
|
|
|
|
</p>
|
|
<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img src="../images/screenshots/jdbctest/jdbc-config.png"><br>
|
|
<font size="-1">
|
|
Figure 7.3. JDBC Configuration
|
|
</font></td></tr></table></p>
|
|
<p >
|
|
Selecting the JDBC Users element again. Click your right mouse button
|
|
to get the Add menu, and then select Add --> Sampler --> JDBC Request.
|
|
Then, select this new element to view its Control Panel (see Figure 7.4).
|
|
</p>
|
|
<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img src="../images/screenshots/jdbctest/JDBCRequest.png"><br>
|
|
<font size="-1">
|
|
Figure 7.4. JDBC Request
|
|
</font></td></tr></table></p>
|
|
<p >
|
|
In our Test Plan, we will make two JDBC requests. The first one is for
|
|
Eastman Kodak stock, and the second is Pfizer stock (obviously you should
|
|
change these to examples appropriate for your particular database). These
|
|
are illustrated below.
|
|
</p>
|
|
<p><table border="1" bgcolor="#bbbb00" width="50%" cellspacing="0" cellpadding="2">
|
|
<tr><td> JMeter sends requests in the order that you add them to the tree.
|
|
</td></tr>
|
|
</table></p>
|
|
<p >
|
|
Start by editing the following properties (see Figure 7.5):
|
|
|
|
<ul >
|
|
|
|
|
|
<li >
|
|
Change the Name to "Kodak".
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Enter the Pool Name: MySQL (same as in the configuration element)
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Enter the SQL Query String field.
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</p>
|
|
<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img src="../images/screenshots/jdbctest/JDBCRequest2.png"><br>
|
|
<font size="-1">
|
|
Figure 7.5. JDBC Request for Eastman Kodak stock
|
|
</font></td></tr></table></p>
|
|
<p >
|
|
Next, add the second JDBC Request and edit the following properties (see
|
|
Figure 7.6):
|
|
|
|
<ul >
|
|
|
|
|
|
<li >
|
|
Change the Name to "Pfizer".
|
|
</li>
|
|
|
|
|
|
<li >
|
|
Enter the SQL Query String field.
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</p>
|
|
<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img src="../images/screenshots/jdbctest/JDBCRequest3.png"><br>
|
|
<font size="-1">
|
|
Figure 7.6. JDBC Request for Pfizer stock
|
|
</font></td></tr></table></p>
|
|
</blockquote>
|
|
</p>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
|
<tr><td bgcolor="#525D76">
|
|
<font color="#ffffff" face="arial,helvetica,sanserif">
|
|
<a name="adding_listener"><strong>7.3 Adding a Listener to View/Store the Test Results</strong></a>
|
|
</font>
|
|
</td></tr>
|
|
<tr><td>
|
|
<blockquote>
|
|
<p >
|
|
The final element you need to add to your Test Plan is a
|
|
|
|
<a href="component_reference.html#listeners">
|
|
Listener
|
|
</a>
|
|
. This element is
|
|
responsible for storing all of the results of your JDBC requests in a file
|
|
and presenting a visual model of the data.
|
|
</p>
|
|
<p >
|
|
Select the JDBC Users element and add a
|
|
<a href="../usermanual/component_reference.html#Graph_Results">Graph Results</a>
|
|
|
|
listener (Add --> Listener --> Graph Results).
|
|
</p>
|
|
<p><table border="0" cellspacing="0" cellpadding="0"><tr><td><img src="../images/screenshots/jdbctest/graph-results.png"><br>
|
|
<font size="-1">
|
|
Figure 7.7. Graph results Listener
|
|
</font></td></tr></table></p>
|
|
</blockquote>
|
|
</p>
|
|
</td></tr>
|
|
<tr><td><br></td></tr>
|
|
</table>
|
|
<table>
|
|
<tr>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="index.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Index</font></a></div>
|
|
</td>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="build-ftp-test-plan.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Next</font></a></div>
|
|
</td>
|
|
<td bgcolor="#525D76">
|
|
<div align="right"><a href="build-adv-web-test-plan.html"><font size=-1 color="#ffffff" face="arial,helvetica,sanserif">Prev</font></a></div>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
<br>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr><td colspan="2">
|
|
<hr noshade size="1"/>
|
|
</td></tr>
|
|
<tr><td colspan="2">
|
|
<div align="center"><font color="#525D76" size="-1"><em>
|
|
Copyright © 1999-2008, Apache Software Foundation
|
|
</em></font></div>
|
|
</td></tr>
|
|
</table>
|
|
</body>
|
|
</html>
|
|
<!-- end the processing -->
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|