Jmeter测试接口

 写在前面:如今一段时间项目比较紧,所以那篇小说出来的晚一些。明日写的是在日记里面含盛名-值对的字典,跟踪活动并记下上下文音讯,过滤事件,定制日志音讯的格式,自定义Sink,自定义Formatter等。

文首要针对http接口举办测试,使用Jmeter工具完毕。

一.在日记里面富含名-值对的字典:

  Jmter工具设计之初是用来做品质测试的,它在完成对各样接口的调用方面曾经做的可比早熟,由此,这次直接行使Jmeter工具来成功对Http接口的测试。

在日记消息里面,咱们得以包罗名-值对那样的字典。那时首先须要创建二个Hashtable,通过Key-Value的方法把要记录的始末传入。示例代码如下:

 

 1起名 1起名 2/**////创造3个日志项
 2起名 3            LogEntry log = new LogEntry();
 3起名 4            
 4起名 5起名 6            /**////创建名-值对
 5起名 7            Hashtable logtable = new Hashtable();
 6起名 8            logtable[“key1”] = “value1”;
 7起名 9            logtable[“key2”] = “value2”;
 8起名 10            logtable[“key3”] = “value3”;
 9起名 11            
10起名 12            log.Message = this.txt_LogMessage.Text;
11起名 13            log.Category = Category.General;
12起名 14            log.Priority = Priority.Normal;
13起名 15            
14起名 16起名 17            /**////写入日志
15起名 18            Logger.Write(log,logtable);

壹 、开发接口测试案例的完整方案:

输出后的公文:在此间我们用了Text Formatter

  • 率先步:我们要分析出测试要求,并得到支付提供的接口表明文档;
  • 第三步:从接口表明文书档案中收拾出接口测试案例,里面要包蕴详细的入参和出参数据以及鲜明的格式和检查点。
  • 其三步:和支付一起对接口测试案例举办业评比审。
  • 第5步:结合开发库,准备接口测试案例中的入参数据和出参数据,并整理成csv格式的文件。
  • 第四步:结合接口测试案例文书档案和csv格式的数额文书档案,做接口测试案例的自动化案例开发。

起名 19
二.跟踪活动并记下上下文音信:

 

盯住应用连串的位移是一项常见的效用,大家须要把运动的初叶时间和得了时间以及活动的任何的消息记录下来。日志和监测应用程序块支持通过移动ID来跟踪一项活动,活动ID能够在代码中内定,也足以透进程序块来自动生成,程序块自动记录活动的序曲时间和完工作时间间。活动跟踪由Tracer类来提供。示例代码如下:

贰 、接口自动化适用场景:

1起名 20using(new Tracer(“UI Events”))
2起名 21起名 22            起名 23{
3起名 24                Logger.Write(“Troubleshooting message”);
4起名 25            }

 近日统一筹划的自动化接口测试案例有多个运转情况:

出口后的文书:同样大家用了Text Formatter

  1.
测试前置、开发自测:二个新的自动化接口测试案例开发完毕后,直接发给接口对应的开发,布署在支付本土环境举行,一旦付出确认完成接口开发,就从头执行接
口测试案例,基本上能够实时得到测试结果,方便开发快速做出判断。【开发本土运营的点子便是打开JMeter工具,导入JMX文件,先导进行可。】

起名 26

  2.
回归测试:开发本土测试通过后,或任何供给手工业测试通过后,把自动化的接口测试案例做分类整理,挑选出必要纳入到回归测试中的案例,在不断集成环境重新准
备测试数据,并把案例纳入到不停集成的job中来,那几个用于回归的接口测试案例须求配置到不断集成平台活动运转。

三.过滤事件:

 

在日记和监测应用程序块里面,帮助两种办法的过滤事件:基于优先级过滤事件和依照项目过滤事件。过滤的进度发生在日记项传递给分发策略在此之前。在入门篇里我们通晓,各样日志音信都会有2个优先级,大家得以在代码中钦命或私下认可值为-1。大家能够透过安顿 Client
Setting使低于有些优先级的新闻被过滤掉,只记录有个别项指标消息依旧过滤掉全体有个别项指标日记项。

③ 、接口测试环境准备

在下边包车型大巴图中,日志项为0和1的消息将不被记录。

起名 27
Client Setting的CategoryFilterSettings属性决定有些项目标日志是被记录依旧被过滤掉。大家得以自行开始展览设置:

 

起名 28
在下图中,”UI 伊夫nts”类其他日志将不被记录。

④ 、创制工程:

起名 29
四.定制日志音信的格式:

  1、打开Jmeter:下载好Jmeter后,双击bin目录下的jmeter.bat文件:

Formatter接受贰个日志项的并赶回一个格式化的字符串,应用程序块格式化将字符串传给Sink,Text Formatter
使用模版生成格式化字符串,在选取配置中得以有五个 Text
Formatters,每一种有温馨的沙盘同时我们也足以定制自身的 Formatter。

  起名 30

日志项遵照其连串导向到目标地指标地规定了 Formatter
和吸收格式化日志项的 Sink。

  

起名 31
Text Formatter 有贰个模板配置属性。

  贰 、添加线程组:在“测试安排”上点击鼠标右键–>添加–>threads(Users)–>线程组,添加测试场景设置组件,接口测试中貌似安装为二个“线程数”,依据测试数据的个数设定“循环次数”。

起名 32

  起名 33

模版编辑器定制日志项的格式, {参数}由日志项的值填充。

 

起名 34
五.创办和选用自定义Sink:

  3、添加“HTTP Cookie管理器”:

在日记和监测应用应用程序块里面,允许我们自定义三个Sink,而且动用情势要比其他的应用程序块中的自定义简单的多。上面大家现实看一下:

  起名 35

1.添加对应用程序块的引用:

  

Microsoft.Practices.EnterpriseLibrary.Configuration.dll

  肆 、添加“Http请求默许值”组件,当被测系统有唯一的拜访域名和端口时,那些组件很好用:

