11.数据库测试计划教程
现在,我们将了解如何配置,运行和分析针对MySQL数据库的测试结果。这个示例是关于MySQL的,但是可以使用任何其他类型的数据库(如Oracle,MongoDB或其他数据库)来完成。
- 安装MySQL
如果您的计算机中未安装MySQL,则可以从http://dev.mysql.com/downloads/下载并安装MySQL服务器,这非常容易。
- 下载MySQL驱动程序
下载mysql connector(mysql-connector-java-5.1.6
)并将其复制到jmeter的lib目录中C:\jmeter\apache-jmeter-2.11\lib
。
- 启动MySQL
启动数据库服务器,以便您可以对其进行查询。
- 建立资料库
您可以根据需要创建数据库,这只是一个非常简单的数据库的示例:
create database jmeter;``use jmeter;``create table jmeter_stuff(``id` `int, name varchar(50), description varchar(50));``insert into jmeter_stuff(``id``, name, description)VALUES(1, ``"dani"``, ``"the boss"``);``insert into jmeter_stuff(``id``, name, description)VALUES(2, ``"topo"``, ``"the worker"``);``insert into jmeter_stuff(``id``, name, description)VALUES(3, ``"tupac"``, ``"the other"``);
- 创建测试计划
执行与上一章相同的操作,以使用新的线程组,JDBC配置类型的新配置元素和JDBC类型的新请求(采样器)创建测试计划,还添加一个侦听器以解析和查看结果与前面示例中的结果相同。唯一的区别是采样器的类型,在本例中为JDBC采样器。
- JDBC采样器
给变量绑定池赋予一个有意义的名称,并编写一些SQL语句:
select` `* from jmeter_stuff;
- JDBC连接配置
将新的JDBC连接配置添加到采样器。
右键单击JDBC采样器->添加连接配置
如下更改参数:
Variable Bound to Pool= same name as ``in` `the sampler``Database URl=jdbc:mysql:``//localhost``:3306``/jmeter``JDBC Driver class=com.mysql.jdbc.Driver``username=``password=``set` `username and password to your MySql credentials.
- 保存计划并执行。
- 使用之前配置的侦听器查看结果。
您可以按照与HTTP请求测试计划相同的方式来验证和检查输出,还可以添加预处理器,后处理器,断言或您可能需要的任何其他类型的元素。
在这种情况下,输出是select语句的结果。
您也可以通过在采样器配置中更改SQL语句来使用这种采样器来更新数据。
以下屏幕截图是有关请求响应结果的基本信息:
在本章中,我们将解释如何将JMeter与JUnit结合使用。从负载和性能的角度来看,这提供了非常强大的机制来执行功能测试。
- 首先,您需要创建一个Junit测试,如下所示:
public` `class` `JMeterTest``{`` ``public` `JMeterTest()`` ``{`` ``// just for testing purposes`` ``System.out.println( ``"calling the constructor"` `);`` ``}`` ``@Before`` ``public` `void` `setUp() ``throws` `Exception`` ``{`` ``// just for testing purposes`` ``System.out.println( ``"calling setup"` `);`` ``}`` ``@After`` ``public` `void` `tearDown() ``throws` `Exception`` ``{`` ``// just for testing purposes`` ``System.out.println( ``"calling tearDown"` `);`` ``}`` ``@Test`` ``public` `void` `testMe()`` ``{`` ``for``( ``int` `i = ``0``; i < ``30``; i++ )`` ``{`` ``// just asserting randomly in order to check what happens in each case`` ``int` `randomNumber = (``int``)( Math.random() * ``100` `);`` ``System.out.println( randomNumber );`` ``assertEquals( ``0``, randomNumber % ``2` `);`` ``}`` ``}``}
该测试主要包含几个断言,以检查JMeter如何使用它们,而本教程的目的不是详细解释单元测试或JUnit。
- 将测试添加到JUnit目录
将单元测试打包到jar文件中,然后将其复制到目录中jmeter/lib/junit
。确保jar文件包含.class字节码以及要JMeter执行的测试。在本文的最后,您可以找到一个带有pom.xml的Java项目,您可以将其直接用于生成JMeter可以使用的jar文件。您只需要编译代码:
mvn compile
或者,您可以直接在Eclipse或您喜欢的IDE中将项目导出为JAR文件,包括字节码和生成的文件。
- 添加一个JUnit采样器请求
像我们之前看到的那样创建一个测试计划,并添加一个JUnit请求类型的采样器:Add Sampler-> Junit Request并对其进行配置,以便执行您刚刚在上面创建的测试中想要的方法。
在我们的例子中,我们将执行基于JUnit 4的方法,但是您也可以使用JUnit 3通过为此选择复选框来执行此操作。
- 像上一章一样添加一个侦听器以查看结果
- 运行测试计划
- 查看结果
在这里,我们可以看到刚刚创建的JUnit测试的结果:
正如我们在上面的屏幕截图中看到的,我们所有的测试(1个测试,10个循环)都失败了。这是预期的行为,因为我们希望测试失败。实际上,我们刚刚编写的单元测试没有功能意义,并且没有用。它的目的只是演示如何配置JMeter以使用此类单元测试。
本章介绍的内容可能对使用JMeter来测试应用程序的功能和业务逻辑非常有用,并且具有该应用程序提供的所有好处,这也非常有趣,因为它可以将Java语言的所有优点与Java的多语言功能相结合。JMeter。
13.记录HTTP测试
现在我们将解释如何配置JMeter来记录HTTP请求。为此,我们需要在计算机上安装Firefox,我使用的是32版。
- 获取Firefox以使用JMeter代理
转到Firefox网络设置,然后选择手动代理选项,并将其设置为服务器localhost和端口8080(实际上这会加深您的JMeter配置)。之后,检查选项“将此代理服务器用于所有协议”。
- 首先,我们像以前一样创建测试计划。
我们添加一个新的线程组,并为其命名。我们将线程组配置为具有50个线程,启动周期和循环数等于1时为10秒。
- 添加HTTP请求默认值。
在我们刚创建的线程组上,添加一个新的Config元素,然后选择“ HTTP Request Defaults”。
您应在此处输入要测试的服务器名称。
- 添加录音控制器
现在,我们向工作台添加了一个记录控制器。
选择工作台,而不是测试计划,并添加“测试脚本记录器”类型的“非测试元素”。
现在,您应该独立于测试计划来独立存储工作台。保存测试计划不会保存工作台。
如下配置记录器:
- 添加计时器
如果您希望可以在记录器中添加一个计时器(常数),则记录的每个HTTP请求都将使用此计时器。
- 开始录音
通过单击记录器的启动按钮,您将启动JMeter代理服务器。
- 记录应出现
如果您访问网页以发出示例HTTP请求,例如使用Firefox访问http://www.oviedin.com(按照本章第一步的说明进行配置后),您将看到不同的内容。条目将显示在测试计划中的“记录控制器”下。
这些记录实际上是在查询前面提到的网页时完成的HTTP请求。仅存储在“记录的测试脚本”中配置的过滤器中包含的记录。它们可以在您的测试计划中重新配置和使用。
14. JMeter插件
高级用户和用例可以使用不同的插件,其中有些需要额外的安装,而有些则不需要。
有很多非常有用的插件,它们允许使用高级选项来解析结果,并使用诸如http://jmeter-plugins.org/wiki/GraphsGeneratorListener/的图表来分析结果。
为了使JMeter与您的持续集成工具连接并直接从CI软件(如Jenkins的“ https://wiki.jenkins-ci.org/display/JENKINS/Performance+Plugin ”)中运行JMeter测试计划,还提供了可用的插件。
正如我所说的那样,插件的数量在增加,不可能一一列举,在尝试自己实现一个插件之前,最好先检查一下互联网上是否有可用的插件。
您也可以为JMeter创建自己的插件,但这超出了本文的范围。
15. JMeter最佳做法
在本文结束之前,我们将写下一些非常有用的技巧和最佳实践:
- 尽管JMeter UI是用于配置和创建不同测试计划的非常有用且直观的工具,但是经验丰富的用户还是希望使用非GUI模式来执行它们并存储其结果。
您可以通过键入以下内容来执行此操作:
jmeter -n -t test.jmx -l test.jtl.
假设测试是您要执行的测试。您必须提供存储测试的完整路径。
- 侦听器可以很好地解析结果,但是它们也会占用大量资源,并且会占用大量内存,因此最好在配置中使用尽可能少的侦听器。标志-l全部删除它们,建议在不需要侦听器时使用。
- 在结果树视图中选中“仅查看错误”标志,可能您只对检查测试期间发生的错误感兴趣。
- 在同一采样器中使用变量和循环,而不是配置仅由它们使用的变量和参数来区分的多个相似样本。
- 创建Junit测试计划时,建议提供有意义的错误和断言消息,以使JMeter输出尽可能地易于理解,这是在这种情况下完全适用的单元测试的一般建议。
- 使用Stop
(Control + '.')
。如果可能,这将立即停止线程。 - 使用关机
(Control + ',')
。这要求线程在任何当前工作结束时停止。其他工具提示可从https://wiki.apache.org/jmeter/JMeterShortcuts获得。
16.总结
这就是全部。我们看到了如何安装JMeter以及如何配置它以执行各种类型的测试,例如HTTP请求,针对数据库的测试以及针对Junit的功能测试。JMeter提供了许多其他类型的测试和功能,但本教程未涵盖。本教程的目的是对应用程序进行完整描述,并说明如何配置您的第一个测试计划。我们还解释了JMeter UI的主要部分以及如何使用它,以及JMeter随附的测试计划元素。在上一章中,我们提到了使用不同的插件扩展JMeter的可能性。对于有高级需求的经验用户来说,这是非常有趣的一点。
17.资源
- http://jmeter.apache.org/
- http://jmeter-plugins.org/
- href =“” http://en.wikipedia.org/wiki/Software_performance_testing
- http://www.tutorialspoint.com/jmeter/
- http://jmeter.apache.org/usermanual/get-started.html(第2.4.3节“非指导模式”)
- https://wiki.apache.org/jmeter/FrontPage