Web應用程序測試工具/框架對比及Jmeter的入門級使用

【注】圖片顯示不出來,請移步個人有道雲筆記:

文檔:各種·軟件自動化測試工具.note
鏈接:http://note.youdao.com/noteshare?id=26324df7b908c39c7eff55bf8ea004fb&sub=0D3CF0F8220A4BDEB8311FCA2DAC3FE0

Web應用程序測試工具/框架對比:

功能

種類

自動錄製動作

自動生成測試腳本

支持併發/壓力測試

結果分析

是否免費

不依賴瀏覽器

側重點

可在linux下測試

Selenium

Y

Y

 

Y

Y(開源)

 

WebUI、接口

Y

Postman

 

Y

 

Y

Y

Y

接口

Y

Soapui

 

Y

Y

Y

Y(開源)

Y

接口

Y

Robot Framework

 

Y

Y

Y

Y

Y

WebUI、接口

Y

QTP

Y

Y

Y

Y

   

WebUI、接口

 

Jmeter

Y

Y

Y

Y

Y(開源)

Y

接口、性能

Y

Loadrunner

   

Y

Y

 

Y

性能

Y

Jenkins

     

Y

Y

分析結果以郵件通知

持續集成

 

Katalon Studio

Y

Y

 

Y

Y

Y

WebUI、接口

Y

Watir

 

Y

 

Y

Y

 

WebUI

 

TestComplete

Y

Y

 

Y

   

WebUI、接口、性能

 

Selenium:

Selenium是ThroughtWorks公司一個強大的開源Web功能測試工具系列,支持多種開發語言:ruby,python,java,perl,c#等,同時Selenium 測試直接自動運行在瀏覽器中,就像真正的用戶在手工操作一樣。selenium最簡單的使用方式就是IDE錄製腳本。錄製完畢後生成python腳本,將該腳本運行並調試就完成一個測試用例的測試。

 

Soapui:

針對一個 soapUI 的 TestCase, 可以建立一個或多個 LoadTest, 這些 LoadTest 會自動的把 TestCase 中的所有步驟都添加到其中, 在運行的時候,soapUI 會自動的使用多個線程來運行這些 TestStep,同時也會監控它們的運行時間, 例如最短時間,最長時間,平均時間等等。這樣用戶能夠很直觀的看到 REST 服務的響應時間,從而對性能進行調優。

幾個策略還允許您在執行期間更改線程數,從而使您可以在LoadTest進度時交互地更改負載並監視結果。

在執行期間,LoadTest工具欄有兩種類型的圖表可供選擇:統計和統計歷史。這些的主要目的是隨着時間的推移可視化選定的統計數據,以便能夠發現突發和意外的變化

 

Jmeter:

Apache JMeter是Apache組織開發的基於Java的壓力測試工具。用於對軟件做壓力測試,它最初被設計用於Web應用測 試但後來擴展到其他測試領域。 它可以用於測試靜態和動態資源例如靜態文件、Java 小服務程序、CGI 腳本、Java 對象、數據庫, FTP 服務器, 等等。JMeter 可以用於對服務器、網絡或對象模擬巨大的負載,來在不同壓力類別下測試它們的強度和分析整體性能。另外,JMeter能夠對應用程序做功能/迴歸測試,通過創建帶有斷言的腳本來驗證你的程序返回了你期望的結果。

 

Postman:

linux上用newman+postman進行自動化測試。

第一步:導出postman文件

Postman就是根據collection和enviroment這兩個json文件來自動化運行的!

所以從Postman中導出collection和enviroment文件,上傳到linux主機。

第二步:安裝node/npm。

第三步:安裝newman

 

SoapUI、Jmeter、Postman三種接口測試工具的比較

1、支持的接口類型與測試類型

 

 

SoapUI可以創建Soap Project或者Rest Project(但Project中添加什麼類型的Step則不受影響),可添加wsdl、wadl資源,並能在TestCase裏添加Rest或Soap的Step。

Jmeter可以在線程組裏添加HTTP、TCP或WebSocket的Sampler。

Postman僅支持Rest接口。

2、結果解析、展示

 

3、腳本擴展能力

SoapUI:Groovy腳本

Jmeter:Bean shell(Java)

Postman:JavaScript

4. 團隊協作

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

 

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

 

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

 

Robot Framework:

Robot Framework是一款python編寫的可擴展的關鍵字驅動的自動化測試框架。主要用於輪次很多的驗收測試驗收測試驅動開發

自動化測試框架分爲幾種類型:

  • 關鍵字驅動框架: 將測試過程的操作方法抽象爲關鍵字;
  • 數據驅動框架: 將測試中用到的數據在自動化測試過程中自動加載;
  • 混合型框架: 數據驅動、關鍵字驅動等多種技術融合的框架;

 

