Appache JMeter 以及 SOAP 協(xié)議簡述
開源測試工具:Appache JMeter
JMeter 是 Apache 基金會 Jakarta 上的一個純 Java 開源項目,起初用于基于 Web 的壓力測試(pressure test),后來其應用范圍逐漸擴展到對文件傳輸 FTP, 大型數(shù)據(jù)庫(JDBC 方式),腳本程序(CGI, Perl 等),Web Services,Java 應用系統(tǒng)等方面的測試。JMeter 本身主要用于性能測試,如系統(tǒng)壓力等。除此之外,JMeter 能夠對應用系統(tǒng)做功能測試和回歸測試,并且能夠通過使用帶有斷言的腳本程序來驗證系統(tǒng)然后返回用戶期望的結果。為了提高工具的應用靈活性,JMeter 允許使用正則表達式創(chuàng)建斷言。正是由于它的靈活性和可擴展性,JMeter 逐漸成為流行的開源測試工具。
消息傳遞協(xié)議:SOAP
SOAP(Simple Object Access Protocol)稱為簡單對象訪問協(xié)議, 是 W3C 定義的一種標準消息傳遞協(xié)議,而它通常被認為是 Web Services 的事實標準。SOAP 協(xié)議使用 XML 語言來描述,SOAP 消息格式是由 XML Schema 模式定義,因而通過使用 XML 命名空間使得 SOAP 具有很強的可擴展性。
SOAP 是在去中心化(Decentralized)分布式(Distributed)環(huán)境中用來信息交換的一個輕量級協(xié)議。SOAP 本身并不定義像程序模型或實施聲明等形式的語法,而只定義了一種簡單機制:通過提供模塊化的包裝模型編碼機制來傳輸應用信息。
SOAP 基本結構:
1) 信封 Envelope Envelope 元素是 SOAP 中的根元素,并且定義為在 SOAP 消息中必須出現(xiàn)。Envelope 元素中可以包含多可選的 Header 元素,但同時必須要包含一個 Body 元素。
2) 消息頭 Header Header 可能出現(xiàn)在 SOAP 消息中,是一個可選元素。如果出現(xiàn)在消息中,那么 Header 一定要是 SOAP 中的第一個元素。SOAP Header 在 Web Services 中的應用越來越廣泛,例如在應用程序的安全性事物中使用標準的消息頭文件,因而成為擴展 SOAP 協(xié)議的一個非常有效的方法。
3)消息體 Body Body 元素是 SOAP 中必須出現(xiàn)的一個元素,它要包含應用程序中的傳輸數(shù)據(jù)或者反饋消息。 應用程序中的傳輸數(shù)據(jù)可以是任意形式的 XML 數(shù)據(jù)。SOAP 消息接收者終來處理 SOAP Body 體。
JMeter 調(diào)用 SOAP 框架機制
SOAP 使用 RPC(遠程過程調(diào)用)和消息傳遞來建立通信服務,SOAP RPC 定義了用于表示遠程過程調(diào)用和應答的協(xié)議。SOAP 協(xié)議本身僅僅定義了消息的交換結構,它可以和許多現(xiàn)存因特網(wǎng)協(xié)議結合在一起使用,其中包括超文本傳輸協(xié)議( HTTP),多用途網(wǎng)際郵件擴充協(xié)議(MIME),Java 消息服務(JMS)以及簡單郵件傳輸協(xié)議(SMTP)等。目前與 SOAP 應用為廣泛的是 HTTP 協(xié)議和 JMS 協(xié)議,而與之相對應的兩種應用是 SOAP Over HTTP 和 SOAP Over JMS。
根據(jù) JMS 的規(guī)范,消息交換有 2 種方式:消息發(fā)布 / 訂閱方式和點對點方式。由這兩種交換方式所建立的消息收發(fā)系統(tǒng)都是異步的,即 JMS 客戶機可以發(fā)送消息而不必等待回應。如果應用程序測試者或測試腳本開發(fā)者希望每一條消息都能夠被處理并且消息總是能夠被傳送到指定的位置,那么應該使用點對點消息模型而不是消息發(fā)布 / 訂閱模型。
HTTP(超文本傳送協(xié)議)是屬于應用層的面向對象的協(xié)議,是萬維網(wǎng) (WWW) 的基礎,由于其簡單快速、靈活、無連接、無狀態(tài)的方式,適用于分布式網(wǎng)絡信息系統(tǒng)。SOAP Over HTTP 應用是指的是遵守 SOAP 編碼規(guī)則的 HTTP 請求 / 響應,我們可以用簡單的公式來對此作一個描述:HTTP + XML = SOAP。
JMeter 也同樣提供了兩種 Sampler 分別建立對這兩種服務的調(diào)用:Web Services (SOAP) Request 和 JMS Point-to-Point。前者使用互聯(lián)網(wǎng)中為廣泛的超文本傳輸協(xié)議( HTTP)而后者使用 JMS 協(xié)議,JMS 是 Java 平臺面向消息中間件的技術規(guī)范,用它來提供創(chuàng)建、發(fā)送、接收、讀取消息的服務。許多廠商目前都支持 JMS,包括 BEA 的 WebLogic JMS service,IBM 的 MQSeries 和 Progress 的 SonicMQ。
圖 1.JMeter 框架基于上述兩種不同的協(xié)議對 SOAP 消息的一次簡單調(diào)用機制流程