性能測試總結(三)--工具選型篇

性能測試總結(三)--工具選型篇

  本篇文章主要簡單總結下性能測試工具的原理以及如何選型。性能測試和功能測試不同,性能測試的執行是基本功能的重復和并發,需要模擬多用戶,在性能測試執行時需要監控指標參數,同時性能測試的結果不是那么顯而易見,需要對數據進行分析。這些特點決定了性能測試更適合通過工具來完成。

?

一、淺談為什么需要工具

我們來看下工具的定義:它原指工作時所需用的器具,后引申為為達到、完成或促進某一事物的手段。(---來自百度的解釋)?

1、從人類進化的角度來看,會制造并使用工具是人和猿人最根本的區別,因為工具可以幫助我們提高生產力和效率。

  

2、想象下如果不使用工具進行性能測試會怎么樣?

我們可以從性能測試的定義的角度來分析性能測試是指通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項性能指標進行測試。如果不使用工具,僅靠人工進行性能測試會存在以下的弊端:

a)測試需要投入大量的資源

  為了模擬多種負載、并發的場景需要多人協同工作,通常測試沒有很多的資源,而且就算有資源人工的效果也會大打折扣,甚至于某些場景僅憑人工是無法完成的。

b)可重復性非常差

  性能測試經常需要反復調優和測試執行,如果沒有工具的幫助,全靠人工實在不敢想象。

c)測試準確性較差

  由于需要模擬多種負載和并發場景,如果由人工來操作,難免會存在誤差,而且相對工具或程序來說這種誤差會更大,對測試結果影響也非常大。

d)結果的收集、整理和呈現形式差

  如果沒有工具,全憑人工采集數據相對工具來說也會存在較大的誤差。

??

性能測試與性能測試工具的關系

1、性能測試從測試階段來劃分屬于系統測試,其和具體使用什么工具并沒有直接的關系。使用工具只是為了提高性能測試效率和準確性的一種方法和手段。從本質上來看,同做其它事情時使用工具沒有什么實質性的區別。

2、性能測試不等于Loadrunner,LR只是性能測試工具其中的一種,而且它也不是萬能的,在某些情況下它也并不能派上用場。推薦看下《讓LoadRunner走下神壇》和《讓LoadRunner再次走下神壇》這兩篇文章于對性能測試和LR的關系講的比較深刻。

3、自動化測試工具與性能測試工具的區別:性能測試工具一般是基于通信協議的(客戶器與服務器交換信息所遵守的約定),它可以不關心系統的UI,而自動化使用的是對象識別技術,關注UI界面。自動化無法或很難造成負載,但是通過協議很容易。

?

三、性能測試工具選型參考:

通常在公司或項目中,我們選擇任何工具時都會做一些調研,目的就是為了選擇適合公司或項目的工具。那么性能測試工具也不例外,通常可以從以下幾個方面進行考慮:

1、成本方面

  a)工具成本:工具通常分為商業閉(shou)源(fei)和非商業開(mian)源(fei)兩種,商業工具通常功能比較強大,收費,由于收費所以可提供售后服務,如果出了問題有專業人士幫忙處理。而開源工具通常是免費的,功能有限,維護工具的組織也是自發的,所以如果碰到問題需要自行解決,沒有專人提供服務。具體選擇商業還是開源的工具,需要根據公司的情況,比如公司規模、愿意承擔的成本、項目綜合情況等方面考慮。一般來看大公司通常可以承擔的起工具的費用,會考慮購買商業工具。而小公司由于資金壓力,可能會選擇開源的工具。

  b)學習成本:使用任何工具都需要進行學習,這樣一來就會產生學習成本(比如:時間),因此我們在選擇工具時也需要考慮到項目組成員的學習成本。如果有兩種工具A和B都能滿足項目組測試的需求,如果A工具大部分人都會使用,而B工具只有極少部分人會使用,那么建議優先考慮A工具。通常,對于測試人員最好熟悉一款流程的商業(性能)工具,一款開源免費(性能)工具,還需要熟悉常見的(性能)腳本開發語言等,這是基本要求。

2、支持的協議

  性能測試通常跟協議聯系非常緊密,比如B/S的系統通常使用http協議進行客戶端和服務器商的信息交換,C/S的系統通常使用socket協議進行信息交換。在選擇工具時,需要考慮項目使用的協議。一個測試工具能否滿足測試需求,能否達到令人滿意的測試結果,是選擇測試工具要考慮的最基本的問題。

3、生命力

  現在的性能測試工具非常多,比如LR,jmeter這類較大眾的工具網上相關的資料非常多,但一些小眾工具可能網上資料比較少。如果在工具使用過程中碰到了比較極手的問題,在錄求解決方案或幫助時,大眾的的工具相對來說會比較有優勢一點,畢竟使用的人越多,資料越多,那么自己碰到的問題也許別人早就碰到并解決了,即時之前沒有人碰到過,由于使用研究的人多,通過社區或論壇的幫助相信總會有高手能協助解決的。

4、跨平臺

  這一點自不必多說,看看JAVA為什么一直這流行就知道了。

?

四、常見性能測試工具:

性能測試工具,從理論上來講在性能測試過程中使用到的所有工具都可以稱其為性能測試工具,通常分為以下幾類:

說明:

  • 服務器端性能測試工具:需要支持產生壓力和負載,錄制和生成腳本,設置和部署場景,產生并發用戶和向系統施加持續的壓力。
  • web前端性能測試工具:需要關于心瀏覽器等客戶端工具對具體需要展現的頁面的處理過程。
  • 移動端性能測試工具:同web端性能測試工具也需要關心頁面的處理過程,另外還要具體數據采集的功能,比如:手機CPU、內存、電量,啟動時間等數據的記錄。
  • 資源監控工具:這個主要是能夠收集性能測試過程中的數據以及良好的結果展現方式。

?

PS:本篇文章主要總結下服務器端性能測試工具LR和Jmeter,后面也會對這兩個工具進行簡單的對分。

?

五、常見性能測試工具特點

  • JMeter:采用的是多線程模型,擴展性很強,不過制造壓力沒有那么高。它很適合用來壓一些Tomcat服務,或者一些后端接口。JMeter的缺點是壓力值不能精確控制,難以適應高并發的情況,而且由于是JAVA編寫的,本身比較消耗資源。
  • LoadRunner:更像是一個模擬器,它比較適用于前端構造較復雜場景的情況,比如模擬100個用戶登錄的場景,LoadRunner對非技術人員提供了很好的支持。LoadRunner不適用后端接口。

下表為JMeter和LoadRunner對比表:

描述JMeterLoadRunner
架構原理通過中間代理,監控和收集并發客戶端的指令,把他們生成腳本,再發送的應用服務器,再監控應用服務器反饋的過程JMeter
安裝簡單,解壓即可,比較靈活LoadRunner安裝包比較大,安裝比較麻煩,工具本身相對比較笨重
支持的協議支持多種協議:HTTPHTTPSSOAPFTPDatabase via JDBCJMS等,但相對LR還是不夠全面,由于此原因相對來說jemter比較靈活,輕便支持的協議非常多,比較全面,但正因此顯得工具本身比較笨重,不夠靈活
腳本錄制提供了一個利用本地ProxyServer(代理服務器)來錄制生成測試腳本的功能,也支持badboy錄制再生成JMeter腳本自帶錄制功能強大,可直接錄制回放
并發模型通過增加線程組的數目,或者是設置循環次數來增加并發用戶支持多種并發模型,通過在場景中選擇要設置什么樣的場景,然后選擇虛擬用戶數
分布式測試支持,可設置多臺代理,通過遠程控制實現多臺機器并發壓力JMeter
資源監控通過JMeterPlugins插件和ServerAgent實現自帶資源監控功能
報告分析通過與Ant集成,生成HTML報告自身支持生成HTMLWord報告
IP不支持支持
網速模擬不支持支持
擴展性開源,可根據需求修改源碼通過擴展函數庫實現
學習成本主要是自學官網上的資料網上資料和相關培訓很多,購買正版的話,還有技術支持