loadrunner:

LoadRunner是一款專業級別的應用負載測試工具,它可以模擬上千萬用戶對企業應用進行真實的負載測試,通過大量實時監測器和精確的分析來得到最真實的數據,並且支持自動重複測試,以確保數值穩定和準確。

 

Jenkins:

Jenkins是一個開源軟件項目,是基於Java開發的一種持續集成工具,用於監控持續重複的工作。開發工作流程分爲以下幾個階段:

編碼 → 構建 → 集成 → 測試 → 交付 → 部署

 

持續集成(CI)能持續地獲取新增或修改後簽入的源代碼,也就是說,當軟件開發團隊需要週期性的檢查新增或修改後的代碼時,CI系統會不斷確認這些新代碼是否破壞了原有軟件的成功構建。構建可持續的自動化測試 :構建檢查的擴展部分,構建後執行預先制定的一套測試規則,完成後觸發通知(Email,RSS等等)給相關的當事人。 

優點:1、Jenkins一切配置都可以在web界面上完成;

2、測試報告聚合,所有模塊的測試報告(HTML格式)都被聚合在一起,結果一目瞭然,使用其他CI,這幾乎是件不可能完成的任務(這樣可以結合其他的測試工具更方便的顯示測試結果).

 

Katalon Studio:

它是基於selenium 和appium的框架。不需要用戶去操心框架背後的邏輯。Katalon Studio 支持Web,Mobile,API 類型的自動化測試,它同時可以管理頁面元素、測試數據、測試案例、生成自動化測試報告,可以集成到 CI/CD 過程中,兼容流行的質量處理工具,包括qTest,JIRA等。Katalon 存在的不足:

不支持中文,相關中文文檔少。目前國內 Katalon 的用戶非常少,相關的使用文檔也很少,但官方的文檔還是很詳細的,遇到問提可以查閱用戶手冊.

Watir:

Watir和Selenium都是直接在瀏覽器中執行測試,並且可以在瀏覽器最小化的狀態下運行。Watir只支持IE瀏覽器,支持的語言只有ruby

TestComplete:

該工具最大的特點爲支持多種腳本語言編譯環境。支持VBScript 、 Delphi Script 、 J Script 、 C# Script 、 C++ Script 多種腳本語言,這些語言基本上涵蓋了較爲主流的測試語言,提高工具可用性。測試人員可以選擇自己熟悉的腳本語言進行編寫。

QTP和TestComplete在錄製時都能針對特定的瀏覽器產生特定的腳本,但QTP在IE中錄製的腳本能在所有支持的瀏覽器上回放。從這點看來,QTP在瀏覽器兼容性測試方面更勝一籌。和QTP相比,TC最大的優勢在於其低廉的價格。

 

最終選擇的方案:Jmeter+Jenkins+ant持續集成

Jmeter的使用:https://www.cnblogs.com/imyalost/p/7062784.html(經典教程)

 

●【1】利用badboy錄製腳本

 

錄製完成後,點擊file→save或者export to jmeter,將文件保存爲jmeter的腳本格式:.jmx;啓動jmeter,打開剛錄製保存的文件,就可以進行測試了。

●【2】利用jmeter代理服務器錄製腳本

啓動jmeter:在測試計劃中添加線程組,線程組中添加邏輯控制器→錄製控制器->添加非測試元件→http代理服務器右鍵單擊,添加定時器→高斯隨機定時器(告知jmeter在其生成的http請求中自動增加一個定時器)定時器會使相應的取樣器被延遲:上一個請求發送被響應且延時指定時間後,下一個被定時器影響的取樣請求才會被髮送如果在代理服務器中使用了高斯隨機定時器,則應在其中的固定延遲偏移裏添加:${T}:用於自動引用記錄的延遲時間。打開瀏覽器,網絡設置,將局域網設置中的代理服務器設爲localhost,端口設置爲8080。代理服務器配置後之後,點擊啓動,代理服務器就會開始記錄所接受的http請求。

在瀏覽器地址欄輸入需要測試的地址並進行相關操作,錄製完成後,停止http代理服務器,在錄製控制器上點擊右鍵,保存錄制的腳本。

●【3】HTTP請求

啓動jmeter,建立一個測試計劃然後,新建一個線程組

 

然後,添加一個http信息頭管理器(JMeter不是瀏覽器,因此其行爲並不和瀏覽器完全一致。這些JMeter提供的配置元件中的HTTP屬性管理器用於儘可能模擬瀏覽器行爲,在HTTP協議層上發送給被測應用的http請求)

 

http信息頭管理器添加好之後,需要填入信息頭的名稱以及對應的值,如下

 

Content-Type意思可以理解爲參數名稱、類型,值下面輸入對應的參數類型就行了,這裏我測試時候需要傳輸json類型,因此就填入了application/json

