您的位置:軟件測試 > 開源軟件測試 > 開源性能測試工具 > Jmeter
使用 JMeter 完成常用的壓力測試
作者:網絡轉載 發(fā)布時間:[ 2012/12/3 14:26:54 ] 推薦標簽:

在實際的項目中,至少有2種類型的JDBC請求需要關注:select語句和存儲過程。前者反應了select語句是否高效,以及表的索引等是否需要優(yōu)化;后者則是反應存儲過程的算法是否高效。它們如果效率低下,必然會帶來響應上的不盡如人意。對于這兩種請求,JDBC請求的配置略有區(qū)別:

Select語句

存儲過程

如果對于Oracle,如果測試的是函數(shù),那么也可以使用select語句來進行配置,此時可以使用:select 函數(shù)(入參) from dual形式的語句來測試,其中dual是oracle的關鍵字,表示啞表。對于其它廠商的數(shù)據庫產品,請查找手冊。

JMS服務器

MOM 作為消息數(shù)據交換的平臺,也是影響應用執(zhí)行效率的潛在環(huán)節(jié)。在 Java 程序中,是通過 JMS 與 MOM 進行交互的。作為 Java 實現(xiàn)的壓力測試工具,JMeter 也能使用 JMS 對應用的消息交換和相關的數(shù)據處理能力進行測試。這一點應該不難理解,因為在整個測試過程中,JMeter 測試的重點應該是消息的產生者和消費者的本身能力,而不是 MOM本身。

根據 JMS 規(guī)范,消息交換有2種方式:發(fā)布/訂閱和點對點。JMeter針對這兩種情形,分別提供了不同的Sampler進行支持。以下MOM我們使用ActiveMQ 3.2.1,分別描述這兩種消息交換方式是如何使用 JMeter 進行測試。

1. 測試前的準備(兩種情況都適用)

JMeter 雖然能使用 JMS 對 MOM 進行測試,但是它本身并沒有提供JMS需要使用的包。因此,在測試之前需要將這些包復制到 %JMETER_HOME%/lib 下。對于 ActiveMQ 來說,是復制 %ACTIVEMQ_HOME%/lib。%ACTIVEMQ_HOME%/optional 是可選包,可根據實際情況來考慮是否復制。

JMeter 在測試時使用了 JNDI,為了提供 JNDI 提供者的信息,需要提供 jndi.properties。同時需要將 jndi.properties 放到 JMeter 的 classpath 中,建議將它與 bin下的 ApacheJMeter.jar 打包在一起。對于 ActiveMQ,jndi.properties 的示例內容如下:

java.naming.factory.initial = org.activemq.jndi.ActiveMQInitialContextFactory
            java.naming.provider.url = tcp://localhost:61616
            #指定connectionFactory的jndi名字,多個名字之間可以逗號分隔。
            #以下為例:
            #對于topic,使用(TopicConnectionFactory)context.lookup("connectionFactry")
            #對于queue,(QueueConnectionFactory)context.lookup("connectionFactory")
            connectionFactoryNames = connectionFactory
            #注冊queue,格式:
            #queue.[jndiName] = [physicalName]
            #使用時:(Queue)context.lookup("jndiName"),此處是MyQueue
            queue.MyQueue = example.MyQueue
            #注冊topic,格式:
            # topic.[jndiName] = [physicalName]
            #使用時:(Topic)context.lookup("jndiName"),此處是MyTopic
            topic.MyTopic = example.MyTopic
             
2. 發(fā)布/訂閱

在實際測試時,發(fā)布者和訂閱者并不是需要同時出現(xiàn)的。例如,有時我們可能想測試單位時間內消息發(fā)布者的消息產生量,此時不需要消息發(fā)布者,只需要訂閱者可以了。本例為了說明這兩種Sampler的使用,因此建立如下的測試計劃:

其中JMS Publisher和JMS Subscriber的屬性:選擇"使用jndi.properties",連接工廠是connectionFactory,主題是MyTopic,其它使用默認配置。對于JMS Publisher,還需提供測試用的文本消息。

啟動ActiveMQ,運行測試計劃。如果配置正確,那么與ActiveMQ成功連接之后,在JMeter的后臺會打印出相關信息。在測試過程中,JMeter 后臺打印可能會出現(xiàn)java.lang.InterruptedException 信息,這個是正,F(xiàn)象,不會影響測試過程和結果。這一點可以從 bin 下的 jmeter.log 看出。

3. 點對點

對于點對點,JMeter只提供了一種Sampler:JMS Point-to-Point。在例子中,建立如下圖的測試計劃:

其中:Communication style是Request Only。對于另一種風格:Request Response,會驗證收到消息的JMS Header中的JMSCorrelationID,以判斷是否是對請求消息的響應。

結論

本文介紹了如何使用JMeter完成常用的三種類型服務器的壓力測試,這三種類型的壓力測試涵蓋了很大一部分的使用情形,然而需要記住的是工具畢竟是工具。效果好不好,關鍵還是在于使用的人。而且,對于壓力測試,測試計劃的好壞是關鍵。針對不同的情況,分析后有針對的進行測試,比起拿槍亂打、無的放矢顯然要高效得多。

上一頁123下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd