1. 程式人生 > >SoapUI、Jmeter、Postman三種介面測試工具的比較分析

SoapUI、Jmeter、Postman三種介面測試工具的比較分析

前段時間忙於介面測試,也看了幾款介面測試工具,簡單從幾個角度做了個比較,拿出來與諸位分享一下吧。各位如果要轉載,請一定註明來源,最好在評論中告知博主一聲,感謝。本報告從多個方面對介面測試的三款常用工具進行比較分析,以便於在特定的情況下選擇最合適的工具,或者使用自己編寫的工具。(不同工具定位不同,我們只是主要從介面功能測試的角度進行分析)。博主對這幾款工具也僅僅是淺嘗輒止,並未做太過深入的應用,報告中如果有哪些不合適的地方,歡迎指正。

1.  用例組織方式

首先是用例組織方式的不同,不同的目錄結構與組織方式代表不同工具的測試思想,學習一個測試工具應該首先了解其組織方式。

SoapUI的組織方式如下圖,最上層是WorkSpace,每個視窗只可以開啟一個WorkSpace(這是一個xml檔案),每個Project也是一個單獨的xml檔案(為了協同工作,也可以通過設定將其轉化為一堆檔案集合),所以每個WorkSpace中可以開啟多個Project,一個Project也可以在不同的WorkSpace中。

Project對應我們的測試專案,其中可新增WSDL、WADL資源、TestSuite以及MockService。

TestSuite對應我們的測試模組,比如商戶中心,其中可以新增TestCase,TestCase對應我們對某個模組的不同介面,比如訂單管理介面。而一個介面可以能需要多個Step完成,變數、資料來源、請求等都是一個Step。


Jmeter的組織方式相對比較扁平,它首先沒有WorkSpace的概念,直接是TestPlan,等價於SoapUI中的Project,TestPlan下建立的Threads Group就相當於TestCase,並沒有TestSuite的層級。

TheadsGroup中的Sampler、管理器等均相當於SoapUI中的一個Step,如下圖:


Postman功能上更簡單,組織方式也更輕量級,它主要針對的就是單個的HTTP請求。Collection就相當於是Project,而Collection中可以建立不定層級的Folders,可以自己組織TestSuite。每個Request可以當做是一個TestCase或者Step:


2.  支援的介面型別與測試型別

從功能上Jmeter最為強大,可以測試各種型別的介面,不支援的也可以通過網上或自己編寫的外掛進行擴充套件。SoapUI專門針對HTTP型別的兩種介面,其初衷更是專門測試Soap型別介面,對於其他協議的介面不支援。Postman更是輕量級,定位也不同,可用來測試Rest介面。

工具

介面型別

測試型別

SoapUI

Soap、Rest

功能、壓力、安全

Jmeter

Rest、Soap等

可擴充套件WebSocket、socket

功能、壓力

Postman

Rest

功能

3.  配置不同介面型別

SoapUI可以建立Soap Project或者Rest Project(但Project中新增什麼型別的Step則不受影響),可新增wsdl、wadl資源,並能在TestCase裡新增Rest或Soap的Step。

Jmeter可以線上程組裡新增HTTP、TCP或WebSocket的Sampler。

Postman僅支援Rest介面。

4.  自定義變數以及變數的作用域

除以下表格中所列的變數之外,每個工具都有系統變數,未列在內。

工具

變數型別

作用域

SoapUI

Project、TestSuite、TestCase的Properties以及Custom Properties

各自以內的範圍內

TestCase裡的Properties

在整個TestCase內

TestCase裡的Data Source、DataGen等

在整個TestCase內

Groovy指令碼定義

看定義方式

Jmeter

TestPlan中使用者定義的變數

所有Threads Group

配置元件 - 使用者定義的變數

根據元件位置而定

CSV data set、random variable等

根據元件位置而定

前置、後置處理器

當前Threads Group

Postman

Environment Variable

當前環境的Collection

Global Variable

所有Collections

CSV/JSON datafile

Runner當前的Collection

5.  資料來源、生成器,進行引數化

工具

資料來源

生成器

迴圈

SoapUI

DataSource,資料可來源於檔案、目錄、資料庫、Excel、Grid等

DataGen

DataSource Loop

Jmeter

CSV Data Set Config讀取csv檔案

Random Variable

計數器

ForEach控制器

迴圈控制器

While控制器

Postman

Runner中執行時,可載入CSV/JSON檔案

無(只能通過指令碼)

Runner中的Iteration

6.  流程控制

SoapUI:由Conditioinal Goto控制流程,以及Groovy指令碼

Jmeter:由Switch控制器、If控制器、隨機控制器等一系列控制器實現流程控制,以及Beanshell指令碼

Postman:通過JavaScript指令碼控制

7.  結果解析、展示

工具

結果

日誌

報告

SoapUI

Project-OverView、TestSuites

TestSuite-TestCases

TestCase-TestSteps

SoapUI全域性多種log

TestSuite log

TestCase log

Request log

Project report

TestSuite report

TestCase report

(PDF/HTML/XML/CSV)

Jmeter

各種監聽器

統一的Jmeter log

監聽器可匯出到檔案

並可匯出JTL、CSV檔案、通過外掛可匯出HTML(Jmeter3自帶)

Postman

Send可檢視Request的Response

Runner可檢視執行的Result

Postman console

Chrome DevTools

Request的Response以及Runner的Result均可匯出json

8.  斷言

SoapUI:每個Request可新增Assertion

Jmeter:TestPlan、Threads Group、Sampler均可新增斷言

Postman:請求的Tests中可新增斷言

9.  指令碼擴充套件能力

SoapUI:Groovy指令碼

Jmeter:Bean shell(Java)

Postman:JavaScript

10. 團隊協作

SoapUI:本身一個project是一個xml檔案,但是可以通過配置變成一系列資料夾,每個Case、每個Suite均是獨立的檔案,這樣可通過svn/git進行團隊協作。支援性較好。

Jmeter:一個TestPlan也是一個jmx(xml)檔案,無法分割,但Jmeter有一個合併的功能,允許將多個檔案合併在一起。只能每個團隊成員自己建立一個TestPlan,分功能塊進行測試。最後整理合並。

Postman:有團隊協作的功能,需要付費。