?

六、性能測試工具學習教程:

1、Loadrunner:目前還未整理,后續會慢慢整理成文章,敬請期待...

2、Jmeter:可查看我的另一篇文章Jmeter教程索引貼

3、Gatling:未使用過,網上資料也比較少,入門推薦:新一代服務器性能測試工具Gatling

?


作者:Glen.He?
出處:http://www.cnblogs.com/puresoul/?
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利

轉載于:https://www.cnblogs.com/abcd19880817/p/7211102.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252264.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252264.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252264.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

創建一個最簡單的imgui測試用例

在上一篇文章中,我們初步認識了一下imgui,并且成功運行了他提供的demo。這只是開始學習imgui的第一步,在實際使用時,我們需要將imgui應用到自己的工程中去,所以你需要具備將imgui加到你工程中去的能力,簡單起見&#x…

idea中maven的setting.xml的配置

2019獨角獸企業重金招聘Python工程師標準>>> <?xml version"1.0" encoding"UTF-8"?> <settings xmlns"http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance&qu…

ref和out區別總結

ref&#xff1a;是必需要先初始化才能用,但調用時可以對它什么也不做.out&#xff1a;可以不初始化也能用,但調用時一定要對其賦值(即使已經初始化的也要賦值,哪怕是賦一個和原來一樣的值).轉載于:https://www.cnblogs.com/gjnsmallworld/p/7216206.html

繼 承(面向對象特征之一)

1&#xff1a;成員變量。 當子父類中出現一樣的屬性時&#xff0c;子類類型的對象&#xff0c;調用該屬性&#xff0c;值是子類的屬性值。 如果想要調用父類中的屬性值&#xff0c;需要使用一個關鍵字&#xff1a;super This&#xff1a;代表是本類類型的對象引用。 Super&…

如何將cv::Mat類型轉換為imgui中的ImTextureID類型

背景&#xff1a; 我原來的工程是使用opencv的&#xff0c;所以程序中的圖像都是表示為cv::Mat類型&#xff0c;為了能夠在imgui窗口中顯示我的cv::Mat的圖像&#xff0c;我找到了下面這個函數&#xff1a; void ImGui::Image(ImTextureID user_texture_id, const ImVec2&…

react native 原生模塊橋接的簡單說明

原文出自&#xff1a;https://github.com/prscX/awes...博客鏈接&#xff1a;https://ssshooter.com/2019-02... Android 創建原生模塊包 通過繼承 ReactPackage 為你的原生模塊包創建 Java 類&#xff0c;可以這么寫&#xff1a;覆蓋 createNativeModules 和 createViewManage…

UVa 1354 天平難題 枚舉二叉樹

題意&#xff1a;給出房間寬度 r 和 s 個掛墜的重量 wi&#xff0c;設計一個盡量寬的天平&#xff0c;掛著所有掛墜。天平由一些長度為 1 的木棍組成&#xff0c;木棍的每一端要么掛一個掛墜&#xff0c;要么掛另外一個木棍。 這題卡了很久&#xff0c;看了很多大神的代碼&…

通過指針便利圖像元素