Microsoft.Practices.EnterpriseLibrary.Logging.dll

  起名 36

2.添加命名空间:

 

1起名 37using Microsoft.Practices.EnterpriseLibrary.Configuration;
2起名 38using Microsoft.Practices.EnterpriseLibrary.Logging;
3起名 39using Microsoft.Practices.EnterpriseLibrary.Logging.Sinks;
4起名 40using Microsoft.Practices.EnterpriseLibrary.Logging.Distributor.Configuration;

  伍 、在“HTTP
请求暗许值”组件配置页面,填写被测系统的域名和端口,http请求的兑现包版本以及现实磋商项目,线程组里的全体“HTTP
萨姆pler”可暗中认可使用此设置。

3.编写制定代码:

   起名 41

大家的自定义Sink要延续LogSink这么些基类,同时要重载Initialize()和SendMessageCore()那五个抽象方法

 


  6、在“线程组”里添加“HTTP 请求”的Sampler

 1起名 42using System;
 2起名 43using Microsoft.Practices.EnterpriseLibrary.Configuration;
 3起名 44using Microsoft.Practices.EnterpriseLibrary.Logging;
 4起名 45using Microsoft.Practices.EnterpriseLibrary.Logging.Sinks;
 5起名 46using Microsoft.Practices.EnterpriseLibrary.Logging.Distributor.Configuration;
 6起名 47
 7起名 48namespace EnterpriseLogging
 8起名 49起名 50起名 51{
 9起名 52起名 53    /**//// <summary>
10起名 54    /// 成效表达:自定义Sink
11起名 55    /// </summary>
12起名 56    public class ConsoleSink:  LogSink
13起名 57起名 58    起名 59{
14起名 60        private LoggingConfigurationView configView;
15起名 61 
16起名 62        public override void Initialize(ConfigurationView configurationView)
17起名 63起名 64        起名 65{
18起名 66            this.configView = configurationView as LoggingConfigurationView;
19起名 67        } 
20起名 68 
21起名 69        protected override void SendMessageCore(LogEntry logEntry)
22起名 70起名 71        起名 72{
23起名 73            CustomSinkData sinkData;
24起名 74            sinkData = (CustomSinkData) this.configView.GetSinkData(this.ConfigurationName); 
25起名 75 
26起名 76起名 77            /**//// Delimit each log entry
27起名 78            Console.WriteLine((string) sinkData.Attributes[“delimiter”]); 
28起名 79 
29起名 80起名 81            /**//// Write the formatted log entry to the Console
30起名 82            Console.WriteLine(FormatEntry(logEntry));
31起名 83        } 
32起名 84    }
33起名 85}
34起名 86

  起名 87

4.开辟配置工具,并打开配置文件。在Sink节点上,大家采取Custom
Sink。同时起名为Console Sink:

 


   柒 、在HTTP请求设置页面,录入被测接口的详细音信,包括请求路径,对应的伸手方法,以及随请求一起发送的参数列表:

起名 88
5.单击TypeName右侧的省略号,打开Type Selector对话框。单击Load an Assembly
…,并浏览挑选大家工程文件的DLL。最终选项Console Sink类。

   起名 89

起名 90
6.单击Attributes 打开NameValueItem Collection
艾德itor。单击Add创设3个新的NameValueItem,起名为delimiter,并安装它的Value值(这几个值能够自由安装,比如大家设置************************)。

 

起名 91
7.挑选General,创设一个Destination,并设置下列属性:

  八 、设置检查点:在被测接口对应的“HTTP 请求”上,添加“响应断言”

·   Formatter = Text
Formatter,

   起名 92

·   Name = Console Destination

 

·   Sink = Console
Sink

  玖 、在设置页面上添加对相应结果的正则表明式存在性判断即可:

8.把主次输出的点子设为控制台的点子,运营程序。

  起名 93

六.创建和动用自定义Formatter:

 

1.添加如下的命名空间:

  十 、添加监听器:有利于查看运营后的结果

1起名 94using System.Globalization;
2起名 95using System.IO;
3起名 96using System.Xml;
4起名 97using Microsoft.Practices.EnterpriseLibrary.Configuration;
5起名 98using Microsoft.Practices.EnterpriseLibrary.Logging;
6起名 99using Microsoft.Practices.EnterpriseLibrary.Logging.Distributor.Configuration;
7起名 100using Microsoft.Practices.EnterpriseLibrary.Logging.Formatters;

  起名 101

2.以Hands On Lab里面的XmlFormatter为例,在自定义Formatter时大家需求继续ConfigurationProvider类和促成
IlogFormatter接口,并且须求重载Initialize()那一个抽象方法。

   运维结果:

 1起名 102using System;
 2起名 103using System.Globalization;
 3起名 104using System.IO;
 4起名 105using System.Xml;
 5起名 106using Microsoft.Practices.EnterpriseLibrary.Configuration;
 6起名 107using Microsoft.Practices.EnterpriseLibrary.Logging;
 7起名 108using Microsoft.Practices.EnterpriseLibrary.Logging.Distributor.Configuration;
 8起名 109using Microsoft.Practices.EnterpriseLibrary.Logging.Formatters;
 9起名 110
10起名 111namespace LoggingSink
11起名 112起名 113起名 114{
12起名 115起名 116    /**//// <summary>
13起名 117    /// 作用表明:自定义Formatter
14起名 118    /// </summary>
15起名 119    public class XmlFormatter : ConfigurationProvider, ILogFormatter
16起名 120起名 121    起名 122{
17起名 123        private LoggingConfigurationView configView = null;
18起名 124 
19起名 125        public override void Initialize(ConfigurationView configurationView)
20起名 126起名 127        起名 128{
21起名 129            this.configView = (LoggingConfigurationView) configurationView;
22起名 130        } 
23起名 131 
24起名 132        public string Format(LogEntry log)
25起名 133起名 134        起名 135{
26起名 136            using (StringWriter sw = new StringWriter(CultureInfo.InvariantCulture))
27起名 137起名 138            起名 139{
28起名 140                XmlTextWriter w = new XmlTextWriter(sw);
29起名 141                w.Formatting = Formatting.Indented;
30起名 142                w.Indentation = 2; 
31起名 143                w.WriteStartDocument(true);
32起名 144                w.WriteStartElement(“logEntry”);
33起名 145                w.WriteAttributeString(“Category”, log.Category);
34起名 146                w.WriteAttributeString(“Priority”, log.Priority.ToString(CultureInfo.InvariantCulture)); 
35起名 147                w.WriteElementString(“Timestamp”, log.TimeStampString);
36起名 148                w.WriteElementString(“Message”, log.Message);
37起名 149                w.WriteElementString(“EventId”, log.EventId.ToString(CultureInfo.InvariantCulture));
38起名 150                w.WriteElementString(“Severity”, log.Severity.ToString(CultureInfo.InvariantCulture));
39起名 151                w.WriteElementString(“Title”, log.Title);
40起名 152                w.WriteElementString(“Machine”, log.MachineName);
41起名 153                w.WriteElementString(“AppDomain”, log.AppDomainName);
42起名 154                w.WriteElementString(“ProcessId”, log.ProcessId);
43起名 155                w.WriteElementString(“ProcessName”, log.ProcessName);
44起名 156                w.WriteElementString(“Win32ThreadId”, log.Win32ThreadId);
45起名 157                w.WriteElementString(“ThreadName”, log.ManagedThreadName);
46起名 158                w.WriteEndElement();
47起名 159                w.WriteEndDocument(); 
48起名 160                return sw.ToString();
49起名 161            }
50起名 162        } 
51起名 163    }
52起名 164}
53起名 165

  起名 166

对此自定义的Formatter大家就介绍到此刻了,它的利用和一般的Formatter没有大的界别,只可是在创设Formatter时大家须要创造多少个Custom
Formatter,在那边小编就不多写了。

  

 结束语:那篇日记和监测应用程序块的进阶篇文章就到此地了,希望能给初学的心上人一些支持。前边笔者会写缓存应用程序块的施用。

  上述手续完毕了3个简便测试案例的创始,复杂测试案例均在此基础上增添完成。使用Jmeter工具开发的接口测试案例,多少个子系统提议坐落同五个“测试安插”中,流程测试能够透过“线程组”来区分,那样也有利于设定分裂的测试数据个数。比较独立的接口,能够统一放在三个线程组内,顺序完结测试。  

 

  流程性接口的测试:即便要测试的接口能够构成1个流程,只须要各类添加多少个“HTTP
请求”的Sampler,各请求之间能够领到供给在上下文传递的数额作为参数,以管教流程中数量的一致性。

 

 

 

使用CSV Data Set Config:

  1、添加CSV Data Set Config:

  起名 167

 

  二 、配置参数:

  起名 168

  

  •   Filename:文件名,指保存参数化数据的文件目录,能够相对如故相对路径。

  起名 169

  •   File
    encoding:文件的编码格式,能够运用电脑自带的记录本另存为时选取编码格局即可
  •   Variable
    Names(comma-delimited):参数名称(如:有几列参数,其中就写多少个参数名称,每一个名称中间用分隔符分割,分隔符在上边的“Delimitet”中定义,为了和文书中的“,”对应,那里也用“,”分割每一种参数名,引用方法:${username},${password}
  •   Delimitet:定义分隔符,那里定义有些分隔符,则在“Variable
    Names”用那里定义的相间符分割参数。
  •   Allow quote data:选项选为“true”的时候对全角字符的拍卖出现乱码 
  •   Recycle on EOF:是还是不是循环读入,因为CSV Data Set
    Config1遍读入一行,分割后存入若干变量中付出2个线程,假诺线程数当先文本的记录行数,那么可以挑选起来再度读入

  

  ③ 、使用变量:

  起名 170

 

② 、使用Jmeter函数帮手:

  一 、点击 选项–>函数帮手 调出函数助理对话框

  2、选择 _CSVRead
函数(下图第①个框)

  三 、函数参数:

    1)第3个参数:填写文件路径。

    2)第②个参数:文件列号是从0起首的,第②列0、第壹列① 、第2列二 、依次类推,然后点击【生成】按钮,则会自动生成大家供给的参数化函数。

    3) 复制生成的参数化函数, copy进程需求利用的地点即可。

  起名 171

 

 

 

另外,在Jmeter的bin\templates目录上边有些模板可供就学参考,那些都以十一分正确的素材:

起名 172

 

 

 

 

一 、成立工程、引包

1、创建JAVA工程

2、引入Jmeter中lib\ext基础包:ApacheJMeter_java.jar、ApacheJMeter_core.jar

3、引入Jmeter日志包:jorphan.jar,logkit-2.0.jar,commons-logging-1.1.1.jar,avalon-framework-4.1.4.jar

④ 、引入httpclient-4.3.4.jar(是一套http协议落到实处包)

起名 173

Jmeter用到的4个类:

Arguments

 

void

 

getDefaultParametersSampleResult

runTestJavaSamplerContext context) 类似于LR的Action
( context) 初始化方法,类似于LR的init和Junit中的setUp()

和Junit中的tearDown()

实践的先后顺序为:getDefaultParameters( context)
–> 
runTestJavaSamplerContext context)
–> (JavaSamplerContext context)

一 、addArgument(“name”, “value”)    定义参数

② 、sampleStart()  
 定义事务的起头,类似于L本田UR-V的lr_start_transaction,和L途观一样事情间不要放毫不相关代码

三 、sampleEnd()
   定义事务的收尾,类似于LLX570的lr_end_transaction