接着,添加Sampler(取樣器)→http請求

 

接下來可以給這個測試計劃添加一個監視器,常用的監視器有“查看結果樹”和“聚合報告”

 

如上,測試結束後,如果我們的請求成功發送給服務器,那麼結果樹裏面的模擬請求會顯示爲綠色,可以通過取樣器結果裏面的響應狀態碼信息來判斷

●【4】參數化

前置處理器——User Variables

點擊線程組添加前置處理器——User Variables(用戶參數):

 

如上圖所示,在該參數組中已經設置了兩個參數,username和password分別有2組不同的取值,通過頁面下方的四個按鈕,可以增加刪除參數的可能取值。

●【5】關聯之正則表達式提取器

如果有這樣的情況:一個完整的操作流程,需要先完成某個操作,獲得某個值或數據信息,然後才能進行下一步的操作(也就是常說的關聯/將上一個請求的響應結果作爲下一個請求的參數);在jmeter中,可以利用正則表達式提取器來幫助我們完成這一動作。

首先:在默認的測試計劃中添加一個線程組,然後添加取樣器,這裏我以JDBC請求做例子。然後:右鍵添加後置處理器→正則表達式提取器,正則表達式提取器界面如下:

 

後置處理器:在請求結束或者返回響應結果時發揮作用;

正則表達式提取器:允許用戶從服務器的響應中通過使用perl的正則表達式提取值。該元素會作用在指定範圍取樣器,用正則表達式提取所需值,生成模板字符串,並將結果存儲到給定的變量名中。提取到的參數,調用時用${SOCIAL_NO_1},${SOCIAL_NO_2}...

●【6】邏輯控制器

jmeter中邏輯控制器(Logic Controllers)的作用域只對其子節點的sampler有效,作用是控制採樣器的執行順序。

jmeter提供了17種邏輯控制器,它們各個功能都不盡相同,大概可以分爲2種使用類型:

①.控制測試計劃執行過程中節點的邏輯執行順序,如:Loop Controller(循環控制器)、If Controller(如果if控制器)等;

②.對測試計劃中的腳本進行分組,方便JMeter統計執行結果以及進行腳本的運行時控制等,如:Throughput Controller(吞吐量控制器)、Transaction Controller(事務控制器)等

●【7】生成HTML性能測試報告

如果已經有經過測試生成的.jtl文件,可以利用該文件直接生成HTML可視化測試報告。進入jmeter的bin目錄下,輸入如下命令:

jmeter -g test.jtl -o /path # -g:後跟test.jtl文件所在的路徑 # -o:後跟生成的HTML文件存放的路徑

如果還未生成.jtl文件,則可以通過如下命令,一次性完成測試執行和生成HTML可視化報告的操作,進入jmeter的bin目錄下,輸入如下命令:

jmeter -n -t test.jmx -l test.jtl -e -o /path # -n:以非GUI形式運行Jmeter # -t:source.jmx 腳本路徑 # -l:result.jtl 運行結果保存路徑(.jtl),此文件必須不存在 # -e:在腳本運行結束後生成html報告 # -o:用於存放html報告的目錄

執行完畢後,用瀏覽器打開生成的文件目錄下的index文件,效果展示如下

 

詳細信息圖表有點多,這裏我挑幾個性能測試過程中比較關鍵的圖表:

①、Response Times Over Time(腳本運行期間的響應時間變化趨勢圖)

②、Response Time Percentiles Over Time (腳本運行期間成功的請求響應時間百分比分佈圖)

③、Bytes Throughput Over Time(腳本運行期間的吞吐量變化趨勢圖)

④、Transactions Per Second(每秒事務數)

①、 Response Time Percentiles(響應時間百分比分佈曲線圖)

②、Time Vs Threads(平均響應時間和線程數的對應變化曲線)

●【8】常用插件

jmeter的第三方插件

 

TPS:每秒事務數,性能測試中,最重要的2個指標之一。該插件的作用是在測試腳本執行過程中,監控查看服務器的TPS表現————比如整體趨勢、實時平均值走向、穩定性等。某次壓力測試TPS變化展示圖:

 

TRT:事務響應時間,性能測試中,最重要的兩個指標的另外一個。該插件的主要作用是在測試腳本執行過程中,監控查看響應時間的實時平均值、整體響應時間走向等。

 

具體操作實例會放在後續博客中演示。

linux下搭建Jmeter+Ant+Jenkins集成:https://blog.csdn.net/om934257/article/details/88707726

參考:

https://blog.csdn.net/wangjie0925/article/details/79740370

https://blog.csdn.net/github_27109687/article/details/71968662

 

發佈了40 篇原創文章 · 獲贊 16 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章