SOAP Over JMS 服務調用的各個屬性說明:
QueueConnectionFactory:連接工廠的默認 JNDI 實體
JNDI name Request queue:JNDI 請求隊列名字
JNDI name Receive queue:JNDI 接收隊列名字
Timeout:請求超時設置
Communication style:通訊形式(包括僅僅請求和請求應答)
Content:請求信封
JMS Properties:JMS 的一些屬性設置(對于 IBM WAS 必須要有 targetService 屬性)
Initial Context Factory:JNDI 的初始會話工廠
Provider URL:服務提供地址
下面是一次完整的 JMS 請求與 JMS 響應 SOAP 數據:
JMS Request
<soapenv:Envelope>
<soapenv:Body>
<tns0:getAuEmpPositionId>
<ev_id>6098</ev_id>
</tns0:getAuEmpPositionId>
</soapenv:Body>
</soapenv:Envelope>
JMS Response
<soapenv:Envelope>
<soapenv:Header/>
<soapenv:Body>
<p150:getAuEmpPositionIdResponse>
<getAuEmpPositionIdReturn xsi:nil="true"/>
</p150:getAuEmpPositionIdResponse>
</soapenv:Body>
</soapenv:Envelope>
設計高效的測試用例集
壓力測試或者系統測試不同于功能測試,測試的重點不在系統產品是不是滿足設計需求。它所看重的是系統在大的用戶量和負載情況下的可靠性以及系統響應 , 它目標是測試系統的執行效率,特別是在較短時間內系統負載快速增長時系統的相應速度。在實際的測試過程中,大量用戶同時訪問的系統節點也可能成為產品潛在的效率瓶頸。因此 , 壓力測試和系統測試也往往是在功能測試之后進行。
對于普通的軟件系統 , 產品的瓶頸可能會在數據庫服務器上,Web 服務器上,而對于 SOAP 服務系統測試,Web Services 服務器和 JMS 服務器是客戶端請求的主要節點 , 同時,主要業務邏輯的處理也都分布在這些節點上,它們很有可能成為系統訪問的瓶頸,如果這些節點出現問題,那么對整個系統的效率會有致命的影響,也是壓力測試和系統測試要優先考慮的。
改進測試策略、測試方法、測試過程,使用高效的測試用例集,從而保證產品質量。這個是主要目的,也是直接的目的。一個高效的測試用例集應包含以及適應如下要素:
在什么時候確定要執行系統測試
如何去檢測并解決系統性能和負載問題
收集監視服務器性能數據(I/O,CPU,MEM)
盡量減少因為個人配置和某些測試用例而造成系統出現錯誤和瓶頸
所有測試工作都得到有效協調并目標一致
當已經確定了所需的 JMeter Samplers,并且在此基礎上設計出一個通用的測試計劃,那么可以構建我們的測試腳本了。本文的測試用例以及終的測試計劃也是建立在這些要素之上。
測試計劃(Test Plan)描述了測試運行過程中 JMeter 的執行順序、過程以及步驟,一個完整的測試計劃包括一個或者多個線程組 (Thread Groups)、循環控制器(Loop Controllers)、監聽器 (Listener)、邏輯控制器(Logic Controller)、定時器(Timer)、斷言(Assertions)、配置信息(Config Elements)等。
在測試計劃中添加一個用戶定義變量配置元素(User Defined Variables), 可以在里面定義服務器地址,日志路徑,超時限制等變量,提供腳本重用。同時添加兩個用戶組,一個是 SOAP Over HTTP Group,一個是 SOAP Over JMS Group。在每個用戶組下面分別添加一個總的循環控制器(Loop Controller),用以控制腳本循環次數。在總循環控制器下面添加隨機選擇器(Random Selector)用以隨機選擇運行測試腳本。下圖是我們整個的 Test Plan。
圖 4. 設計完成之后的 SOAP 測試計劃