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