四 、setSuccessful(true、false)
 
 设置运行结果的功成名就或失利,Jmeter总计成功战败的次数,在联谊报告中可知反映。

  •   
  • import java.io.IOException;   
  •   
  • import org.apache.http.client.ClientProtocolException;   
  • import org.apache.jmeter.config.Arguments;   
  • import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;   
  • import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;   
  • import org.apache.jmeter.samplers.SampleResult;   
  •   
  • public class Jmeter_GetSearchSuggestion extends AbstractJavaSamplerClient {   
  •   
  • private static String label = “Jmeter_GetSearchSuggestion “;    //定义label名称,突显在jmeter的结果窗口  
  • private String url;  
  • private String data;  
  •   
  • public void setupTest(){  
  • //定义测试起初值,setupTest只在测试开端前使用  
  • System.out.println(“setupTest”);  
  • }  
  •   
  • @Override  
  • public SampleResult runTest(JavaSamplerContext arg0) {  
  •   
  • url = arg0.getParameter(“url”);  
  • data = arg0.getParameter(“data”);  
  • SampleResult sr;  
  • sr = new SampleResult();  
  • sr.setSampleLabel(label);  
  •   
  • TestApiGetSearchSuggestion t = new TestApiGetSearchSuggestion();  
  • sr.sampleStart();  
  • try {  
  • //调用被压测接口的法子  
  • t.PostJson(url, data);  
  • sr.setSuccessful(true);  
  • } catch (ClientProtocolException e) {  
  • sr.setSuccessful(false);  
  • e.printStackTrace();  
  • } catch (IOException e) {  
  • sr.setSuccessful(false);  
  • e.printStackTrace();  
  • }  
  •   
  • sr.sampleEnd(); // jmeter 甘休总结响应时间标记  
  • return sr;  
  • }  
  •   
  • public void teardownTest(JavaSamplerContext arg0){  
  • super.teardownTest(arg0);  
  • }  
  •   
  • public Arguments getDefaultParameters(){  
  • //参数定义,展现在前台,也足以不定义  
  • Arguments params = new Arguments();  
  • params.addArgument(“url”, “http://gapp.test.com/merchandise/GetSearchSuggestion“);  
  • params.addArgument(“data”, “data={\”token\”: \”aaaaaaaaaa\”,\”body\”: {\”keywords\”: \”蓝月亮\”}}”);  
  • return params;  
  • }  
  •   
  • }  

三 、main函数测试成功后,打成jar包,放到%Jmeter_Home%\lib\ext目录中即可

三 、运营用例

1、运行%Jmeter_Home%\bin\jmeter.bat

贰 、添加线程组,Java请求、查看结果树、聚合报告

起名 174

③ 、执行后的结果为

起名 175

Tips:

快捷键

Ctrl+福睿斯运维用例、Ctrl+E清除运维结果

 

 

 

应用JMeter举行负荷测试——终极指南

2014-12-26   出处:ImportNew
 作/译者:张涛  

 

那篇教程商量的是JMeter,它是一款基于Java的、集合了多少个应用程序、具有特定用途的载荷和性质测试工具。

本篇首要涉嫌的情节:

  • 解释一下JMeter的用途
  • JMeter的兑现情势以及利用的技能
  • 设置与安顿
  • 介绍用户界面包车型地铁基本特征
  • 详见介绍不一致的测试安顿的安插格局
  • 何以剖析结果数据
  • 论及多少个重要的极品实践

全部的例子都以基于Java 8 update 0.20,Eclipse Luna 4.4, JMeter 2.11,
MySQL Community Server 5.6.21的付出环境。那我们就初叶吧!

目录

引言
选拔的技艺
课程内容简介
安装
用户界面
可用的呼吁
测试布置和测试组件
实践顺序
运营与截至
HTTP请求的测试安排
MySQL测试陈设
JUnit Request测试安排
记录测试
插件
一流实践
总结
下载
资源

引言

JMeter使用了分化技术和钻探,是一款能够拓展示公布局和实施负载测试、品质测试和压力测试的工具。

它亦可模拟分歧类型的伸手,例如各连串型的数据库,FTP, HTTP, HTTPS
或然别的的服务端应用。

最棒先来打听一下之类概念:

  • 负载测试:
    那类测试使系统或然应用程序在事先设计好的可是气象下测试运转。那类测试用来评估体系大概程序在极其条件下的行为。
  • 属性测试:
    这种测试被用来检查和测试系统的习性表现,包蕴特定情景下,系统的响应能力和平静。
  • 压力测试:
    那类测试通过载入更加多的外部能源,并使系统组件超越其所设定的能力限制,试图使系统挂掉。

JMeter最初的用途是用来测试web应用的,但是它的法力已取得扩展,近期一度得以本着绝超过一半的次第开展测试,同时可以在你的程序中展开职能测试。

采取的技艺

JMeter是一款Java桌面应用程序,它的用户界面接纳Swing Java
API达成。基于这两点,JMeter是2个跨平台工具,能够运行在其余安装了Java虚拟机的操作系统(Windows,
Linux, Mac)的装置上。
它的框架扶助并发和多线程只怕线程组的举办。这对于配置负载测试和压力测试万分有效。
它是可扩张的,提供了汪洋的可用插件。
JMeter是Apache软件基金会下的八个子项目,是完全免费和开源的(http://www.apache.org/licenses/)。

课程内容简介

那篇小说是本着这几个并未JMeter使用经验的开发人士和软件设计职员,介绍怎么着行使JMeter的学科。

还要针对可能区别的配备和测试布署,提供了一些例证和应用说明。在下3个章节中,大家将相会到哪些设置JMeter,并计划、运转它,如何保存和分析区别测试布署的结果。

安装

为了JMeter在你的电脑上安装并运行,你须求根据如下步骤实行操作:

  • 率先必须设置java环境。供给在您的微机上安装JRE
    1.6可能更高版本。只要到Oracle官网下载并设置适合您的系统的安装包: http://www.oracle.com/technetwork
    /java/javase/downloads/index.html。
  • 设置JAVA_HOME环境变量,使其针对性jre的设置目录。Windows用户而言:
1
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_20

瞩目设置科学你的Java版本。

  • 将java编写翻译路径添加到系统路径下。Windows用户而言,将C:\Program
    Files\Java\jdk1.7.0_25\bin
    添加到系统变量Path底部。

下一场测试java环境在您的配备上是或不是安装成功,使用如下命令行:

1
java -version

应该出口接近如下新闻:

1
2
3
java version"1.8.0_20"
Java(TM) SE Runtime Environment (build1.8.0_20-b26)
Java HotSpot(TM)64-Bit Server VM (build25.20-b23, mixed mode)
1
2
3
4
5
6
7
8
apache-jmeter-2.9
apache-jmeter-2.9bin
apache-jmeter-2.9docs
apache-jmeter-2.9extras
apache-jmeter-2.9lib
apache-jmeter-2.9libext
apache-jmeter-2.9libjunit
apache-jmeter-2.9printable_docs
  • 下一场您就足以进来到C:\jmeter\apache-jmeter-2.11\bin(对于Windows用户),执行jmeter.bat
  • 能够看到JMeter GUI的起步界面:

起名 176

GUI概述

JMeter的GUI卓殊直观易用。有文件处理的通用菜单,例如:新建,打开,保存,另存为等。还有运营和平息测试布置,配置的可用的菜单项。每二个测试
布署,线程组,测试陈设节点(大家将会在下一章看到愈来愈多那地点的情节)都得以通过点击鼠标右键,提供不一致的内外文菜单选项。

也能够更改用户界面的语言,有过多言语可供选用。

正如作者辈所说的,图形用户界面是可怜直观和易用的,为各种菜单和动作提供了易用领会的工具提示。除外,暂时不谈它的质量,这为何JMeter是那样宽广利用?因为它很简单理解,并且易学。

可用的伏乞

JMeter大约提供其余一种系统的测试配置。总的来说,下列协议被含有在内:

  • Web: HTTP, HTTPS网站 ‘web 1.0′ web 2.0 (ajax, flex 和 flex-ws-amf):
    大家将来会看到什么测试叁个秘密的网页及其行为
  • Web 服务: SOAP / XML-RPC.
  • 经过JDBC驱动的数据库。差不离协理其余一种数据库,你必要的正是叁个适度的驱动程序包,并放置在JMeter安装目录的不易地点。大家继续将做二个MySQL数据库测试。
  • 路径: LDAP.
  • 据他们说JMS的面向信息的劳务
  • 应用POP3, IMAP, SMTP商业事务的邮件服务.
  • FTP服务
  • 运用JUnit和Java应用程序的实行的意义测试

测试安顿与组件

大抵,使用JMeter可以展开如下操作:创设,配置,执行测试陈设及结果分析。测试布置是对已陈设的当地或远程服务器(或客户端)的呼吁集执行的现实性表达。

在四个测试布置的布局中,你能够钦点八个输入和出口参数,可以配备使测试陈设成功执行或破产的宗旨原则。

JMeter测试安顿是由差异的零部件组成。那里有1个最重要器件的列表,指引你哪些利用JMeter的用户界面添加它们以及那些插件的成效:

线程组(ThreadGroup)

一个线程组基本上是见仁见智的测试陈设成分的结缘,它是一个测试布置的骨干,它决定着主导宗旨参数。

为了创造三个测试布置,首先你不得不去成立2个线程组,配置如下参数:线程数量,过渡时期,循环次数和常规情况照旧不当情状下的一坐一起:

  • 线程数:执行测试布署的线程数,那个参数对于配置负载和压力测试分外重庆大学。
  • 过渡期:JMeter开头起步全部线程所需时日。
  • 巡回次数:即迭代次数,相当于测试布署被执行的次数
  • 错误行为:错误场景下的作为形式:阻止当前线程,结束任何测试,继续执行…

3个线程组也有安插选项的起来和甘休时间。通过单击复选框“Scheduler”,弹出带有调度参数的面板,能够为你的测试配置开端和了结时间。

万一配置达成,你就能够起来添加其他测试布署成分到线程组,例如采集样品器,侦听器和定时器。大家将在下一章解释这整个。

采样器(Samplers)

采样器用于发送请求到不相同品类的服务器。它们是每三个测试陈设的基本要素,一切都围绕那几个采集样品器而工作:采集样品器执行请求(基于配置的请求),这几个请求发生2个或八个响应,后续将被解析。

此处有3个在JMeter可用的采集样品器列表(在本教程大家将看到在那之中部分):

  • 做客日志采集样品器
  • AJP采样器
  • Bean shell取样器
  • BSF采样器
  • 调节采集样品器
  • FTP采样器
  • HTTP采样器
  • Java采样器
  • JDBC采样器
  • JMS(几个)采样器
  • JSR223采样器
  • JUnit采样器
  • LDAP(几个)采样器
  • 邮件阅读器
  • MongoDB采样器
  • 操作系统进度取样器
  • SMTP采样器
  • SOAP
  • TCP采样器
  • 测试行动

在上边的列表中大家能够看出,有广大不一品类的采集样品器。这些清单是不完全的,因为存在种种别样不相同于JMeter插件的贯彻技术。每一个采集样品器的布局取决于它所实施的乞求;那象征部分采集样品器有一部分共性的配置,而除此以外一些采集样品器由于它们分别请求的例外而完全差异。

逻辑控制器(Logic Controllers)

逻辑控制器允许你陈设2个线程组内不一样采集样品器的推行各类。该列表蕴含了在JMeter全部可用的逻辑控制器:

  • 总结控制器
  • 循环控制器
  • 三回性控制器
  • 纵横控制器
  • 随便控制器
  • 轻易顺序控制器
  • 流量控制器
  • 运维时间控制制器
  • I控制器
  • While控制器
  • Switch控制器
  • ForEach控制器
  • 模块控制器
  • include控制器
  • 事务控制器
  • 记录控制器

监听器(Listeners)

监听器提供不一致的办法查看由采集样品器请求发生的结果。监听器以报表、树型结构、或显然的日记文件的款型分析结果。

还足以在测试安顿中的任哪个地点方添加监听器,但他们只会在独家的施用范围内解析和综合机械化采煤来自采集样品器的数目。

那些都是JMeter可用的监听器:

  • 样品结果配置保存
  • 全状态结果集
  • 图表结果集
  • 样条线可视化工具
  • 预感结果集
  • 树形结果集
  • 组合报告
  • 报表结果集
  • 大约多少输出
  • 监测结果集
  • 分布图(alpha)
  • 整合图
  • Mailer可视化学工业具
  • Beanshell监听器
  • 总括报告

定时器(Timers)

能够行使定时器来定义请求之间的等候时间。假诺不点名,JMeter会三个伸手达成后立马实施下3个请求,没有别的等待时间。

可在JMeter使用的计时器如下:

  • 固定的定时器
  • 高斯随机定时器
  • 均匀随机定时器
  • 一向吞吐量定时器
  • 一同定时器
  • jsr223定时器
  • Beanshell定时器
  • BSF定时器
  • 泊松随机定时器

断言(Assertions)

预见通过认证采集样品器请求发生的响应,来评释测试安顿的实用。它基本上类似于单元测试断言,用来检查和测试被测试应用程序的响应品质。你能够为种种测试安插配置任何生效的预见。

此地是三个在JMeter能够动用的断言列表:

  • Bean shell断言
  • BSF断言
  • 比较断言
  • jsr223断言
  • 一呼百应断言
  • Duration断言
  • XML Assertion
  • BeanShell Assertion
  • MD5Hex Assertion
  • HTML Assertion
  • XPath Assertion
  • XML Schema Assertion

配置节点(Configuration nodes)

由此使用安插成分你能够将差别的参数字传送递给取样器请求。他们提供了创立变量(不一样的和动态的)的一种艺术,那些参数之后被采样器所利用。在采集样品器被实践前,参数所属节点运行时,那么些参数被执行;这便是为什么采集样品器能够依赖那几个变量。

那边是二个在JMeter使用的富有配置节点列表:

  • 计数器
  • CSV数据集配置
  • FTP请求缺省值
  • HTTP授权管理
  • HTTP缓存管理
  • HTTP cookie管理
  • HTTP代理服务器
  • HTTP请求缺省值
  • HTTP尾部管理
  • Java请求缺省值
  • 密钥库配置
  • JDBC连接值
  • 登录配置成分
  • LDAP请求缺省值
  • LDAP扩展请求缺省值
  • TCP采样器配置
  • 用户自定义变量
  • 简单安插成分
  • 随机变量

松手处理器(Pre processors)

在采集样品器执行前,前置处理器被触发。他们可用以从响应中领到变量,这么些变量后续将通过计划成分被采样器所采用。

上面都以足以用来作为前置处理器的要素:

  • HTML链接解析器
  • HTTP UCR-VL重写修改器
  • HTTP用户参数修改器
  • 用户参数
  • JDBC前置处理器
  • jsr223前置处理器
  • 正则表明式的用户参数
  • Beanshell后置处理器
  • BSF的嵌入处理器

前置处理器(Post processors)

前置处理器是取样器被实施后被触发执行的成分。他可用以解析响应数据,提取变量,以便后续使用
下列成分可用从前置处理器:

  • 正则表达式提取器
  • XPath提取器
  • Result status动作处理器
  • jsr223 后置处理器
  • JDBC 后置处理器
  • BSF前置处理器
  • jQuery/CSS 提取器
  • Beanshell 前置处理器
  • Debug前置处理器

测试安排成分执行顺序

测试安顿的要素是不变的,通过以下办法履行:

1–配置节点

2–前置处理器

3–定时器

4–取样器

5–前置处理器(只在有结果可用情状下实施)

6–断言(只在有结果可用意况下实施)

7–监听器(只在有结果可用景况下实施)

五个测试安顿能够涵盖三个或多少个测试布置。通过成效性可能技术逻辑将测试团队在一块儿是一种普遍的做法。

运营/结束测试安插

运作二个测试布置,你只供给点击“play”按钮:

起名 177

点击按钮“Play no pauses”,初步2个测试并忽略全部暂停:

起名 178

通过点击“甘休”按钮,能够告一段落测试:

起名 179

也足以禁止使用执行测试铺排。你只必要“切换”的测试布置的事态:

起名 180

您能够观察在上头的截图中看到,不可实践的布署展现玫瑰水浅橙,但足以修改他们或重新配置。

Web(HTTP)测试陈设

在这一章中,我们将看到什么样创设一个因而HTTP测试三个特定的网页的测试安插。为此目标,作者将用http://www.wikipedia.org网站。

有了丰裕理论知识,以往我们将见到如何安插二个HTTP请求的测试安插。

  • 重命名“测试安顿”,起贰个您欣赏的名字

在这一步中,配置测试布置或然会潜移默化线程的一颦一笑,您可以拉长大概使用到的外表类库。可是大家不打算在那个事例中那样做。

起名 181

  • 添加线程组

在这一步,你供给创建三个担负实施全数测试组件的线程组,并配置主要性能:线程数,秒级的过渡时代,迭代次数。
在菜单中如此操作

Test Plan -> Add -> Thread ->ThreadGroup

起名 182

你也足以钦命错误意况下表现形式(继续,停止,甘休当前线程……)

  • HTTP请求添加取样器

在这一步,给要测试HTTP请求添加采样器:

Add Sampler->HTTP Request

我们必要为那类型请求设置区别的天性:

在那一个事例中,为要测试的服务器设置名称:www.wikipedia.org(不用指明HTTP或HTTPS协议)。如果要求的话,你应该修改端口,协
议,执行措施等。在我们的案例中那是不须求的。那有多少个关于配置代理,超时和见仁见智的头消息的参数,但在我们的例子中,使用默许值。

起名 183

  • 拉长结果监听器

为了继承能够看出结果,那是有必不可少的;就像小编辈在此之前在本教程中观察那么,对于大家的http请求的测试安插,有三种可选配置,大家应用结果树:

Add Listener -> View Results Tree

在大家的言传身教中,大家平昔不变动任周岚西,保留全部配置属性的私下认可值。

起名 184

  •  保存并运转测试布署

File->Save(或单击“Control + s”)

Run->Start(或单击“play”)

  • 在监听器中查阅结果

起名 185

我们能够见到,全数的乞请已经到位,如预期那样,他们都提供有意义的响应,如此看来,大家测试的网页工作例行(要是那是大家的意料行为)。大家得以玩的转这么些结果,检查有着再次回到的数据。

我们曾经配备了3个测试布置,它发送大批量请求到钦定的服务器并分析响应。接下来我们将见到如何运用其余项指标测试组件,如定时器和断言。

  •  添加定时器

为了充实多个定时器,大家只要右击测试安顿并累加一个定时器:

Add Timer->Constant Timer

大家配备500飞秒。每二个伸手都将在上3个请求执行到位后伺机500纳秒。

起名 186

  •  添加断言持续时间

在测试安排中,单击右键并累加一个预知持续时间,要是响应时间超越100飞秒,配置错误断言。针对the
main sample only选项的布局如下:

Add assertion->Duration assertion

起名 187

明朗那是因为大家布置的预感持续时间只有100微秒,假若我们改变这一个数字到两千纳秒,大致全数请求都将按时送达。

起名 188

 

  • 添加size assertion

Add assertion->Size Assertion

我们需保险响应新闻的尺寸超过四千字节:

起名 189

假若大家运转测试布置,大家将汇合到响应音讯总是凌驾设定的值,假设响应消息尺寸小于设定值,断言也会退步。

数据库测试布署指南

我们将见到哪些布署,运转一个对准MySQL数据库的测试,并对结果开始展览解析。那些事例是关于MySQL的,也能够运用其余此外门类的数据库如Oracle,MongoDB或别的。

  • 安装MySQL

一经你未曾在你的微型计算机安装MySQL,你能够从http://dev.mysql.com/downloads/ 下载安装MySQL服务器,那是很不难的。

  • 下载MySQL驱动程序

下载MySQL连接器(mysql-connector-java-5.1.6),将它复制到JMeter安装目录下的lib目录下,本例中是C:\jmeter\apache-jmeter-2.11\lib

  • 启动MySQL

起头数据库服务器,你能够对它实行查询。

  • 始建数据库

您能够创造叁个你想要的数据库,大家那边只是四个11分简单的事例:

1
2
3
4
5
6
7
8
9
10
11
createdatabasejmeter;
 
use jmeter;
 
createtablejmeter_stuff(idint,namevarchar(50), descriptionvarchar(50));
 
insertintojmeter_stuff(id,name, description)VALUES(1,"dani","the boss");
 
insertintojmeter_stuff(id,name, description)VALUES(2,"topo","the worker");
 
insertintojmeter_stuff(id,name, description)VALUES(3,"tupac","the other");
  • 创建3个测试布署

跟上一章节一样,进行如下操作创设测试布置:三个新的线程组,贰个JDBC类型的配备成分和3个新的JDBC类型请求,以同样的法子丰盛三个监听器来分析和查阅结果。

唯一的差异是采集样品器的类型,在那种场合下行使JDBC采集样品器。

1
select*fromjmeter_stuff;

起名 190

  • JDBC连接配置

添加一个新的JDBC连接配置到采集样品器:

点击右键 JDBC采集样品器->添加连接配置

更改参数如下:

1
2
3
4
5
Variable BoundtoPool= samenameasinthe sampler
DatabaseURl=jdbc:mysql://localhost:3306/jmeter
JDBC Driver.mysql.jdbc.Driver
username=
password=

安装用户名密码

起名 191

  • 保存并执行。
  • 选用在此之前布置的监听器查看结果。

您能够以近乎在HTTP请求的测试布署相同的办法注解和检讨输出结果。只要您供给,你也足以增加后置处理器,前置处理器,断言或其余任何一种成分。

您能够以看似在HTTP请求的测试安顿相同的情势评释和检讨输出结果。只要您供给,你也得以加上前置处理器,前置处理器,断言或任何任何一种元素。

起名 192

 

在那种场馆下,输出的是SELECT语句的结果。
您能够用那种取样器用于立异数据,以及修改采集样品器配置的SQL语句。
在下边包车型客车显示器捕获的是呼吁响应结果的着力新闻:

起名 193

JUnit测试安插

在这一章中,大家将解释什么构成JUnit使用JMeter。从负载和性格的角度来看,JMeter为实践职能测试,提供了丰盛强大的建制。

先是,须求创设二个像上面包车型地铁JUnit测试:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
publicclassJMeterTest
{
 
    publicJMeterTest()
    {
        // just for testing purposes
        System.out.println("calling the constructor");
    }
 
    @Before
    publicvoidsetUp()throwsException
    {
        // just for testing purposes
        System.out.println("calling setup");
    }
 
    @After
    publicvoidtearDown()throwsException
    {
        // just for testing purposes
        System.out.println("calling tearDown");
 
    }
 
    @Test
    publicvoidtestMe()
    {
        for(inti =0; i <30; i++ )
        {
            // just asserting randomly in order to check what happens in each case
            intrandomNumber = (int)( Math.random() *100);
            System.out.println( randomNumber );
            assertEquals(0, randomNumber %2);
        }
    }
}
1
 
为了查看JMeter如何使用他们,本试验主要包含两个断言,当然这本教程的目的不是详细解释单元测试或JUnit测试。
  • 添加JUnit测试路径

将单元测试打成2个JA君越包,把它复制到JMeter的装置目录下的/lib/JUnit下。确定保证JA牧马人文件包涵你想让JMeter执行的测试类
的.class文件。在篇章的末梢,你能够找到二个带有pom.xml文件的Java项目,你能够平昔动用他去变通的JARAV4文件。现在您只须要编写翻译代码:

1
mvn compile

要么直接在Eclipse或你喜欢的其它IDE中程导弹出您的档次,生成包蕴字节码JA酷路泽文件。

  • 添加JUnit采集样品器请求

起名 194

入前所述,创制3个测试安插,添加一个JUnit类型采集样品器:Add
Sampler->Junit Request ,配置并实施你想要测试的办法。

在我们的例证中,大家将运营基于JUnit 4的章程,但您也得以勾选框使用JUnit
3。

起名 195

  • 就好像大家在前几章一样,添加一个监听器,以查看结果
  • 运行测试布置
  • 翻开结果

在此地,能够看看我们正好创制的JUnit测试结果:

起名 196

如上述截图所示,大家全部的测试(3个测试,十四回巡回)都战败了。那是意料的行事,因为大家期待大家的测试失利。其实大家只是写了个单元测试,没有效率上的意思,是低效的。它的目标是要表达什么安顿JMeter去履行那些类的单元测试。

在这一章所诠释的始末
有助于你使用JMeter提供的便利性的作用进行应用程序的功力测试和作业逻辑的测试.它也很有意思,因为它能够将Java语言的有所优势与JMeter的八线程能力相结合。

HTTP测试记录

今昔大家将评释什么安插JMeter记录HTTP请求。为此大家必要Firefox安装在大家的机器,作者是用版本32。

  • 让Firefox使用JMeter代理

跻身Firefox互连网设置,接纳手动代理选项和安装为本地主机服务器和端口8080(实际上,那加剧了对您的JMeter配置)。之后选中“为有着协议使用代理服务器”。

起名 197

  • 跟以前一样,首先大家制造1个测试安插。

小编们添加了二个新的线程组,给它起名。配置线程组线程数量为50,过渡时代为10秒,循环次数等于1。

起名 198

  • 添加HTTP请求暗中同意值

在刚刚创造的线程组中添加三个新的布局成分,采纳“HTTP Request Defaults”。

起名 199

在此处你应当填写您想测试服务器名称。

  • 加上记录控制器

当今我们添加八个记录控制器到工作台。

挑选工作台,不是测试安顿,并丰盛一个非测试元件的”Test Script Recorder”。

起名 200

您现在应该让工作台保存起来,并且与你的测试布署非亲非故。保存测试安插不表示保存了工作台。

布局记录如下:

起名 201

  • 丰硕定时器

一经您想为你的记录器添加四个定时器(常量类型),那么该定时器将由每个被记录的HTTP请求所利用。

  • 开班记录

经过点击记录器运转按钮,你将开发银行JMeter代理服务器。

起名 202

  • 记录展现

假如您为了转移三个HTTP请求而访问多少个网页,例如使用Firefox(配置为在本章的首先步解释之后)访问http://www.oviedin.com,那么你会看到不同的请求入口出现在你的测试计划记录控制器中。

起名 203

那些记录实际上是此前访问的web页面的HTTP请求。这一个含有在过滤器配置测试脚本配置过的记录将被封存。可以在您的接二连三测试陈设中重新配置使用。

JMeter插件

不等的插件应用的光景和用户区别,当中的片段需求安装,有个别不必要设置。

一对11分管用的插件,它们通过有个别高等选项来分析结果,并应用图表分析结果
例如http://jmeter-plugins.org/wiki/GraphsGeneratorListener/。

也有一部分可用插件,可以将JMeter与您的持续集成工具连接,直接从CI软件运营JMeter,执行测试陈设,例如”https://wiki.jenkins-ci.org/display/JENKINS/Performance+Plugin“。

正如笔者所说的,随着插件数量的上涨,不容许列出全数的插件。所以您在贯彻协调的插件功能时,尽或者的去互连网上查找一下是还是不是有可用的插件,那对本人是不行有价值的。

您也足以成立你自身的JMeter插件,但那超出了本文的限定。

JMeter最好实践

在作品最终,大家要写下多个很有用的技能和极品实践:

  • 虽说JMeter
    UI是一个用于配置和创办差异测试安排卓殊实惠和直观的工具,然而有经验的用户更想采纳非GUI情势执行测试安顿,存款和储蓄他们的结果。

你可以因而命令行:

1
jmeter -n -t test.jmx -l test.jtl.
  • 假设该测试就是您想要执行的测试布署。你必须提供该测试布置的全体存款和储蓄路径。
  • 监听器对分析结果是丰硕棒的,但他们也都以能源密集型,须要消耗大批量内部存款和储蓄器,在您的布局利用尽可能少的监听器是有裨益的。标记
    -l 表示删除全数监视器,如果还没添加监视器,那么那个选项是不须要的。
  • 借使你对测试时期产生了的不当感兴趣,能够在结果树视图中查看”View only
    errors“标记。
  • 应用变量和巡回在同样的采集样品代替安排几个八九不离十的样品中的变量和参数,他们利用的是绝无仅有的界别。
  • 动用同2个采集样品器的变量和循环变量,而不是创建好多少个这么的采集样品器,他们间只是变量值区别而已。
  • 当创设的JUnit测试陈设时,提出提供有含义的荒谬和断言音信,以便JMeter输出尽恐怕被人掌握的始末。当进行单元测试时,经常状态下都会付给那样建议,而且完全适用那种景况。
  • 采纳Stop(Control + ‘.’)。这将尽心的立时停下线程。
  • 采纳Shutdown(Control +
    ‘,’)。那就须求在方今其余工作甘休后的停下线程。其余工具提醒在https://wiki.apache.org/jmeter/jmetershortcuts都可以找到。

总结

到此地就谢世了。大家讲了何等设置JMeter,以及怎么着安排它用于实践分化类型的测试,如HTTP请求,数据库,基于JUnit作用测试。还有很种种JMeter提供的测试项目没有包罗在本教程中。本课程的目标是提供贰个全体的应用程序表达,以及教你怎么样布置你的首先个测试安排。

我们也诠释了JMeter
UI的第叁组成都部队分,以及怎么着使用它,以及尤其好用的JMeter测试布署成分。在终极一章中,大家关系能够为JMeter安装不一致插件;对于有高级供给的经历用户来说那是叁个卓殊幽默的。

下载

怀有JMeter模板,本文中应用的SQL脚本和Java代码能够在下边包车型大巴链接下载:JMeter教程。

资源

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图