for (size_t y 0; y < image.rows; y) {//row_ptr為第y行的頭指針&#xff0c;unsigned char* row_ptr image.ptr<unsigned char>(y);for (size_t x 0; x < image.cols; x) {//data_ptr: 指向待訪問像素unsigned char* data_ptr &row_ptr[x*image.channels…

[精華][推薦]SSO CAS單點登錄框架學習 搭建詳細步驟及源碼

1.了解單點登錄 SSO 主要特點是: SSO 應用之間使用 Web 協議(如 HTTPS) &#xff0c;并且只有一個登錄入口. SSO 的體系中有下面三種角色: 1) User(多個) 2) Web 應用(多個) 3) SSO 認證中心(一個) 2.SSO 實現包含以下三個原則 1) 所有的登錄都在 SSO 認證中心進行。 2) SS…

電腦下載的M4A格式文件怎么轉換為MP3格式

M4A文件格式并不是一個家喻戶曉的名字&#xff0c;與&#xff2d;&#xff30;&#xff13;格式相比&#xff0c;知名度遠遠落后。但是&#xff0c;這并不意味著它無關緊要&#xff0c;有時候我們下載的音樂可能就是M4A格式的&#xff0c;如果換一個設備播放可能就會出現格式不…

python-for循環

一、功能 for 循環提供了python中最強大的循環結構&#xff08;for循環是一種迭代循環機制&#xff0c;而while循環是條件循環&#xff0c;迭代即重復相同的邏輯操作&#xff0c;每次操作都是基于上一次的結果&#xff0c;而進行的&#xff09; Python for循環可以遍歷任何序列…

六、利用frp穿透連接內網的linx系統和windows系統

服務端的配置 # frps.ini [common] bind_port 7000 說明&#xff1a;防火墻放行該端口 啟動&#xff1a;./frps -c ./frps.ini 后臺啟動&#xff1a;nohup ./frps -c ./frps.ini & 客戶端的配置 (1)windows系統 # frpc.ini [common] server_addr x.x.x.x server_port 70…

根據相機內參進行圖像去畸變

cv::Mat img; cv::Mat img_undistort; double fx,fy, cx, cy, k1, k2, p1, p2, k3;for(int v 0; v < img.rows; v){for(int u 0; u < img.cols; u){//根據內參數&#xff0c;計算歸一化坐標系下的坐標點double x (u-cx)/fx;double y (v-cy)/fy;double r2 x*x y*y;/…

initialize方法與load方法比較

load方法和initialize方法類似點 1. 都只會調用一次2. 父類在子類之前加載 復制代碼不同點在于&#xff1a; 1. 加載時間不同&#xff0c;load方法在main()函數前進行調用&#xff0c;initialize在第一次調用類的所屬方法時在調用<可能永遠不調用>。2. load方法不會被Cat…

KindEditor

1、進入官網 2、下載 官網下載&#xff1a;http://kindeditor.net/down.php 3、文件夾說明 ├── asp asp示例 ├── asp.net asp.net示例 ├── attached 空文件夾&#xff0c;放置關聯文件attached ├── …

service mysqld start,Failed to start mysqld.service: Access denied

service mysqld start 然后報&#xff1a; AUTHENTICATING FOR org.freedesktop.systemd1.manage-units Authentication is required to start mysqld.service.Authenticating as: lll,,, (lll)Password: polkit-agent-helper-1: pam_authenticate failed: Authentication fa…

使用realsense t265測試svo2.0視覺里程計

畢業三年了&#xff0c;現在是第二份工作&#xff0c;第一份工作已經結束一年半了&#xff0c;這意味著&#xff0c;我有一年半的時間沒有搞視覺SLAM相關的東西了&#xff0c;雖然在第二份工作也是做視覺相關的&#xff0c;但是只是用到一些目標識別和跟蹤的知識&#xff0c;并…

JSP動作標識

jsp中include有兩種形式: include指令&#xff1a;<% include file""%> include動作&#xff1a;<jsp:include page"" /> 他們的區別&#xff1a; <% include file""%>又稱靜態包含&#xff0c;使用時要注意以下幾點&#xf…

面試必問之JVM原理

1&#xff1a;什么是JVM JVM是Java Virtual Machine&#xff08;Java虛擬機&#xff09;的縮寫&#xff0c;JVM是一種用于計算設備的規范&#xff0c;它是一個虛構出來的計算機&#xff0c;是通過在實際的計算機上仿真模擬各種計算機功能來實現的。Java虛擬機包括一套字節碼指令…

InfluxDB學習之InfluxDB的基本操作

InfluxDB提供類SQL語法&#xff0c;如果熟悉SQL的話會非常容易上手。本文就為大家介紹一下InfluxDB的基本操作。 InfluxDB提供類SQL語法&#xff0c;如果熟悉SQL的話會非常容易上手。 一、InfluxDB操作方式 InfluxDB提供三種操作方式&#xff1a; 1&#xff09;客戶端命令行方式…