Jmeter中文介绍材料(完全版)
jmeter元件详细介绍
jmeter元件详细介绍⼀、基本介绍可以进⾏功能测试、性能测试、⾃动化测试。
⼆、配置元件介绍线程组:threads虚拟⽤户数,设置Jmeter按照什么场景运⾏,是⼀系列线程的集合,每⼀个线程都代表⼀个正在使⽤应⽤程序的⽤户。
在JMeter中,每⼀个线程都意味着模拟⼀个真实⽤户向服务器发起请求。
⽐如设置的线程数为50,JMeter将创建并模拟测试50个⽤户请求到服务器端(指的是在线⽤户数量,并不是并发数量)。
setUp Thread Group:⽤于执⾏预测试操作,⽐如初始化的配置,类似LR中的inittearDown Thread Group:⽤于执⾏测试后动作,⽐如建⽴数据库连接后,测试结束需要关闭数据库,类似LR中的end。
问题1 :统⼀作⽤域范围内执⾏顺序结论:线程组在同⼀作⽤域名范围内执⾏顺序为:setUp Thread Group (init进⾏初始化操作)->线程组-> tearDown Thread Group(进⾏收尾关闭⼯作)问题2 :在并发的情况下同⼀作⽤域范围内线程组的执⾏顺序验证:结论:线程组在并发的情况下执⾏顺序为:setUp Thread Group (init进⾏初始化操作)->线程组(并发执⾏)-> tearDown Thread Group(进⾏收尾关闭⼯作)问题3 :在并发的情况下同⼀作⽤域范围内线程组的执⾏顺序验证:结论:线程组的执⾏次数跟线程数有关。
菜单栏:函数助⼿对话框:打开⽅式:打开-选项-函数助⼿对话框-_CSVRead)作⽤:读取csv⽂件的第⼆种⽅式,也是读取参数的第三种⽅式其中第⼀⾏表⽰:填写csv⽂件的路径+名称第⼆⾏表⽰:参数的列号,默认是从0开始的。
点击⽣成即可,在复制到对应的请求参数中:注意:利⽤函数助⼿读取CSV⽂件时,默认线程数也就是代表⼀个⽤户数永远只会读取⼀个数据,就算加上循环次数也只是表⽰⼀个⽤户重复将⼀个数据读取三次。
完整的JMETER使用手册
JMETER中文手册1.简介Apache JMeter是100%纯java桌面应用程序,被设计用来测试C/S结构的软件(例如web应用程序)。
它可以用来测试包括基于静态和动态资源程序的性能,例如静态文件,Java Servlets,Java对象,数据库,FTP服务器等等。
JMeter可以用来在一个服务器、网络或者对象上模拟重负载来测试它的强度或者分析在不同的负载类型下的全面性能。
另外,JMeter能够通过让你们用断言创建测试脚本来验证我们的应用程序是否返回了我们期望的结果,从而帮助我们回归测试我们的程序。
为了最大的灵活性,JMeter允许我们使用正则表达式创建断言。
1.1 历史Apache软件组织的Stefano Mazzocchi是JMeter的创始人。
他编写它起初是为了测试Apache JServ的性能(一个已经被Apache Tomcat工程所替代的工程)。
我们重新设计JMeter 来增强用户界面并增加功能测试的能力。
1.2 未来我们希望看到作为开发者利用它的可插入架构使JMeter的功能快速扩展。
未来发展的主要目标是在没有影响JMeter的负载测试能力的情况下尽可能使JMeter成为最实用的回归测试工具。
2.入门开始使用JMeter最容易的方法是首先下载最新版并且安装它。
这个版本包含所有你在构建和运行Web,FTP,JDBC,和JNDI等测试时使用需要的所有文件。
如果你想执行JDBC测试,你当然需要从供应商得到适当的JDBC驱动。
JMeter没有提供任何JDBC驱动。
你可能需要下载的其它软件:BeanShell - BeanShell函数和测试元件需要Java Activation Framework - JavaMail需要Java Mail - Mail可视化,Mail Read er 和WebService(SOAP)取样器需要JMS - JMS取样器需要下一步, 开始使用JMeter并且参见用户手册创建一个测试计划一章使自己更加熟悉JMeter基础(例如,添加和删除元件)。
jmeter中文教程
HTTP协议简介在Web应用中,服务器把网页传给浏览器,实际上就是把网页的HTML代码发送给浏览器,让浏览器显示出来。
而浏览器和服务器之间的传输协议是HTTP,所以:∙HTML是一种用来定义网页的文本,会HTML,就可以编写网页;∙HTTP是在网络上传输HTML的协议,用于浏览器和服务器的通信。
在举例子之前,我们需要安装Google的Chrome浏览器。
为什么要使用Chrome浏览器而不是IE呢?因为IE实在是太慢了,并且,IE对于开发和调试Web应用程序完全是一点用也没有。
我们需要在浏览器很方便地调试我们的Web应用,而Chrome提供了一套完整地调试工具,非常适合Web开发。
安装好Chrome浏览器后,打开Chrome,在菜单中选择“视图”,“开发者”,“开发者工具”,就可以显示开发者工具:Elements显示网页的结构,Network显示浏览器和服务器的通信。
我们点Network,确保第一个小红灯亮着,Chrome就会记录所有浏览器和服务器之间的通信:当我们在地址栏输入时,浏览器将显示新浪的首页。
在这个过程中,浏览器都干了哪些事情呢?通过Network的记录,我们就可以知道。
在Network中,定位到第一条记录,点击,右侧将显示Request Headers,点击右侧的view source,我们就可以看到浏览器发给新浪服务器的请求:最主要的头两行分析如下,第一行:GET表示一个读取请求,将从服务器获得网页数据,/表示URL的路径,URL总是以/开头,/就表示首页,最后的HTTP/1.1指示采用的HTTP协议版本是1.1。
目前HTTP协议的版本就是1.1,但是大部分服务器也支持1.0版本,主要区别在于1.1版本允许多个HTTP请求复用一个TCP连接,以加快传输速度。
从第二行开始,每一行都类似于Xxx: abcdefg:表示请求的域名是。
如果一台服务器有多个网站,服务器就需要通过Host 来区分浏览器请求的是哪个网站。
jmeter用法
jmeter用法1、JMeter介绍JMeter是Apache软件基金会发布的一个开源Java应用程序,用于测试和性能检测及监控的软件,它集成了几乎所有的网络协议、测试类型,可以用最合理的成本进行Web应用程序和Web Services的性能测试。
2、JMeter的工作原理JMeter采用一定的策略,将多个用户的请求发送到一个服务器,从而模拟真实的使用场景。
在用户请求发出后,JMeter会监控服务器的反馈信息,这些数据处理后会作为服务器响应速度、运行状态以及服务器抵抗负载能力等性能统计数据来进行可视化统计分析,从而实现性能监控和优化。
3、JMeter的主要功能a、根据设置的测试计划,可以进行多用户的模拟,来检查硬件性能,网络状态、数据库状态以及Web应用程序的功能和性能。
b、可以用来测试Web应用程序、Web Services和Enterprise Java Beans、静态和动态资源以及其他基于HTTP协议的客户端/服务器应用程序的性能。
c、具有良好的可视化界面,可以设置测试计划参数,调整执行计划,并以图表形式进行统计分析,提供可信度高的数据结果,可用于持续改进服务器的性能,同时具备脚本的灵活性,使用户可以定制符合个性化需要的检测脚本。
d、可以测量内外部网络状态和服务安全性。
4、JMeter的使用方法a、下载安装 JMeter官网下载并完成安装,在系统安装路径中可以找到JMeter程序。
b、启动JMeter 执行JMeter.bat 文件即可启动JMeter,在JMeter窗口左侧会有一棵树形操作列表,可以点击各个节点进行操作。
c、添加线程组选择当前所操纵的树节点,右击点击《Thread Groups》,选择右侧的《Add》,弹窗会出现增加Threads和Loops的选择项,并在右侧的列表中出现新创建的线程组,可根据需要进行配置。
e、启动测试选择树节点,点击右击《Start》可以启动测试,测试结果将会出现在右侧的表格中,也可以点击《View Results Tree》查看具体的测试结果,以及响应的状态码。
Jmeter中文手册
安裝JDK:JAVA的環境變數設置使用滑鼠右擊“我的電腦”->屬性->高級->環境變數系統變數->新建->變數名:JAVA_HOME 變數值:d:\jdk系統變數->編輯->變數名:Path 在變數值的最前面加上:%JAVA_HOME%\bin;系統變數->新建->變數名:CLASSPATH 變數值:.;安裝TomcatCATALINA_HOME=d: \tomcatUser Manual用戶手冊1 介紹Apache JMeter 是100%純JAVA桌面應用程式, 被設計為用於測試CS結構的軟體.同時也可以用來測試靜態和動態資源的性能, 例如:靜態檔, Java Servlets, CGI Scripts, Java Object, 資料庫和FTP伺服器等等. JMeter可用于類比大量負載來測試一台伺服器,網路或者物件的健壯性或者分析不同負載下的整體性能.同時, JMeter可以説明你對你的應用程式進行回歸測試. 通過你創建的測試腳本和assertions來驗證你的程式返回了所期待的值. 為了更高的適應性, JMeter允許你使用常規運算式來創建這些assertions.2 開始2.1 安裝下載安裝最新的版本, 將會包含所有你需要建立和運行Web, FTP, JDBC和JNDI測試的檔. 如果你想進行JDBC測試, 你需要使用合適的JDBC driver. JMeter中不包含JDBC drivers.其他可能需要下載的軟體:●Bean Shell●Java Activation Framework – needed for Java Mail●Java Mail – needed for mail visualiser and SOAP test●JMS – for JMS samples●General Java Kit接下來一步, 就是流覽”建立測試計畫”一章來熟悉JMeter的基本操作, 例如:添加和刪除元素. 最後,流覽適當的章節來學習如何建立不同種類的測試計畫. 例如, 如果你對Web 應用程式的測試比較感興趣, 就流覽”建立一個Web測試計畫”章節. 其他種類的測試計畫建立的章節包括:JDBC, FTP和JNDI.一旦你熟悉了建立和運行JMeter測試計畫, 就可以開始熟悉各種配置參數, 例如: timers, listeners, assertions和其他的參數, 來幫助你更好地控制你地測試計畫.2.2 系統要求JMeter 1.8 以上的版本需要JDK1.4以上的版本支持運行.JMeter可以運行在如下作業系統上: Unix, Windows和Open VMS.2.3 可選項目如果你打算進行JMeter開發或者使用Sun的Java標準擴展包,你需要如下所列的可選包:2.3.1 Java Compiler需要1.4以上的JDK版本2.3.2 SAX XML ParserJMeter默認使用Apache的Xerces XML parser. 如果你想使用一個不同的XML parser, 將協力廠商的parser包放入JMeter的classpath中,然後使用設置的parser包的全名更新檔jmeter.properties2.3.3 Email SupportJMeter擁有有限的郵件功能來發送測試結果到指定郵箱中. 應用郵箱功能,需要將Sun的JavaMail包放入JMeter的classpath中並啟動.2.3.4 SSL Encryption為使用HTTPS測試web伺服器, JMeter需要設立SSL機制. 將所需要的SSL類包放入JMeter 的classpath中, 更新jmeter.properties來註冊SSL Provider.可以使用SSL Manager 用來管理這些證書.注意: 在JDK 1.4以上版本, SSL已經作為標準庫加入.2.2.5 JDBC Driver你需要將你的資料庫供應商提供的JDBC drivers添加到classpath中來進行JDBC測試.2.2.6 Apache SOAPApache SOAP測試需要mail. jar和activation.jar. 只需要將下載的兩個jar檔複製到JMeter下的lib目錄中, JMeter會自動的識別和使用它們.2.3 運行運行JMeter, 使用jmeter.bat (windows) 或 jmeter (UNIX).2.3.1 JMeter的classpathJMeter自動在/lib和/lib/ext目錄中的jar中的類. 如果你想添加其他JAR檔到JMeter 的classpath中,你必須複製他們到lib目錄中.如果你開發了一個JMeter特定元件, 生成jar包後複製到lib目錄下的ext目錄中.而且,你也可以將有效的jar檔安裝到$JAVA_HOME/jre/lib/ext目錄中.值得注意的是設置CLASSPATH環境變數沒有任何作用. 這是因為JMeter使用”java –jar”開始, java命令自動忽略CLASSPATH值, 同時-jar選項的使用將遮罩掉-classpath和-cp選項.2.3.2 使用代理伺服器如果你在防火牆或者代理伺服器後進行測試, 你需要給JMeter提供防火牆和代理伺服器的hostname和port號. 在命令列運行 jmeter.bat或jmeter命令並使用如下參數:-H 代理伺服器的hostname或者IP地址-P 代理伺服器的port號-u 代理伺服器驗證使用的用戶名-a 代理伺服器驗證使用的使用者密碼示例:jmeter –H yahoo –P 8080 –u test –a password2.3.3 非GUI模式對於那些非交互的測試, 你可以使用非GUI的模式運行JMeter. 使用如下命令:-n 指定的JMeter運行在non-GUI模式下-t 包含測試計畫的JMX檔的名稱-l 用於記錄簡單結果的JTL檔案名稱.-r 運行所有的在jmeter.properties中指定的遠端主機.(或在命令列中提供的覆蓋屬性提供的遠端主機名稱.也可以同時提供防火牆或者代理伺服器的資訊-H 伺服器名或IP地址-P 埠號示例:jmeter –n –t my.jmx –l log.jtl –H yahoo –P 88002.3.4 伺服器模式為了對分散式測試, 可以運行在伺服器模式下, 然後通過GUI來控制每個伺服器.運行jmeter-server/jmeter-server.bat, 附加下列可選項:-H 代理伺服器的hostname或IP地址-P 埠號示例:jmeter-server –H yahoo –P 80002.3.5 通過命令列來重載PropertiesJava system properties, JMeter properties和logging properties 能夠直接通過命令列來直接重載而不用修改jmeter.properties文件. 使用以下參數項:-D[prop name]=[value] 定義一個java system property值-J[prop name]=[value] 重載一個JMeter property-L[category]=[priority] 重載一個logging setting, 設置一個指定的類別名給指定的優先順序別-L標誌位元可以不指定category,將其設為root級別示例:jmeter –Duser.dir=/home/mstover/jmeter_stuff \ -Jremote_hosts=127.0.0.1 –Ljmeter.engine=DEBUGjmeter –LDEBUG注意: 命令列輸入的properties在啟動時先處理, 但是晚于logging system的建立. 所以嘗試使用-J標誌去更新log_level或者log_file的properties將沒有任何效果.2.3.6 Logging和error信息如果JMeter檢查到一個錯誤, 一個資訊就被寫道log檔中. Log文件的名字是在jmeter.properties檔中定義的. 預設值位jmeter.log, 在JMeter的開始目錄中可以看到, 例如 bin目錄中.除了記錄錯誤資訊, jmeter.log檔中同時記錄了一些測試運行的資訊. 例如:10/17/2003 12:19:20 PM INFO - jmeter.JMeter: Version 1.9.2003100210/17/2003 12:19:45 PM INFO - jmeter.gui.action.Load: Loading file:c:\mytestfiles\BSH.jmx10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Running the test!10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Starting 1 threads for group BSH. Ramp up = 1.10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Continue on error10/17/2003 12:19:52 PM INFO - jmeter.threads.JMeterThread: Thread BSH1-1 started 10/17/2003 12:19:52 PM INFO - jmeter.threads.JMeterThread: Thread BSH1-1 is done 10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Test has endedLog檔有助於定位錯誤出現的原因,因為它並未打斷測試來顯示一個error視窗.2.4 配置JMeter如果你想修改JMeter運行使用的properties,你可以通過兩種方式:修改bin目錄中的檔jmeter.properties或者創建你自己的properties檔使用命令列來指定該檔.Parameters3 建立測試計畫一個測試計畫描述了一系列JMeter在運行中要執行的步驟. 一個完整的測試計畫包含一個或多個Thread Groups, logic controllers, sample generating controllers, listeners, timers, assertions和configuration elements.3.1 添加刪除 Elements添加elements到測試計畫,可以通過在tree中element上點擊右鍵,然後從add列表中選擇一個新的element. 同樣,elements也可以通過open選項從一個檔中載入.刪除一個element,確定該element被選定,右擊選擇刪除選項.3.2 載入和存儲elements載入檔中的elements,在已有的tree中點擊右鍵, 然後選擇open選項. 選擇elements存儲的檔, JMeter將載入檔中的所有elements到tree中.存儲tree的elements, 選擇一個element然後右擊, 選擇save選項.JMeter會存儲選定的element, 以及所有的子elements. 這樣你就可以存儲測試樹的一段, 單獨的element或者整個測試計畫.3.3 配置tree的elements任何一個一個測試樹中的element都可以在JMeter的右邊框架顯示. 這樣允許你來配置該測試element的屬性. 能夠配置什麼屬性取決於你選定的element的類型.3.4 運行測試計畫在run功能表中選擇開始來運行測試計畫. 停止測試計畫, 從功能表中選擇停止. JMeter 不會自動的在運行測試計畫時有任何表現. 一些listeners使得JMeter運行表現出來.但是唯一的方法是檢查run功能表中的start選項, 如果是disable的而且stop是enabled,那麼JMeter就在運行你的測試計畫,至少表面上看來如此.3.5 Scoping RulesJMeter測試樹中包含的elements是分級和有次序的.一些elements在測試中有嚴格的等級要求(Listeners, Config Elements, Post-Processors, Pre-Processors, Assertions, Timers), 而其他一些有primarily ordered的要求(controllers, samplers). 當你創建測試計畫時, 你需要建立一個有次序的sample請求(通過sampler), 這些反映了一組需要執行的測試步驟. 這些請求經常在有序的controllers中組織.例圖1請求的次序將為: one, two, three, four.有些controllers會影響他們sub-elements, 你可以在component reference 中查看這些.一些其他的elements是有級別的. 例如, Assertion在測試樹中是有級別的.如果他的父親節點是一個request,那麼它將僅僅影響該request. 如果父節點是一個controller, 那麼它將影響該controller的所有後代的請求. 例如:Assertion #1僅僅應用到Request One上. 而Assertion#2應用到Request Two和Three 上.另外一個關於Timers的示例:在這個例子中, request的名字反映了他們在測試中應該執行的次序.Timer#1將應用到Request Two, Three和Four上(注意對於分等級的elements如何排序毫不相關). Aserrtion#1將僅僅應用到Request Three上. Timer#2將影響所有的請求.如果你想想任何一個request通過樹的路徑被傳遞, 到它的父節點,在到它的父節點的父節點, 以此類推, 在每一級的父節點上集合所有的configuration elements, 那麼你就知道它是如何工作的了.注意:對於Configuration elements中的 Header Manager, Cookie Manager和Authorization manager來說, 與其他的Configuration Default elements不同. Configuration Default elements被整合成一個Sampler訪問的集合.而Manager的設置不會被整合.如果超過一個的Manger在Sampler的範圍中,只有一個Manager被使用,但是目前還無法判斷那個被使用.4 測試計畫的elements測試計畫物件現在擁有了一個新的checkbox選項, 叫做”功能測試”. 如果選擇,JMeter 將記錄所有server為每個sample返回的值. 如果你已經在測試listeners中選定了一個檔, 那麼這些資料將被寫入到檔中. 這個有助於你通過一個小型的測試來檢驗JMeter是否配置正確, 而你的伺服器返回正確的結果. 值得注意的是這個檔的大小將增長的很快使得JMeter的性能降低. 這個選項在做壓力測試時需要關閉掉(預設為關閉).如果你不將資料寫入檔中,那麼這個選項沒有任何不同.4.1 Thread GroupThread Group elements 是任何一個測試計畫的開始點. 所有的測試計畫中的elements都要在一個Thread Group中. 如名字顯示那樣, thread group element控制了一組執行緒, JMeter使用這些執行緒來執行你的測試. 你可以做如下操作來控制thread group:●設置執行緒的數量●設置ramp-up週期●設置測試執行的次數每一個執行緒都會完全和獨立的執行測試計畫而不影響其他執行緒. 多執行緒可以用於類比到你的伺服器程式的併發連接.Ramp-up period 告訴JMeter需要多長時間來”ramp-up”去裝載全部的執行緒. 如果10個執行緒被使用, 而ramp-up period為100秒, 那麼JMeter會花100秒來使得所有的10個執行緒運行. 每個執行緒將在上個執行緒開始後10秒開始. 又如, 如果有30個執行緒而ramp-up為120秒.那麼每個執行緒在延遲4秒後啟動.延遲時間=ramp-up period時間數/執行緒數默認的,一個thread group被設置為不限定的迴圈. 你可以設置thread group迴圈的次數.如果設置為一次, 那麼JMeter將執行測試一次然後停止.Version 1.9 將允許你預定時間去運行測試. 選定Scheduler的checkbox, 你就可以設定時間.4.2 ControllersJMeter有兩種controller: Samplers和Logical ControllersSamplers告知JMeter發送請求到伺服器. 例如, 如果你想JMeter發送一個HTTP請求, 就添加一個HTTP Request Sampler. 當然你也可以定制一個請求, 在Sampler中添加一個或多個 Configuration Elements.Logical Controllers使你可以定制JMeter發送請求的邏輯. 例如, 你可以添加一個Interleave Logic Controller來控制交替使用兩個HTTP Request Samplers. 同樣, 一個特定的Logic controller, 作為Modification Manager, 可以讓你修改請求的結果.4.2.1 SamplersSampler 告知JMeter發送請求到server端. JMeter現在有如下的samplers:●FTP Request●HTTP Request●JDBC Request●Java Object Request●LDAP Request●SOAP/XML-RPC Request●Web Service (SOAP) Request (Alpha Code)每個sampler都有一些可以設置的properties. 你也可以在一個sampler中添加Configuration Elements來做更多的設置. 當然, 值得注意的是JMeter按照request在tree中添加的次序來發送請求.如果你想同時發送多個併發的同一種類的request, 例如HTTP request, 到同樣一台伺服器. 可以考慮使用一個Defaults Configuration Element. 每個Controller擁有一個或多個預設元素.當然不要忘記添加一個Listener到你的Thread Group中來察看和存儲你的測試結果.如果你對JMeter對你的request返回的response進行簡單的校驗很感興趣, 你可以在Request Controller中添加一個Assertion. 例如, 在一個web程式的壓力測試中, 伺服器可能會返回多個成功的”HTTP Response”, 但是頁面也許包含了一些錯誤或者丟失的部分. 你可以添加assertions來檢查特定的HTML標籤,常見的錯誤字串,等等諸如此類的資料. JMeter允許你使用常規運算式來創建這些assertions.4.2.2 Logic ControllersLogic Controller使得用戶可以定制JMeter發送請求的時機.Logic Controllers可以擁有如下的任何一個作為子elements: Samplers(requests), Configuration Element和其他的Logic Controllers. Logic Controllers可以改變子elements的請求次序. 他們可以自己修改requests, 使得JMeter可以重複發送請求等等.為了便於理解Logic Controllers在測試計畫中所起的作用, 舉例如下:●Test Plan⏹Thread Group◆Once Only Controller●Logic Request (an HTTP request)◆Load Search Page (HTTP sampler)◆Interleave Controller●Search “A” (HTTP Sampler)●Search “B” (HTTP Sampler)●HTTP default request (Configuration Element)◆HTTP default request (Configuration Element)◆Cookie Manager (Configuration Element)首先表明了login請求只會在第一次運行時執行. 其餘的請求將自動跳過它. 達到這個效果的原因就是因為Once Only Controller的影響左右.在login之後, 下一個Sampler載入了search page (想像一下, 一個在用戶登錄後就轉入search頁面來做搜索的web程式). 這個僅僅是一個簡單的請求, 並未通過任何Logic Controller的篩選過程.在search頁面載入後, 我們想做一些搜索. 實際上, 我們要做兩個不同的搜索. 然而, 我們想在每個獨立的搜索中重新載入search頁面. 我們可以用四個簡單的HTTP request elements來達到目的(載入search頁面,搜索”A”,載入search頁面,搜索”B”). 而實際上, 我們使用了另一個方法, 我們使用Interleave Controller, 它將每次運行一個完整的測試只使用一個子element的request. 而且能夠保持這些子elements的次序來運行.注意:HTTP Request Defaults是屬於Interleave Controller的. 想像一下”search A”和”Search B”分享同一個”PATH”信息(一個指定的HTTP請求包括domain, port, method, protocol, path和arguments等, 還有其他額外的資訊). 這導致: 兩者都是search的請求, 點擊同一個後臺搜尋引擎. 與其給兩者配置相同PATH資訊,不如將資訊抽象出來給一個Configuration Element.當Interleave Controller傳遞”Search A”和”Search B”的請求時, 將自動使用HTTP Default Request Configuration Element的值來取代空白的PATH域. 所以, 我們將這些請求的PATH域空置, 然後將這些資訊放入到Configuration Element中.樹中接下來的element是另外一個HTTP Default Request, 這次是給Thread Group自己使用的. Thread Group擁有一個內置的Logic Controller, 因此, 它象上面的介紹的那樣一樣,來使用這個Configuration Element. 它將填入到任何一個通過的Request的空白中. 當你做web測試時, 這是非常有用的. 你可以將所有的HTTP Sampler elements的DOMAIN 域空白, 然後使用Thread Group中添加的HTTP Default Request的資訊補充這些空白域. 這樣, 你可以僅僅改變一個域就能將整個測試計畫應用到另外的server上. 否則你需要一個一個更改Sampler.最後一個element是HTTP Cookie Manager. 所有的web測試中都應該添加該element, 否則JMeter將忽略所有的cookie. 在Thread Group級添加這個元素,可以保證所有HTTP request將共用同樣的一個cookie.Logic Controller可以被組合起來從而獲得多種不同的結果.4.3 ListenersListeners提供了獲取在JMeter運行過程中搜集到的資訊的訪問方式. 最簡單的Listener, Graph Results Listener圖示出了回應時間. Listeners提供了一種圖型化的方式來查看JMeter運行過程中產生的資料.另外, Listeners能夠直接將搜集的到資料存入到檔中以備後用. 任何一個listener都擁有一個設置該檔存儲位址的域.Listener能夠加到測試中的任何位置. 他們將僅僅收集同級別和所有低級別的elements產生的資料.4.4 Timers默認的,JMeter執行緒發送requests時之間沒有任何停頓. 我們建議你指定一個延遲時間. 這可以通過添加一個有效的Timer到你的Thread Group中實現. 如果你沒有添加一個延遲時間, JMeter可能會在極短時間內發送大量的請求而引起server崩潰.Timer可以使得JMeter在執行緒發送每個請求時有一個延遲. 如果你添加了多個timer到一個Thread Group中時, JMeter將使用累計的延遲時間.4.5 AssertionsAssertions 允許你對在測試中從server端返回的回復中驗證某些資料. 使用assertion, 你可以實際地測試你的程式返回的值是否是期望值.例如, 你可以檢驗回復字串中包含一些特殊的文本. 你指定的文本可以是一個Perl-style 的常規運算式, 然後指定回復中是否包含該文本, 或者整個回復都應該相符合.你可以給任何一個Sampler添加一個assertion. 例如, 你可以添加一個assertion到一個HTTP Request來檢查文本”yahoo”. JMeter就會在返回的回復中察看該文本. 如果JMeter 不能發現該文本,那麼將標誌該請求是個失敗的請求.為了查看assertion的結果, 你需要添加一個Assertion Listener到Thread Group中.4.6 Configuration ElementsConfiguration Element與Sampler緊密聯繫在一起工作. 儘管它不能發送請求, 但是它可以被添加到或者去修改請求(除了HTTP Proxy Server)之外.Configuration Element只能被所在的tree branch訪問. 例如, 你在一個Simple Logic Controller中設置了一個HTTP Cookie Manager, 那麼這個Cookie Manager將只能被設置在Simple Logic Controller中的HTTP Request Controllers訪問. 如下圖中所示, Cookie Manager 能夠被HTTP request “Web Page1”和”Web Page2”訪問, 但是不能被”Web Page3”訪問.並且, 一個tree branch中的configuration element 將擁有更高的優先順序, 與同一個parent branch 中的同樣的元素相比. 例如, 我們定義了兩個 HTTP Request Defaults elements, “Web Defaults 1”和”Web Defaults 2”. 因為我們將”Web Defaults 1”放入到一個Loop Controller中,所以只有”Web Page 2”能訪問它. 而其他的HTTP requests 只能使用我們在”Thread Group”(所有其他branch的”parent”)中設置的”Web Defaults 2”.4.7 Pre-Processor ElementsPre-Processor在Sampler Request被創建前執行一些操作. 如果一個Pre-Processor被附加到一個Sampler element上, 那麼它將先於Sampler Element運行. Pre-Processor最主要用於在Sampler運行前修改一些設置, 或者更新一些無法從response文本中獲取的變數.4.8 Post-Processor ElementsPost-Processor在Sampler Request被創建後執行一些操作. 如果一個Post-Processor被附加到一個Sampler element上, 那麼將緊接著sampler element運行後運行.Post-Processor主要用於處理回復資料, 常常用來從其中獲取某些值.5 建立一個web測試計畫在本章中, 你將學習到如何創建一個基本的測試計畫用來測試一個web網站. 你創立5個用戶向Jakarta網站的兩個頁面發送請求. 同時,你將設置這些用戶運行他們的測試兩遍. 所以, 總共的request數是:5(user)*2(request)*2(repeat 2 times)=20 HTTP Requests. 為建立測試計畫, 你將使用如下elements: Thread Group, HTTP Request, HTTP Request Defaults和Graph Results.5.1 Adding Users 添加用戶每個JMeter測試計畫的第一步都是要添加一個Thread Group element. Thread Group將告訴JMeter 你要設置的使用者的數目, 發送請求的頻率和請求的次數.選擇測試計畫, 點擊右鍵, 選擇添加Thread Group. 這時你就應該在Test Plan下看到Thread Group element了. 如果你沒有看到, 那就點擊Test Plan展開樹.然後, 你需要修改那些預設的properties. 選擇樹中的Thread Group element, 在JMeter 左側的視窗中應該顯示出Thread Group的Control Panel.第一步, 給我們的Thread Group 添加一個更詳細的名稱. 在名字域中, 輸入Jakarta Users.然後增加使用者的數目到5 (調用的執行緒數).在下一個域中, Ramp-Up Period, 使用預設值0秒. 這個properties告訴JMeter兩個User 開始發送請求之間的延遲時間. 例如,你輸入5秒, JMeter將在5秒後啟動所有的用戶. 所以, 我們有五個用戶和5秒的Ramp-up period, 那麼兩個用戶之間開始時間的延遲時1秒.(5 user/5=1).如果值為0, 那麼JMeter將立刻開始你所有的用戶操作.最後,清除”Forever”的checkbox, 輸入2在Loop Count域中. 這個property告訴JMeter 要重複運行你的測試幾次. 如果你輸入的迴圈值為1, 那麼JMeter將只運行一次你的測試. 如果要JMeter不停運行你的測試,選擇Forever.在大部分程式中, 你不得不手工方式來更新你在控制台中的更改. 然而, 在JMeter中, 控制台將自動的接受你的更改. 例如, 你改變了一個element的名稱, 樹將自動更新為最新的文本在你離開控制台後(例如,選擇了另一個element).5.2 添加Default HTTP Request Properties現在我們已經定義了我們的用戶, 是時間來定義他們要執行的任務了. 在這節, 你將指定你的HTTP 請求的默認設置. 然後, 在5.3中, 你將添加HTTP Request elements來使用你制定的預設值.選擇你的Jakarta User element.右擊選擇添加Config Element中的HTTP Request Defaults. 然後選擇這個新的元素查看他的控制台.象大多數的JMeter元素一樣, HTTP Request Default的控制台擁有一個可修改的名稱域. 在本例中,使用預設值.跳到下個域, Web Server’s Name/IP. 在本例中, 所有的測試用例將發送到同一個web伺服器上去: . 將這個功能變數名稱輸入到該欄位中. 這是我們唯一指定的預設值, 所有留下其他的域為空白值.注意:HTTP Request Defaults elements 不會告訴JMeter去發送HTTP請求. 它只是簡單的定義了HTTP request elements會使用到的預設值.5.3 添加Cookie支持幾乎所有的web測試要求使用cookie, 除非你的程式特別指明不使用cookie. 添加cookie 支持, 最簡單的是添加HTTP Cookie Manager到每一個Thread Group中. 這會保證每個執行緒都獲得自己的cookie, 但是交叉共用所有的HTTP Request 物件.添加HTTP Cookie Manager, 點擊Thread Group, 然後選擇添加HTTP Cookie Manager.5.4 添加HTTP Request在我們的測試計畫中, 我們需要創建兩個HTTP Requests. 第一個是訪問Jakarta的主頁, (). 第二個是訪問/site/guidelines.html.右擊添加第一個HTTP Request. 然後修改該元素的properties1.將名字改為 HOME Page2.設置路徑為“/”. 注意的是你不需要設置server的名稱, 因為你再HTTP RequestDefaults element中已經設置了.緊接著添加第二個 HTTP request.5.5 添加一個Listener來查看和存儲測試結果最後一個要在測試計畫中添加的元素是Listener. 這個元素用來存儲所有的測試結果到一個檔和提供一個資料的視圖模式.添加Graph Results listener到Thread Group中. 然後指定一個路徑和檔案名用於存儲測試結果. 你可以輸入, 也可以通過browse按鍵來選擇.5.6 保存測試計畫經管這不是一個必須的步驟, 但是我們建議你將測試計畫在運行前存入一個檔.5.7 運行測試計畫在Run功能表中, 選擇運行.一旦JMeter完成了你的測試計畫, 選擇停止.如果你選擇將listener中的測試結果存儲到一個檔中, 那麼你將擁有這個可以被任何流覽器查看的檔. 不同的流覽器顯示不同的風格.6 建立一個高級的web測試計畫本節中, 你將學習如何建立一個更高級的測試計畫來測試web網站6.1 使用URL重寫技術處理用戶的session如果你的web程式使用URL重寫而不是cookie來保存session的資訊, 那麼你需要做一些額外的工作來測試你的網站.為了正確的進行URL回寫, JMeter需要過濾從server端獲的HTML來獲得唯一的session ID.使用合適HTTP URL Re-Writing Modifier來達到此目的. 將你的Session ID作為參數寫入到modifier中, 它將自動添加session到每一個request中. 如果request中已經有了該值, 將直接覆蓋.示例:上圖中顯示了一個使用了URL Re-writing的測試計畫. 注意modifier被附加在Thread Group上, 這樣就保證了所有執行緒組的請求都會被應用到.在上圖中, 我們看到的是URL Re-Writing modifier的GUI. 僅僅只有一個域給用戶用於設置session ID參數的名字.6.2 使用Header ManagerHTTP Header Manager 可以使你定制JMeter發送的請求的報頭. 象HTTP cookie Manager 一樣, 應該添加到合適的級別上. 除非出於某種原因你希望你測試不同的request發送不同的報頭.7 建立一個database測試計畫本節中, 你將學習如果建立一個測試資料庫的基本測試計畫.你將創建一個有10個用戶發送2個SQL請求到資料庫server的測試. 同時, 你將告訴用戶運行他們的測試三遍. 所以,總共的請求次數是:10 users * 2 requests * 3 times = 60 JDBC requests. 為了創建測試計畫, 你將使用元素: Thread Group, JDBC Request 和 Graph Results.7.1 添加用戶每個JMeter測試計畫創建的第一步都是添加Thread Group 元素. Thread Group用於設置發送請求的使用者數,頻率和請求總數.如下圖, 設置10個執行緒代表10個用戶,用戶的延遲時間為0,一共迴圈3次.7.2 添加JDBC請求儘管有JDBC DATABASE Connection Pool Defaults, JDBC Database Login Defaults 和 JDBC SQL Query Defaults 組件可用, 但是本例中並未涉及.我們要添加兩個JDBC Request. 下圖為請求一.注意: 需要將需要的JDBC的drive放入Classpath中.下圖為請求二.7.3 添加Listener元素來監視和存儲測試結果如下圖所示, 添加了一個Graph Result Listener.7.4 保存測試計畫7.5 運行測試計畫8 建立一個FTP測試計畫1 添加用戶通過添加一個Thread Group來添加用戶2 添加Default FTP Request Properties添加一個config element中的FTP Request Default 用於所有的FTP requests.3 添加 FTP Requests在我們示例中, 要添加兩個FTP請求.請求一:請求二:8.4 添加一個Listener來查看和存儲測試結果最後, 我們添加了一個Spline Visualizer listener用於觀察和存儲測試結果.8.5 保存測試計畫8.6 運行測試計畫9 建立一個LDAP測試計畫9.1 添加用戶創建一個Thread Group用於添加用戶和設置請求次數和頻率.9.2 添加一個登錄控制元素可以添加一個Config Element的Login Config Element用於用戶登錄控制.9.3 添加一個LDAP Request Defaults可以添加一個config element中的LDAP Request Defaults用於控制一些共用預設值.9.4 添加LDAP Request添加的LDAP Request通過選擇不同的測試配置來完成四種操作: 添加,刪除,修改和查詢. 例如, 修改:9.5 添加一個Listener來查看和保存測試結果添加了一個View Results in Table的listener9.6 保存測試用例9.7 運行測試用例10 創建一個Web Service測試計畫對於Web Service Sampler, 當前是使用Apache Soap driver. 需要activation.jar和mail.jar.由於license的限制, JMeter中並未包含這些jar檔.如果sampler顯示從web service獲得一個error. 需要同時檢查SOAP的資訊來確認格式是正確的. 特別的要確認xmlns的attributes要和WSDL完全一致. 如果xml的namespace不同, 那麼web service將很可能返回一個錯誤. Xmethods中包括了一個公共service的列表.10.1 添加用戶10.2 添加web service 請求10.3 添加listener用於查看和存儲測試結果.10.4 保存測試計畫10.5 運行測試計畫11 創建JMS Point-to-Point測試計畫需要如下jar檔的支援activation.jaractiveio-1.0-SNAPSHOT.jaractivemq-3.0.jaractivemq-core-3.0.jarcommons-logging-1.0.3.jarconcurrent-1.3.4.jargeronimo-spec-j2ee-jacc-1.0-rc4.jargeronimo-spec-j2ee-management-1.0-rc4.jargeronimo-spec-jms-1.1-rc4.jargeronimo-spec-jta-1.0.1B-rc4.jar。
Jmeter使用指南 转word资料10页
Jmeter使用指南转本文重点介绍JMeter工具在测试中地位以及其中一些难以理解或者手册中含糊不清的感念,读者可以通过本文了解这些概念,然后再根据自己的需要查阅JMeter中各个组件的具体用法来完成测试工作。
1.简介JMeter是一个专门用于测试C/S应用的桌面测试软件(并不适合于B/S结构,因为它很难模拟用户在browser上的动作,如果需要测试B/S结构的应用,可以选择Selenium这样的工具),主要被用来完成功能测试,压力测试,性能测试等工作。
JMeter与其它测试软件相比的优势如下:它可以帮助测试者很方便地模拟出多用户同时访问服务器的环境(通过Thread Group),这样可以检测出很多平时在单线程环境下无法暴露出来的问题。
应用范围很广,几乎所有你能想到的C/S应用它都能够提供了相应的支。
JMeter中自己定制了一些特定应用的测试方案,例如对HTTP Server的测试、对数据库的测试、对Java程序的测试等。
此外即使Jmeter没有提供当前应用的测试环境,用户也可以同昨BeanShell的方式自行定制。
提供了丰富的逻辑控制器,可以允许测试人员很方便地写出一些相对复杂的测试逻辑。
提供完善的变量机制以及配置机制,帮助测试人员减轻编写用例的负担,减少重复工作。
提供了强大的监控组建,帮助测试人员很方便地得到测试结果统计信息。
JMeter的劣势:难以针对"正确性"进行测试。
虽然JMeter提供了断言机制,但是通常我们的测试在模拟多用户操作,因此某个用户发出一个请求后得到的响应是不可预测的(例如同时对一个数据库表进行读写,虽然我们可以让每个模拟用户将写入的信息存储在某个公共区域,但仍然可能会有问题,因为数据库写入的时间和写入公共区域的时间并不能保证同步),因此如果想通过JMeter验证应用的正确性还是比较麻烦的。
通常我们只是利用断言来检查一些较为简单而又重要的信息,例如返回码。
JMeter
Jmeter快速入门教程(一) - 认识jmeter和google插件作者:whoistester2011-12-25 23:10[版权所有 & jmeter.cf]Jmeter是免费开源的性能测试工具(同时也可以用作功能测试,http协议debug工具 ). 在如今越来越注重知识产权的今天, 公司越来越不愿意冒着巨大的风险去使用盗版的商业性能测试工具. 但如果不使用盗版, 昂贵的License费用也不是每一个中小型公司,甚至是大型公司愿意投入的. 所以很多公司甚至还在铤而走险的买少量的license,然后大范围的使用. jmeter这个免费且好用的性能测试工具, 有足够的理由成为是我们不二的选择。
Jmeter是java语言编写,开放源代码。
有了源代码,使得我们可以更深入的分析一些问题。
(比如响应时间等),这样有助于我们更深刻理解性能测试,可以学习如何才能更精确的计量时间。
商业软件就没有这个优点,你想知道的东西,只能去看他们提供的文档,但文档并没有代码更能说服人。
Jmeter下载地址:/download_jmeter.cgi当前的版本是2.5.1 。
接下来我们就要进入正题。
但在进入之前,我们不得不提google code里的jmeter plugins. 由于jmeter开源且本身是一个框架,可以让第三方来加入自己的插件。
而这个 jmeter plugin又提供了更强大的feature,让我们更得心应手。
尤其是那些熟悉loadrunner的测试人员,用了google code里的jmeter plugin,你就不会再觉得jmeter 太难用了。
我们还有必要说一下jmeter和lr的基本区别。
由于jmeter是免费开源软件,GUI设计的确实不是多么美观,在controller和agent模式下的管理也非常不方便。
但是jmeter 可以支持第三方插件,且开源,所以还是有着旺盛的生命力。
jmeter可以实现的测试如下几种类型:1.Web - HTTP, HTTPS2.SOAP3.Database via JDBC4.LDAP5.JMS6.Mail - POP3(S) and IMAP(S)7.FTP服务8.MongoDB (NoSQL) 新增支持9.Native commands or shell scripts 新增支持10.TCP 新增支持google code里的jmeter plugins 可以增加如下的feature:具体支持的功能与增强特性,见/p/jmeter-plugins/注意: 最新的jmeter-plugins 已经支持了webdriver sampler, 已经可以模拟浏览器的行为,更真实的模拟用户访问web的行为, 可以得到更真实的性能数据.具体是否使用,还需要根据自己的测试场景进行判断. (作者目前并不建议盲目的使用, 需要慎重考虑. 原因: 用户体验方面的性能测试可以由其他工具完成, 而性能测试则专注于特定的问题)具体资料信息,请访问/wiki/WebDriverSet/一。
JMeter简介
增加Cookie支持
• 要添加HTTP Cookie管理器,先选中线程 组,然后可以通过“编辑”菜单或右键弹 出菜单来选择“添加”->“配置元件”>“HTTP Cookie管理器”。
增加HTTP请求
• 在这个测试计划中,我们需要实现两个 HTTP请求。 • 第一个就是Jakarta网站首页 (/) • 第二个就是工程向导网页 (/site/guidelines.ht ml)。
使用Badboy
• 在地址栏(图中用红色框住部分)中输入你需 要录制的Web应用的URL,这里我们以 为例,并点击GO按钮 开始录制.
• 开始录制后,你可以直接在Badboy内嵌的浏 览器(主界面的右侧)中对被测Web应用进行 操作,所有的操作都会被记录在主界面点击工具栏中的“停止录制” 按钮,完成脚本的录制.
• WEB服务器名字或IP,对于你现在正在创 建的这个测试计划,所有的HTTP请求都发 送到相同的WEB服务器, 。输入这个域名。这是 唯一我们需要指定的缺省值,剩下的地方 都保持默认不变。 • HTTP请求默认值元件不会告诉JMeter去发 一个HTTP请求。它只是简单的定义HTTP 请求元件所用的一些缺省值
• 首先给Jakarta Users元件添加第一个HTTP 请求(添加->取样器-> HTTP请求)。然后从 树中HTTP请求元件并修改正面的属性(见 下图)。 • 1.更改名称域为“主页”。 • 2.设置路经为“/”。注意你不必要设计服 务器的名称域,因为你已经在HTTP请求默 任元件中设定过了。
添加用户
• 处理每个JMeter测试计划的第一步就是添 加线程组元件。这个线程组会告诉JMeter 你想虚拟的用户数量,发送请求的频率以 及发送请求的数量。 • 选中测试计划,右键单击选择添加菜单, 然后再选择Threads->线程组。
Jmeter性能测试中文手册
JMeter使用教程付增斌2006-3-17第一章:用JMeter 测量Oracle数据库性能一、简介在当今快节奏的世界中,只是完成工作是不够的。
完成工作,并且要以最简便的方式完成工作,这才是关键。
数据库世界也不能幸免这种对性能的渴求。
客户希望能够迅速而有效地保存和提取其数据。
在许多场合设置中,Oracle都拥有领先的性能跟踪记录,领先于众多的数据库竞争对手。
不幸的是,由于数据库或者配置中的某些设计缺陷,许多Oracle用户可能无法获得Oracle性能的所有益处。
有许多关于Oracle性能调整的文章和论文,Oracle中也有许多能够进行深入分析的好工具。
我将在这篇文章中介绍一个工具——Apache的JMeter,这是另外一个可以添加到您的工具箱中的工具,它可以帮助您了解数据库的性能,还能帮助您进行模拟测试。
二、关于Apache JMeterJMeter是Apache Jakarta项目麾下的一个产品。
JMeter是基于Java TM Swing 的桌面应用程序,是为进行负载测试、测量系统性能而设计的。
最初,它是为测试Web应用程序而设计的。
但是它后来进行了扩展,现在您已经可以用它来测试关系数据库了(通过 JDBC TM)。
在JMeter的官方站点/jmeter/ 上,您可以了解关于它的更多内容。
利用 JMeter,您可以确保您的数据库可以满足某些指标(例如能够处理一定数量的并发用户)。
模拟测试是成功项目的关键。
JMeter可以针对Oracle模拟出繁重的负载。
这可以通过JMeter的多线程框架来实现。
JMeter的多线程框架允许大量线程进行并发采样。
正如您将在本文后面看到的,JMeter能为您提供图形化的反馈。
三、获得JMeter 并设置您的测试环境您可以从 /builds/jakarta-jmeter/release/ 下载 JMeter 的最新发行版。
目前最新的 JMeter 版本是 2.2.1。
Jmeter学习概要
Jmeter学习概要1. Jmeter简介Apache Jmeter是一个100%的纯java桌面应用,用于压力测试和性能测试。
Jmeter最早是为了测试Tomcat的前身JServ的执行效率而诞生的,主要是针对web的压力和性能测试,但后来扩展到其他测试领域。
从下面的图中我们可以看到:Jmeter可以用于测试FTP、HTTP、RPC、JUNIT、JMS、LDAP、WebService(Soap) Request以及Mail和JDBC(数据库压力测试)另外,JMeter能够对应用程序做衰退测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。
为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
在知道如何具体使用之前,先说一下JMeter 的主要测试组件:1. 测试计划是使用JMeter 进行测试的起点,它是其它JMeter 测试元件的容器。
2. 线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。
实际的请求内容在Sampler中定义,它被线程组包含。
3. 监听器负责收集测试结果,同时也被告知了结果显示的方式。
4. 逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。
5. 断言可以用来判断请求响应的结果是否如用户所期望的。
它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。
这个限制对于有效的测试是非常有用的。
6. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。
7. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。
前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。
8. 定时器负责定义请求之间的延迟间隔。
好了,简单介绍就到这里!下面是一些有关Jmeter的学习文档和资料的网站Jmeter官方网站:/jmeter/Jmeter中文网站(目前只是部分翻译):/jmeter/2. Jmeter的安装与配置A.JMeter 的安装JMeter 的安装非常简单,从官方网站上下载,解压之后即可使用。
Jmeter中文使用手册(完整版)
Jmeter中文手册1. 简介Apache JMeter是100%纯java桌面应用程序,被设计用来测试客户端/服务器结构的软件(例如web应用程序)。
它可以用来测试包括基于静态和动态资源程序的性能,例如静态文件,Java Servlets,Java 对象,数据库,FTP 服务器等等。
JMeter可以用来在一个服务器、网络或者对象上模拟重负载来测试它的强度或者分析在不同的负载类型下的全面性能。
另外,JMeter能够通过让你们用断言创建测试脚本来验证我们的应用程序是否返回了我们期望的结果,从而帮助我们回归测试我们的程序。
为了最大的灵活性,JMeter允许我们使用正则表达式创建断言。
1.1 历史Apache软件组织的Stefano Mazzocchi是JMeter的创始人。
他编写它起初是为了测试Apache JServ的性能(一个已经被Apache Tomcat工程所替代的工程)。
我们重新设计JMeter来增强用户界面并增加功能测试的能力。
1.2 未来我们希望看到作为开发者利用它的可插入架构使JMeter的功能快速扩展。
未来发展的主要目标是在没有影响JMeter的负载测试能力的情况下尽可能使JMeter 成为最实用的回归测试工具。
2. 入门开始使用JMeter最容易的方法是首先下载最新版并且安装它。
这个版本包含所有你在构建和运行Web,FTP,JDBC,和JNDI等测试时使用需要的所有文件。
如果你想执行JDBC测试,你当然需要从供应商得到适当的JDBC驱动。
JMeter 没有提供任何JDBC驱动。
你可能需要下载的其它软件:∙BeanShell- BeanShell函数和测试元件需要∙Java Activation Framework- JavaMail需要∙Java Mail- Mail可视化,Mail Reader 和WebService(SOAP)取样器需要∙JMS- JMS 取样器需要∙General Java download page详细参见JMeter Classpath一章安装附加的jar包∙下一步, 开始使用JMeter并且参见用户手册创建一个测试计划一章使自己更加熟悉JMeter基础 (例如,添加和删除元件)。
jmeter知识概括 -回复
jmeter知识概括-回复JMeter知识概括一、什么是JMeter?JMeter是一款开源的负载和性能测试工具,由Apache软件基金会开发。
它可以用于测试静态和动态资源,例如静态文件、Java对象、WEB服务、数据库、FTP服务器等等。
二、JMeter的安装和配置1. 下载和安装JMeter:可以从Apache官方网站下载JMeter的最新稳定版本,并根据官方的安装说明进行安装。
2. 配置JDK:JMeter需要Java Development Kit(JDK)来运行。
确保您已经安装了JDK,并且JAVA_HOME环境变量已经正确配置。
3. 启动JMeter:可以通过运行bin目录下的jmeter.bat(Windows)或jmeter.sh(Linux)来启动JMeter。
三、JMeter的基本概念1. 线程组(Thread Group):线程组是测试计划中的基本元素,它定义了测试的并发用户数、循环次数、启动延迟等。
2. 取样器(Sampler):取样器用于模拟用户的行为,例如发送HTTP请求、FTP请求、数据库查询等等。
3. 监听器(Listener):监听器用于收集测试结果,并以图表、表格等形式展示。
四、JMeter的基本操作1. 添加线程组:在测试计划中右键点击,选择"Add" -> "Threads (Users)" -> "Thread Group",然后可以设置线程组的属性。
2. 添加取样器:在线程组下右键点击,选择"Add" -> "Sampler",根据需要选择相应的取样器。
例如,选择"HTTP Request"可以模拟发送HTTP 请求。
3. 添加监听器:在线程组下右键点击,选择"Add" -> "Listener",根据需要选择相应的监听器。
jmeter知识
①负载测试:负载测试是指一定的软件、硬件及网络环境下,运行一种或多种业务,在不同虚拟用户数量
的情况下,测试服务器的性能指标是否在用户的要求范围内 ,以此确定系统所能承载的最大用户数、最大 有效用户数,以及不同用户数下的系统响应时间及服务器的资源利用率。
②压力测试:压力测试是指在一定的软件、硬件及网络环境下,模拟大量的虚拟用户向服务器产生负载,
中选择线程组即可。jmeter中 每个测试计划至少需要包含一个线程组,当然也可以在一个计划中创
建多个线程组,那么多个线程组之间又会怎样的顺序执行(串行还是并行)?在测试计划下面多个 线程是并行执行的,也就是说这些线程组是同时被初始化并同时执行线程组下的Sampler的。
线程组主要包含三个参数:线程数、准备时长(Ramp-Up Period(in seconds))、循环次数。 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数在这里也就是设置多少个线程数。 准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为20 ,准备时长为10 ,那么需要10秒钟启动20 个线程。也就是每秒钟启动2个线程。 循环次数:每个线程发送请求的次数。如果线程数为20 ,循环次数为100 ,那么每个线程发送100次请求。总请求 数为20*100=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,一到选择停止运行脚本。
谢谢 大家
商业
开源
jmeter简单的性能测试案例
• 建立测试计划:启动jmeter后,jmeter会自动生成一个空的测试计划,用户可以基于该测试计划建立
自己的测试计划。
• 添加线程数:一个性能测试请求负载是基于一个线程组完成的。一个测试计划必须有一个线程组。
测试计划添加线程组非常简单。在测试计划右键弹出下拉菜单(添加-->Threads(Users)--->线程组)
转载JMeter中文使用手册
JMeter中文使用手册如果你想执行JDBC测试,你当然需要从厂商得到适当的JDBC驱动。
JMeter没有提供任何JDBC驱动。
其它你可能需要下载的软件:Bea nShell?Java Activati on Framework - JavaMailJava Mail - mail 显示and SOAP 测试需要JMS - JMS取样器?Gen eral Java dow nl oad page?详细参见安装的jar包中的JMeter Classpath 一章?下一步,开始使用JMeter并且参见用户手册构建测试计划一章使自己更加熟悉JMeter基础(例如,添加和删除元素)。
最后,参见如何构建一个明确类型的测试用例的适合章节。
例如,如果你对Web应用测试感兴趣,那就参见构建一个Web测试计划。
其他测试计划的细节是JDBC, FTP, and JNDI。
一旦你熟练构建和执行JMeter测试计划,通过你的测试计划你会观察到给你更多帮助的各种元素的配置(定时器,监听器,断言,和其他)。
需求JMeter需要运行环境匹配的最小需求。
Java版本JDBC驱动-P [代理服务器端口] -N [非代理主机](例如:*.|localhost)-u [代理证书用户名-如果需要]-a [代理证书密码-如果需要]例女口: jmeter -H -P 8000 -u user name -a password -N localhost或者, 你使用--proxyHost, --proxyPort, --username, and --passwordJMeter也有自己的内建HTTP代理服务器,来记录HTTP (不是HTTPS浏览器会话。
这是和上面的代理设置描述不混淆的,它是在JMeter发出HTTP或者HTTPS青求时使用的。
非用户界面模式(命令行模式)为了不相互影响测试,你可以选择运行没有用户界面的JMeter。
这样做,使用下列命令选项:-n这是指定JMeter在非用户界面模式运行-t [包含测试计划的JMX文件的名字]-l [记录取样结果的JTL文件的名字]-r运行在文件里所有的远程服务器(或者通过在命令行覆盖属性指定远程服务器)这个脚本也允许我们指定可选的防火墙/代理服务器信息:-H [代理服务器主机名或者ip地址]-P [代理服务器端口 ]例如:jmeter -n -t -l -H -P 8000服务器模式 为了分布测试,在服务器模式运行JMeter ,并且通过用户界面控制每一台服务器。
Jmeter中文手册(完全版)
安装JDK:JAVA的环境变量设置使用鼠标右击“我的电脑”-〉属性->高级—〉环境变量系统变量—>新建—>变量名:JAVA_HOME 变量值:d:\jdk系统变量—>编辑->变量名:Path 在变量值的最前面加上:%JAVA_HOME%\bin;系统变量-〉新建-〉变量名:CLASSPATH 变量值:.;安装TomcatCATALINA_HOME=d: \tomcatUser Manual用户手册1 介绍Apache JMeter 是100%纯JAVA桌面应用程序, 被设计为用于测试CS结构的软件.同时也可以用来测试静态和动态资源的性能,例如:静态文件, Java Servlets, CGI Scripts, Java Object,数据库和FTP服务器等等。
JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。
同时, JMeter可以帮助你对你的应用程序进行回归测试. 通过你创建的测试脚本和assertions来验证你的程序返回了所期待的值. 为了更高的适应性, JMeter允许你使用常规表达式来创建这些assertions。
2 开始2.1 安装下载安装最新的版本, 将会包含所有你需要建立和运行Web, FTP, JDBC和JNDI测试的文件. 如果你想进行JDBC测试,你需要使用合适的JDBC driver. JMeter中不包含JDBC drivers。
其他可能需要下载的软件:●Bean Shell●Java Activation Framework – needed for Java Mail●Java Mail – needed for mail visualiser and SOAP test●JMS – for JMS samples●General Java Kit接下来一步,就是浏览”建立测试计划”一章来熟悉JMeter的基本操作,例如:添加和删除元素. 最后,浏览适当的章节来学习如何建立不同种类的测试计划. 例如, 如果你对Web应用程序的测试比较感兴趣, 就浏览”建立一个Web测试计划"章节。
Jmeter基础介绍
测试计划:是使用Jmeter 进行测试的起点,是其他 测试元件的容器,一个完 整的测试计划包括一个或 者多个线程组、逻辑控制 器、取样器、监听器、配 置元件 用户自定义的变量:用户 可以自己定义的变量,使 用此变量时,直接${变量 名}引用。 eg: ${IP},${port}
JMETER主要组件—线程组
监听器—图形结果
样本数目:发出去的请求数
最新样本:最近一个Request的响应时间
平均:所有Request响应时间的平均值 偏离:所有Request响应时间的标准差 吞吏量:单位时间内(一般是1分钟)处理Request的个数 中值:所有Request响应时间的中间值
监听器—用表格查看结果
显示每一个请求 的信息,包括发 起请求的县城, 开始时间,请求 响应时间,请求 字节数
Jmeter主要组件—正则表达式提取器
提取器作用:从 请求的响应结果 中取到需要的内 容,从而实现关 联 要检查的响应字 段:正则表达式 提取内容的范围
引用名称:其他地方引用提取值的变量名称,具体的引用方式是${变量名} ,eg:${submitTime}
Jmeter主要组件—监听器
监听器:负责收集 测试结果,支持将 结果数据写入文件。 监听范围:当前节 点层及当前节点的 子节点(直至叶子 节点),即监听器 可以监听当前层以 及比它低的层。 常用监听器: 察看结果树 聚合报告
图形结果
用表格查看结果 察看结果树:显示取样器请求和响应的细节,包括消息头,请求的数据,响应的数据 取样器结果:显示的是取样器相关参数(客户端参数不响应参数) 请求:发送请求的具体值 响应数据:服务端迒回的相应参数
Throughput:吞吏量,每秒/每分钟(具体看“/” 后面的单位)处理的Request数 KB/sec:每秒从服务器端接收到的数据
JMeter使用介绍
JMeter测试WEB性能简介一.JMeter介绍 (2)1.Apache JMeter是什么 (2)2.Apache JMeter能做什么 (2)二.JMeter安装 (3)1.安装环境 (3)2.安装过程 (3)三.JMeter页面和主要测试组件 (4)测试计划(Test Plan ): (4)线程用户(Threads Users) (5)测试片段(Test Fragment) (6)取样器(Sampler) (7)逻辑控制器(Logic Controller) (8)配置元件(Config Element) (9)定时器(Timer) (10)前置处理器(Per Processors) (10)后置处理器(Post Processors) (11)断言(Assertions) (12)监听器(Listener) (13)四.主要参数设置和聚合报告分析 (14)1.创建一个简单的测试内容 (14)2. 建立测试计划 (14)3. 设置基本参数 (16)4. 添加HTTP请求 (16)5. 设置qps (19)6. 添加聚合报告 (20)7.执行脚本 (21)8. 聚合报告 (22)五.使用badboy录制脚本 (23)1.badboy介绍 (23)2. badboy安装 (23)3. 使用badboy录制脚本 (23)六.使用JMeter测试XXX系统 (26)1. XXX系统测试内容 (26)2.硬件环境 (27)3.录制脚本 (27)4参数设置 (30)5. 执行测试 (34)6. 结果分析 (34)七.小结 (35)一.JMeter介绍1.Apache JMeter是什么Apache JMeter 是Apache组织的开放源代码项目,是一个100%纯Java桌面应用,用于压力测试和性能测量。
它最初被设计用于Web应用测试但后来扩展到其它测试领域。
Apache JMeter可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,Java对象,数据库和查询,FTP服务器或是其它资源)的性能进行测试。
jmeter请求体参数
jmeter请求体参数(最新版)目录1.JMeter 简介2.JMeter 请求体参数的概念与分类3.如何在 JMeter 中设置请求体参数4.JMeter 请求体参数的应用示例5.总结正文1.JMeter 简介JMeter 是 Apache JMeter 的一个简称,它是一款开源的、基于 Java 的性能测试和负载测试工具。
通过模拟用户操作和网络行为,JMeter 能够测试应用程序或服务在高负载和高并发下的性能表现。
在 JMeter 中,用户可以通过构造请求来对服务器进行测试。
2.JMeter 请求体参数的概念与分类在 JMeter 中,请求体参数是指在发送请求时需要附加在请求正文中的数据。
这些数据可以包括表单数据、JSON 数据、XML 数据等。
请求体参数在发送请求时被传递给服务器,用于验证用户身份、提取所需数据等。
根据参数的类型和用途,JMeter 请求体参数可以分为以下几类:- 标量参数:单个数值的参数,如用户 ID、密码等。
- 矢量参数:多个数值的参数,如搜索关键词列表等。
- 关联参数:需要与其他参数关联使用的参数,如购物车中的商品 ID 等。
- 文件参数:需要上传文件的参数,如图片、附件等。
3.如何在 JMeter 中设置请求体参数要在 JMeter 中设置请求体参数,用户需要按照以下步骤操作:- 添加 HTTP 请求:在测试计划中添加一个 HTTP 请求,选择适当的协议(如 HTTP、HTTPS 等)和方法(如 GET、POST 等)。
- 添加参数:在 HTTP 请求中添加参数,可以在“参数名”字段中输入参数名称,然后在“参数值”字段中输入参数值。
如果有多个参数,可以使用“添加参数”按钮继续添加。
- 设置参数类型:根据参数的类型,选择合适的参数类型。
例如,对于标量参数,可以选择“文本参数”;对于矢量参数,可以选择“csv 参数”等。
- 设置参数编码:为了保证参数在传输过程中的正确性,需要设置参数编码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
安装JDK:JAVA的环境变量设置使用鼠标右击“我的电脑”->属性->高级->环境变量系统变量->新建->变量名:JAVA_HOME 变量值:d:\jdk系统变量->编辑->变量名:Path 在变量值的最前面加上:%JAVA_HOME%\bin;系统变量->新建->变量名:CLASSPATH 变量值:.;安装TomcatCATALINA_HOME=d: \tomcatUser Manual用户手册1 介绍Apache JMeter 是100%纯JAVA桌面应用程序, 被设计为用于测试CS结构的软件.同时也可以用来测试静态和动态资源的性能, 例如:静态文件, Java Servlets, CGI Scripts, Java Object, 数据库和FTP服务器等等. JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能.同时, JMeter可以帮助你对你的应用程序进行回归测试. 通过你创建的测试脚本和assertions来验证你的程序返回了所期待的值. 为了更高的适应性, JMeter允许你使用常规表达式来创建这些assertions.2 开始2.1 安装下载安装最新的版本, 将会包含所有你需要建立和运行Web, FTP, JDBC和JNDI测试的文件. 如果你想进行JDBC测试, 你需要使用合适的JDBC driver. JMeter中不包含JDBC drivers.其他可能需要下载的软件:●Bean Shell●Java Activation Framework – needed for Java Mail●Java Mail – needed for mail visualiser and SOAP test●JMS – for JMS samples●General Java Kit接下来一步, 就是浏览”建立测试计划”一章来熟悉JMeter的基本操作, 例如:添加和删除元素. 最后,浏览适当的章节来学习如何建立不同种类的测试计划. 例如, 如果你对Web 应用程序的测试比较感兴趣, 就浏览”建立一个Web测试计划”章节. 其他种类的测试计划建立的章节包括:JDBC, FTP和JNDI.一旦你熟悉了建立和运行JMeter测试计划, 就可以开始熟悉各种配置参数, 例如: timers, listeners, assertions和其他的参数, 来帮助你更好地控制你地测试计划.2.2 系统要求JMeter 1.8 以上的版本需要JDK1.4以上的版本支持运行.JMeter可以运行在如下操作系统上: Unix, Windows和Open VMS.2.3 可选项目如果你打算进行JMeter开发或者使用Sun的Java标准扩展包,你需要如下所列的可选包:2.3.1 Java Compiler需要1.4以上的JDK版本2.3.2 SAX XML ParserJMeter默认使用Apache的Xerces XML parser. 如果你想使用一个不同的XML parser, 将第三方的parser包放入JMeter的classpath中,然后使用设置的parser包的全名更新文件jmeter.properties2.3.3 Email SupportJMeter拥有有限的邮件功能来发送测试结果到指定邮箱中. 应用邮箱功能,需要将Sun的JavaMail包放入JMeter的classpath中并激活.2.3.4 SSL Encryption为使用HTTPS测试web服务器, JMeter需要设立SSL机制. 将所需要的SSL类包放入JMeter 的classpath中, 更新jmeter.properties来注册SSL Provider.可以使用SSL Manager 用来管理这些证书.注意: 在JDK 1.4以上版本, SSL已经作为标准库加入.2.2.5 JDBC Driver你需要将你的数据库供应商提供的JDBC drivers添加到classpath中来进行JDBC测试.2.2.6 Apache SOAPApache SOAP测试需要mail. jar和activation.jar. 只需要将下载的两个jar文件复制到JMeter下的lib目录中, JMeter会自动的识别和使用它们.2.3 运行运行JMeter, 使用jmeter.bat (windows) 或 jmeter (UNIX).2.3.1 JMeter的classpathJMeter自动在/lib和/lib/ext目录中的jar中的类. 如果你想添加其他JAR文件到JMeter 的classpath中,你必须复制他们到lib目录中.如果你开发了一个JMeter特定组件, 生成jar包后复制到lib目录下的ext目录中.而且,你也可以将有效的jar文件安装到$JAVA_HOME/jre/lib/ext目录中.值得注意的是设置CLASSPATH环境变量没有任何作用. 这是因为JMeter使用”java –jar”开始, java命令自动忽略CLASSPATH值, 同时-jar选项的使用将屏蔽掉-classpath 和-cp选项.2.3.2 使用代理服务器如果你在防火墙或者代理服务器后进行测试, 你需要给JMeter提供防火墙和代理服务器的hostname和port号. 在命令行运行 jmeter.bat或jmeter命令并使用如下参数:-H 代理服务器的hostname或者IP地址-P 代理服务器的port号-u 代理服务器验证使用的用户名-a 代理服务器验证使用的用户密码示例:jmeter –H yahoo –P 8080 –u test –a password2.3.3 非GUI模式对于那些非交互的测试, 你可以使用非GUI的模式运行JMeter. 使用如下命令:-n 指定的JMeter运行在non-GUI模式下-t 包含测试计划的JMX文件的名称-l 用于记录简单结果的JTL文件名称.-r 运行所有的在jmeter.properties中指定的远程主机.(或在命令行中提供的覆盖属性提供的远程主机名.也可以同时提供防火墙或者代理服务器的信息-H 服务器名或IP地址-P 端口号示例:jmeter –n –t my.jmx –l log.jtl –H yahoo –P 88002.3.4 服务器模式为了对分布式测试, 可以运行在服务器模式下, 然后通过GUI来控制每个服务器.运行jmeter-server/jmeter-server.bat, 附加下列可选项:-H 代理服务器的hostname或IP地址-P 端口号示例:jmeter-server –H yahoo –P 80002.3.5 通过命令行来重载PropertiesJava system properties, JMeter properties和logging properties 能够直接通过命令行来直接重载而不用修改jmeter.properties文件. 使用以下参数项:-D[prop name]=[value] 定义一个java system property值-J[prop name]=[value] 重载一个JMeter property-L[category]=[priority] 重载一个logging setting, 设置一个指定的类别名给指定的优先级别-L标志位可以不指定category,将其设为root级别示例:jmeter –Duser.dir=/home/mstover/jmeter_stuff \ -Jremote_hosts=127.0.0.1 –Ljmeter.engine=DEBUGjmeter –LDEBUG注意: 命令行输入的properties在启动时先处理, 但是晚于logging system的建立. 所以尝试使用-J标志去更新log_level或者log_file的properties将没有任何效果.2.3.6 Logging和error信息如果JMeter检查到一个错误, 一个信息就被写道log文件中. Log文件的名字是在jmeter.properties文件中定义的. 默认值位jmeter.log, 在JMeter的开始目录中可以看到, 例如 bin目录中.除了记录错误信息, jmeter.log文件中同时记录了一些测试运行的信息. 例如:10/17/2003 12:19:20 PM INFO - jmeter.JMeter: Version 1.9.2003100210/17/2003 12:19:45 PM INFO - jmeter.gui.action.Load: Loading file:c:\mytestfiles\BSH.jmx10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Running the test!10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Starting 1 threads for group BSH. Ramp up = 1.10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Continue on error10/17/2003 12:19:52 PM INFO - jmeter.threads.JMeterThread: Thread BSH1-1 started 10/17/2003 12:19:52 PM INFO - jmeter.threads.JMeterThread: Thread BSH1-1 is done 10/17/2003 12:19:52 PM INFO - jmeter.engine.StandardJMeterEngine: Test has endedLog文件有助于定位错误出现的原因,因为它并未打断测试来显示一个error窗口.2.4 配置JMeter如果你想修改JMeter运行使用的properties,你可以通过两种方式:修改bin目录中的文件jmeter.properties或者创建你自己的properties文件使用命令行来指定该文件.Parameters3 建立测试计划一个测试计划描述了一系列JMeter在运行中要执行的步骤. 一个完整的测试计划包含一个或多个Thread Groups, logic controllers, sample generating controllers, listeners, timers, assertions和configuration elements.3.1 添加删除 Elements添加elements到测试计划,可以通过在tree中element上点击右键,然后从add列表中选择一个新的element. 同样,elements也可以通过open选项从一个文件中载入.删除一个element,确定该element被选定,右击选择删除选项.3.2 载入和存储elements载入文件中的elements,在已有的tree中点击右键, 然后选择open选项. 选择elements 存储的文件, JMeter将载入文件中的所有elements到tree中.存储tree的elements, 选择一个element然后右击, 选择save选项.JMeter会存储选定的element, 以及所有的子elements. 这样你就可以存储测试树的一段, 单独的element或者整个测试计划.3.3 配置tree的elements任何一个一个测试树中的element都可以在JMeter的右边框架显示. 这样允许你来配置该测试element的属性. 能够配置什么属性取决于你选定的element的类型.3.4 运行测试计划在run菜单中选择开始来运行测试计划. 停止测试计划, 从菜单中选择停止. JMeter不会自动的在运行测试计划时有任何表现. 一些listeners使得JMeter运行表现出来.但是唯一的方法是检查run菜单中的start选项, 如果是disable的而且stop是enabled,那么JMeter就在运行你的测试计划,至少表面上看来如此.3.5 Scoping RulesJMeter测试树中包含的elements是分级和有次序的.一些elements在测试中有严格的等级要求(Listeners, Config Elements, Post-Processors, Pre-Processors, Assertions, Timers), 而其他一些有primarily ordered的要求(controllers, samplers). 当你创建测试计划时, 你需要建立一个有次序的sample请求(通过sampler), 这些反映了一组需要执行的测试步骤. 这些请求经常在有序的controllers中组织.例图1请求的次序将为: one, two, three, four.有些controllers会影响他们sub-elements, 你可以在component reference 中查看这些.一些其他的elements是有级别的. 例如, Assertion在测试树中是有级别的.如果他的父亲节点是一个request,那么它将仅仅影响该request. 如果父节点是一个controller, 那么它将影响该controller的所有后代的请求. 例如:Assertion #1仅仅应用到Request One上. 而Assertion#2应用到Request Two和Three 上.另外一个关于Timers的示例:在这个例子中, request的名字反映了他们在测试中应该执行的次序.Timer#1将应用到Request Two, Three和Four上(注意对于分等级的elements如何排序毫不相关). Aserrtion#1将仅仅应用到Request Three上. Timer#2将影响所有的请求.如果你想想任何一个request通过树的路径被传递, 到它的父节点,在到它的父节点的父节点, 以此类推, 在每一级的父节点上集合所有的configuration elements, 那么你就知道它是如何工作的了.注意:对于Configuration elements中的 Header Manager, Cookie Manager和Authorization manager来说, 与其他的Configuration Default elements不同. Configuration Default elements被整合成一个Sampler访问的集合.而Manager的设置不会被整合.如果超过一个的Manger在Sampler的范围中,只有一个Manager被使用,但是目前还无法判断那个被使用.4 测试计划的elements测试计划对象现在拥有了一个新的checkbox选项, 叫做”功能测试”. 如果选择,JMeter 将记录所有server为每个sample返回的值. 如果你已经在测试listeners中选定了一个文件, 那么这些数据将被写入到文件中. 这个有助于你通过一个小型的测试来检验JMeter是否配置正确, 而你的服务器返回正确的结果. 值得注意的是这个文件的大小将增长的很快使得JMeter的性能降低. 这个选项在做压力测试时需要关闭掉(默认为关闭).如果你不将数据写入文件中,那么这个选项没有任何不同.4.1 Thread GroupThread Group elements 是任何一个测试计划的开始点. 所有的测试计划中的elements都要在一个Thread Group中. 如名字显示那样, thread group element控制了一组线程, JMeter使用这些线程来执行你的测试. 你可以做如下操作来控制thread group:●设置线程的数量●设置ramp-up周期●设置测试执行的次数每一个线程都会完全和独立的执行测试计划而不影响其他线程. 多线程可以用于模拟到你的服务器程序的并发连接.Ramp-up period 告诉JMeter需要多长时间来”ramp-up”去装载全部的线程. 如果10个线程被使用, 而ramp-up period为100秒, 那么JMeter会花100秒来使得所有的10个线程运行. 每个线程将在上个线程开始后10秒开始. 又如, 如果有30个线程而ramp-up为120秒.那么每个线程在延迟4秒后启动.延迟时间=ramp-up period时间数/线程数默认的,一个thread group被设置为不限定的循环. 你可以设置thread group循环的次数.如果设置为一次, 那么JMeter将执行测试一次然后停止.Version 1.9 将允许你预定时间去运行测试. 选定Scheduler的checkbox, 你就可以设定时间.4.2 ControllersJMeter有两种controller: Samplers和Logical ControllersSamplers告知JMeter发送请求到服务器. 例如, 如果你想JMeter发送一个HTTP请求, 就添加一个HTTP Request Sampler. 当然你也可以定制一个请求, 在Sampler中添加一个或多个 Configuration Elements.Logical Controllers使你可以定制JMeter发送请求的逻辑. 例如, 你可以添加一个Interleave Logic Controller来控制交替使用两个HTTP Request Samplers. 同样, 一个特定的Logic controller, 作为Modification Manager, 可以让你修改请求的结果.4.2.1 SamplersSampler 告知JMeter发送请求到server端. JMeter现在有如下的samplers:●FTP Request●HTTP Request●JDBC Request●Java Object Request●LDAP Request●SOAP/XML-RPC Request●Web Service (SOAP) Request (Alpha Code)每个sampler都有一些可以设置的properties. 你也可以在一个sampler中添加Configuration Elements来做更多的设置. 当然, 值得注意的是JMeter按照request在tree中添加的次序来发送请求.如果你想同时发送多个并发的同一种类的request, 例如HTTP request, 到同样一台服务器. 可以考虑使用一个Defaults Configuration Element. 每个Controller拥有一个或多个默认元素.当然不要忘记添加一个Listener到你的Thread Group中来察看和存储你的测试结果.如果你对JMeter对你的request返回的response进行简单的校验很感兴趣, 你可以在Request Controller中添加一个Assertion. 例如, 在一个web程序的压力测试中, 服务器可能会返回多个成功的”HTTP Response”, 但是页面也许包含了一些错误或者丢失的部分. 你可以添加assertions来检查特定的HTML标签,常见的错误字符串,等等诸如此类的数据. JMeter允许你使用常规表达式来创建这些assertions.4.2.2 Logic ControllersLogic Controller使得用户可以定制JMeter发送请求的时机.Logic Controllers可以拥有如下的任何一个作为子elements: Samplers(requests), Configuration Element和其他的Logic Controllers. Logic Controllers可以改变子elements的请求次序. 他们可以自己修改requests, 使得JMeter可以重复发送请求等等.为了便于理解Logic Controllers在测试计划中所起的作用, 举例如下:●Test Plan⏹Thread Group◆Once Only Controller●Logic Request (an HTTP request)◆Load Search Page (HTTP sampler)◆Interleave Controller●Search “A” (HTTP Sampler)●Search “B” (HTTP Sampler)●HTTP default request (Configuration Element)◆HTTP default request (Configuration Element)◆Cookie Manager (Configuration Element)首先表明了login请求只会在第一次运行时执行. 其余的请求将自动跳过它. 达到这个效果的原因就是因为Once Only Controller的影响左右.在login之后, 下一个Sampler加载了search page (想象一下, 一个在用户登录后就转入search页面来做搜索的web程序). 这个仅仅是一个简单的请求, 并未通过任何Logic Controller的筛选过程.在search页面加载后, 我们想做一些搜索. 实际上, 我们要做两个不同的搜索. 然而, 我们想在每个独立的搜索中重新加载search页面. 我们可以用四个简单的HTTP request elements来达到目的(载入search页面,搜索”A”,载入search页面,搜索”B”). 而实际上, 我们使用了另一个方法, 我们使用Interleave Controller, 它将每次运行一个完整的测试只使用一个子element的request. 而且能够保持这些子elements的次序来运行.注意:HTTP Request Defaults是属于Interleave Controller的. 想象一下”search A”和”Search B”分享同一个”PATH”信息(一个指定的HTTP请求包括domain, port, method, protocol, path和arguments等, 还有其他额外的信息). 这导致: 两者都是search的请求, 点击同一个后台搜索引擎. 与其给两者配置相同PATH信息,不如将信息抽象出来给一个Configuration Element.当Interleave Controller传递”Search A”和”Search B”的请求时, 将自动使用HTTP Default Request Configuration Element的值来取代空白的PATH域. 所以, 我们将这些请求的PATH域空置, 然后将这些信息放入到Configuration Element中.树中接下来的element是另外一个HTTP Default Request, 这次是给Thread Group自己使用的. Thread Group拥有一个内置的Logic Controller, 因此, 它象上面的介绍的那样一样,来使用这个Configuration Element. 它将填入到任何一个通过的Request的空白中. 当你做web测试时, 这是非常有用的. 你可以将所有的HTTP Sampler elements的DOMAIN 域空白, 然后使用Thread Group中添加的HTTP Default Request的信息补充这些空白域. 这样, 你可以仅仅改变一个域就能将整个测试计划应用到另外的server上. 否则你需要一个一个更改Sampler.最后一个element是HTTP Cookie Manager. 所有的web测试中都应该添加该element, 否则JMeter将忽略所有的cookie. 在Thread Group级添加这个元素,可以保证所有HTTP request将共享同样的一个cookie.Logic Controller可以被组合起来从而获得多种不同的结果.4.3 ListenersListeners提供了获取在JMeter运行过程中搜集到的信息的访问方式. 最简单的Listener, Graph Results Listener图示出了响应时间. Listeners提供了一种图型化的方式来查看JMeter运行过程中产生的数据.另外, Listeners能够直接将搜集的到数据存入到文件中以备后用. 任何一个listener都拥有一个设置该文件存储地址的域.Listener能够加到测试中的任何位置. 他们将仅仅收集同级别和所有低级别的elements产生的数据.4.4 Timers默认的,JMeter线程发送requests时之间没有任何停顿. 我们建议你指定一个延迟时间. 这可以通过添加一个有效的Timer到你的Thread Group中实现. 如果你没有添加一个延迟时间, JMeter可能会在极短时间内发送大量的请求而引起server崩溃.Timer可以使得JMeter在线程发送每个请求时有一个延迟. 如果你添加了多个timer到一个Thread Group中时, JMeter将使用累计的延迟时间.4.5 AssertionsAssertions 允许你对在测试中从server端返回的回复中验证某些数据. 使用assertion, 你可以实际地测试你的程序返回的值是否是期望值.例如, 你可以检验回复字符串中包含一些特殊的文本. 你指定的文本可以是一个Perl-style的常规表达式, 然后指定回复中是否包含该文本, 或者整个回复都应该相符合.你可以给任何一个Sampler添加一个assertion. 例如, 你可以添加一个assertion到一个HTTP Request来检查文本”yahoo”. JMeter就会在返回的回复中察看该文本. 如果JMeter 不能发现该文本,那么将标志该请求是个失败的请求.为了查看assertion的结果, 你需要添加一个Assertion Listener到Thread Group中.4.6 Configuration ElementsConfiguration Element与Sampler紧密联系在一起工作. 尽管它不能发送请求, 但是它可以被添加到或者去修改请求(除了HTTP Proxy Server)之外.Configuration Element只能被所在的tree branch访问. 例如, 你在一个Simple Logic Controller中设置了一个HTTP Cookie Manager, 那么这个Cookie Manager将只能被设置在Simple Logic Controller中的HTTP Request Controllers访问. 如下图中所示, Cookie Manager 能够被HTTP request “Web Page1”和”Web Page2”访问, 但是不能被”Web Page3”访问.并且, 一个tree branch中的configuration element 将拥有更高的优先级, 与同一个parent branch 中的同样的元素相比. 例如, 我们定义了两个 HTTP Request Defaults elements, “Web Defaults 1”和”Web Defaults 2”. 因为我们将”Web Defaults 1”放入到一个Loop Controller中,所以只有”Web Page 2”能访问它. 而其他的HTTP requests 只能使用我们在”Thread Group”(所有其他branch的”parent”)中设置的”Web Defaults 2”.4.7 Pre-Processor ElementsPre-Processor在Sampler Request被创建前执行一些操作. 如果一个Pre-Processor被附加到一个Sampler element上, 那么它将先于Sampler Element运行. Pre-Processor最主要用于在Sampler运行前修改一些设置, 或者更新一些无法从response文本中获取的变量.4.8 Post-Processor ElementsPost-Processor在Sampler Request被创建后执行一些操作. 如果一个Post-Processor被附加到一个Sampler element上, 那么将紧接着sampler element运行后运行.Post-Processor主要用于处理回复数据, 常常用来从其中获取某些值.5 建立一个web测试计划在本章中, 你将学习到如何创建一个基本的测试计划用来测试一个web站点. 你创立5个用户向Jakarta网站的两个页面发送请求. 同时,你将设置这些用户运行他们的测试两遍. 所以, 总共的request数是:5(user)*2(request)*2(repeat 2 times)=20 HTTP Requests. 为建立测试计划, 你将使用如下elements: Thread Group, HTTP Request, HTTP Request Defaults和Graph Results.5.1 Adding Users 添加用户每个JMeter测试计划的第一步都是要添加一个Thread Group element. Thread Group将告诉JMeter 你要设置的用户的数目, 发送请求的频率和请求的次数.选择测试计划, 点击右键, 选择添加Thread Group. 这时你就应该在Test Plan下看到Thread Group element了. 如果你没有看到, 那就点击Test Plan展开树.然后, 你需要修改那些默认的properties. 选择树中的Thread Group element, 在JMeter 左侧的窗口中应该显示出Thread Group的Control Panel.第一步, 给我们的Thread Group 添加一个更详细的名称. 在名字域中, 输入Jakarta Users.然后增加用户的数目到5 (调用的线程数).在下一个域中, Ramp-Up Period, 使用默认值0秒. 这个properties告诉JMeter两个User 开始发送请求之间的延迟时间. 例如,你输入5秒, JMeter将在5秒后启动所有的用户. 所以, 我们有五个用户和5秒的Ramp-up period, 那么两个用户之间开始时间的延迟时1秒.(5 user/5=1).如果值为0, 那么JMeter将立刻开始你所有的用户操作.最后,清除”Forever”的checkbox, 输入2在Loop Count域中. 这个property告诉JMeter 要重复运行你的测试几次. 如果你输入的循环值为1, 那么JMeter将只运行一次你的测试. 如果要JMeter不停运行你的测试,选择Forever.在大部分程序中, 你不得不手工方式来更新你在控制面板中的更改. 然而, 在JMeter中, 控制面板将自动的接受你的更改. 例如, 你改变了一个element的名称, 树将自动更新为最新的文本在你离开控制面板后(例如,选择了另一个element).5.2 添加Default HTTP Request Properties现在我们已经定义了我们的用户, 是时间来定义他们要执行的任务了. 在这节, 你将指定你的HTTP 请求的默认设置. 然后, 在5.3中, 你将添加HTTP Request elements来使用你制定的默认值.选择你的Jakarta User element.右击选择添加Config Element中的HTTP Request Defaults. 然后选择这个新的元素查看他的控制面板.象大多数的JMeter元素一样, HTTP Request Default的控制面板拥有一个可修改的名称域. 在本例中,使用默认值.跳到下个域, Web Server’s Name/IP. 在本例中, 所有的测试用例将发送到同一个web服务器上去: . 将这个域名输入到该字段中. 这是我们唯一指定的默认值, 所有留下其他的域为空白值.注意:HTTP Request Defaults elements 不会告诉JMeter去发送HTTP请求. 它只是简单的定义了HTTP request elements会使用到的默认值.5.3 添加Cookie支持几乎所有的web测试要求使用cookie, 除非你的程序特别指明不使用cookie. 添加cookie 支持, 最简单的是添加HTTP Cookie Manager到每一个Thread Group中. 这会保证每个线程都获得自己的cookie, 但是交叉共享所有的HTTP Request 对象.添加HTTP Cookie Manager, 点击Thread Group, 然后选择添加HTTP Cookie Manager.5.4 添加HTTP Request在我们的测试计划中, 我们需要创建两个HTTP Requests. 第一个是访问Jakarta的主页, (). 第二个是访问/site/guidelines.html.右击添加第一个HTTP Request. 然后修改该元素的properties1.将名字改为 HOME Page2.设置路径为“/”. 注意的是你不需要设置server的名称, 因为你再HTTP RequestDefaults element中已经设置了.紧接着添加第二个 HTTP request.5.5 添加一个Listener来查看和存储测试结果最后一个要在测试计划中添加的元素是Listener. 这个元素用来存储所有的测试结果到一个文件和提供一个数据的视图模式.添加Graph Results listener到Thread Group中. 然后指定一个路径和文件名用于存储测试结果. 你可以输入, 也可以通过browse按键来选择.5.6 保存测试计划经管这不是一个必须的步骤, 但是我们建议你将测试计划在运行前存入一个文件.5.7 运行测试计划在Run菜单中, 选择运行.一旦JMeter完成了你的测试计划, 选择停止.如果你选择将listener中的测试结果存储到一个文件中, 那么你将拥有这个可以被任何浏览器查看的文件. 不同的浏览器显示不同的风格.6 建立一个高级的web测试计划本节中, 你将学习如何建立一个更高级的测试计划来测试web站点6.1 使用URL重写技术处理用户的session如果你的web程序使用URL重写而不是cookie来保存session的信息, 那么你需要做一些额外的工作来测试你的站点.为了正确的进行URL回写, JMeter需要过滤从server端获的HTML来获得唯一的session ID.使用合适HTTP URL Re-Writing Modifier来达到此目的. 将你的Session ID作为参数写入到modifier中, 它将自动添加session到每一个request中. 如果request中已经有了该值, 将直接覆盖.示例:上图中显示了一个使用了URL Re-writing的测试计划. 注意modifier被附加在Thread Group上, 这样就保证了所有线程组的请求都会被应用到.在上图中, 我们看到的是URL Re-Writing modifier的GUI. 仅仅只有一个域给用户用于设置session ID参数的名字.6.2 使用Header ManagerHTTP Header Manager 可以使你定制JMeter发送的请求的报头. 象HTTP cookie Manager 一样, 应该添加到合适的级别上. 除非出于某种原因你希望你测试不同的request发送不同的报头.7 建立一个database测试计划本节中, 你将学习如果建立一个测试数据库的基本测试计划.你将创建一个有10个用户发送2个SQL请求到数据库server的测试. 同时, 你将告诉用户运行他们的测试三遍. 所以,总共的请求次数是:10 users * 2 requests * 3 times = 60 JDBC requests. 为了创建测试计划, 你将使用元素: Thread Group, JDBC Request 和 Graph Results.7.1 添加用户每个JMeter测试计划创建的第一步都是添加Thread Group 元素. Thread Group用于设置发送请求的用户数,频率和请求总数.如下图, 设置10个线程代表10个用户,用户的延迟时间为0,一共循环3次.7.2 添加JDBC请求尽管有JDBC DATABASE Connection Pool Defaults, JDBC Database Login Defaults 和 JDBC SQL Query Defaults 组件可用, 但是本例中并未涉及.我们要添加两个JDBC Request. 下图为请求一.注意: 需要将需要的JDBC的drive放入Classpath中.下图为请求二.7.3 添加Listener元素来监视和存储测试结果如下图所示, 添加了一个Graph Result Listener.7.4 保存测试计划7.5 运行测试计划8 建立一个FTP测试计划1 添加用户通过添加一个Thread Group来添加用户2 添加Default FTP Request Properties添加一个config element中的FTP Request Default 用于所有的FTP requests.3 添加 FTP Requests在我们示例中, 要添加两个FTP请求.请求一:请求二:8.4 添加一个Listener来查看和存储测试结果最后, 我们添加了一个Spline Visualizer listener用于观察和存储测试结果.8.5 保存测试计划8.6 运行测试计划9 建立一个LDAP测试计划9.1 添加用户创建一个Thread Group用于添加用户和设置请求次数和频率.9.2 添加一个登录控制元素可以添加一个Config Element的Login Config Element用于用户登录控制.9.3 添加一个LDAP Request Defaults可以添加一个config element中的LDAP Request Defaults用于控制一些共享默认值.9.4 添加LDAP Request添加的LDAP Request通过选择不同的测试配置来完成四种操作: 添加,删除,修改和查询. 例如, 修改:9.5 添加一个Listener来查看和保存测试结果添加了一个View Results in Table的listener9.6 保存测试用例9.7 运行测试用例10 创建一个Web Service测试计划对于Web Service Sampler, 当前是使用Apache Soap driver. 需要activation.jar和mail.jar.由于license的限制, JMeter中并未包含这些jar文件.如果sampler显示从web service获得一个error. 需要同时检查SOAP的信息来确认格式是正确的. 特别的要确认xmlns的attributes要和WSDL完全一致. 如果xml的namespace不同, 那么web service将很可能返回一个错误. Xmethods中包括了一个公共service的列表.10.1 添加用户10.2 添加web service 请求10.3 添加listener用于查看和存储测试结果.10.4 保存测试计划10.5 运行测试计划11 创建JMS Point-to-Point测试计划需要如下jar文件的支持activation.jaractiveio-1.0-SNAPSHOT.jaractivemq-3.0.jaractivemq-core-3.0.jarcommons-logging-1.0.3.jarconcurrent-1.3.4.jargeronimo-spec-j2ee-jacc-1.0-rc4.jargeronimo-spec-j2ee-management-1.0-rc4.jargeronimo-spec-jms-1.1-rc4.jargeronimo-spec-jta-1.0.1B-rc4.jar。