1. 用例組織方式git
首先是用例組織方式的不一樣,不一樣的目錄結構與組織方式表明不一樣工具的測試思想,學習一個測試工具應該首先了解其組織方式。shell
SoapUI的組織方式以下圖,最上層是WorkSpace,每一個窗口只能夠打開一個WorkSpace(這是一個xml文件),每一個Project也是一個單獨的xml文件(爲了協同工做,也能夠經過設置將其轉化爲一堆文件集合),因此每一個WorkSpace中能夠打開多個Project,一個Project也能夠在不一樣的WorkSpace中。數據庫
Project對應咱們的測試項目,其中可添加WSDL、WADL資源、TestSuite以及MockService。json
TestSuite對應咱們的測試模塊,好比商戶中心,其中能夠添加TestCase,TestCase對應咱們對某個模塊的不一樣接口,好比訂單管理接口。而一個接口能夠能須要多個Step完成,變量、數據源、請求等都是一個Step。安全
Jmeter的組織方式相對比較扁平,它首先沒有WorkSpace的概念,直接是TestPlan,等價於SoapUI中的Project,TestPlan下建立的Threads Group就至關於TestCase,並無TestSuite的層級。dom
TheadsGroup中的Sampler、管理器等均至關於SoapUI中的一個Step,以下圖:socket
Postman功能上更簡單,組織方式也更輕量級,它主要針對的就是單個的HTTP請求。Collection就至關因而Project,而Collection中能夠建立不定層級的Folders,能夠本身組織TestSuite。每一個Request能夠當作是一個TestCase或者Step:svn
2. 支持的接口類型與測試類型工具
從功能上Jmeter最爲強大,能夠測試各類類型的接口,不支持的也能夠經過網上或本身編寫的插件進行擴展。SoapUI專門針對HTTP類型的兩種接口,其初衷更是專門測試Soap類型接口,對於其餘協議的接口不支持。Postman更是輕量級,定位也不一樣,可用來測試Rest接口。oop
工具 |
接口類型 |
測試類型 |
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:有團隊協做的功能,須要付費