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:有團隊協作的功能,需要付費。


歡迎指正,更多文章,請關注本人博客——灰藍的博客


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章