區別1::用例組織方式
不同的目錄結構與組織方式代表不同工具的測試思想,學習一個測試工具應該首先了解其組織方式。
- Jmeter的組織方式相對比較扁平,它首先沒有WorkSpace(工作空間)的概念,直接是TestPlan(測試計劃),TestPlan(測試計劃)下創建的Threads Group(線程組)就相當於TestCase(測試用例),並沒有TestSuite(測試模塊)的層級。TheadsGroup(線程組)中的Sampler(取樣器)、管理器代表一個Step(測試步驟)
- Postman功能上更簡單,組織方式也更輕量級,它主要針對的就是單個的HTTP請求。Collection就相當於是Project(項目),而Collection中可以創建不定層級的Folders(文件夾),可以自己組織TestSuite(測試模塊)。每個Request(請求)可以當做是一個TestCase(測試用例)或者Step(測試步驟)
區別2:支持的接口類型與測試類型
- Jmeter的功能更強大,可以測試各種類型的接口,不支持的也可以通過網上或自己編寫的插件進行擴展
- Postman更輕量級,定位也不同,可用來測試Rest接口
區別3:配置不同接口類型
- Jmeter可以在線程組裏添加HTTP、TCP或WebSocket的Sampler
- Postman僅支持Rest接口
Jmeter:
接口類型 |
測試類型 |
Rest、Soap等可擴展WebSocket、socket |
功能、壓力 |
Postman:
區別4:自定義變量以及變量的作用域
除以下表格中所列的變量之外,兩個工具也都有系統變量,沒有列出。
Jmeter:
變量類型 |
作用域 |
TestPlan中用戶定義的變量 |
所有Threads Group |
配置元件 - 用戶定義的變量 |
根據元件位置而定 |
CSV data set、random variable等 |
根據元件位置而定 |
前置、後置處理器 |
當前Threads Group |
Postman:
變量類型 |
作用域 |
Environment Variable |
當前環境的Collection |
Global Variable |
所有Collections |
CSV/JSON datafile |
Runner當前的Collection |
區別5:數據源、生成器,進行參數化
Jmeter:
數據源 |
生成器 |
循環 |
TCSV Data Set Config讀取csv文件 |
Random Variable計數器 |
ForEach控制器、循環控制器、While控制器 |
Postman:
數據源 |
生成器 |
循環 |
Runner中運行時,可加載CSV/JSON文件 |
無(只能通過腳本) |
Runner中的Iteration |
區別6:流程控制
- Jmeter:由Switch控制器、If控制器、隨機控制器等一系列控制器實現流程控制,以及Beanshell腳本
- Postman:通過JavaScript腳本控制
區別7:結果解析、展示
Jmeter:
結果 |
日誌 |
報告 |
各種監聽器 |
統一的Jmeter log |
監聽器可導出到文件 |
Postman:
結果 |
日誌 |
報告 |
Send可查看Request的Response、Runner可查看運行的Result |
Postman console、Chrome DevTools |
Request的Response以及Runner的Result均可導出json |
區別8:斷言
- Jmeter:TestPlan、Threads Group、Sampler均可添加斷言
- Postman:請求的Tests中可添加斷言
區別9:腳本擴展能力
- Jmeter:Bean shell(Java)
- Postman:JavaScript
區別10:團隊協作
- Jmeter:一個TestPlan也是一個jmx(xml)文件,無法分割,但Jmeter有一個合併的功能,允許將多個文件合併在一起。只能每個團隊成員自己建立一個TestPlan,分功能塊進行測試。最後整理合並。
- Postman:有團隊協作的功能,需要付費。