占用系統資源測試_高頻性能測試面試題15道

509a633d44ba0b21785084fac69b5f77.png

1、解釋常用的性能指標名稱與具體含義

性能測試?通過測試工具模擬多種正常、峰值及異常負載條件來對系統的各項性能指標進行測試。驗證軟件系統是否能夠達到用戶提出的性能指標,發現系統中存在的性能瓶頸并加以優化。

性能指標分為兩個方面:

  • 系統指標:與用戶場景和需求相關指標;

  • 資源指標:與硬件資源消耗相關指標;

系統指標:

響應時間:即系統響應時間(Transaction Response Time),應用系統從發出請求到客戶端接收到響應所消耗的時間,是用戶視角最關心的軟件性能業務體驗。響應時間為網絡響應時間與應用程序響應時間之和;

2/5/8原則

  • 一般響應時間在2s內,用戶會感覺比較滿意;

  • 在2s~5s之間,用戶勉強能接受;

  • 大于8s,用戶就可能無法接受,從而刷新頁面或者離開;

平均響應時間:所有請求花費的平均時間;

吞吐量:單位時間內系統能夠處理的客戶請求的數量,直接體現軟件系統的性能承載能力,計算方式是完成的事務數除以時間;

并發用戶數:并發主要是針對服務器而言,在同一時刻與服務器進行交互(指向服務器發出請求)的在線用戶數;

在線用戶數:某段時間內,用戶訪問系統的用戶數,如多個用戶在瀏覽網頁,但沒有對同時對服務器進行數據請求,需要與并發用戶數區分開;

最大并發用戶數:有兩種理解方式一種是從業務的角度來模擬真實的用戶訪問,體現的是業務并發用戶數,指在同一時間段內訪問系統的用戶數量。另一種是從服務器端承受的壓力來考慮,這里的“并發用戶數”指的是同時向服務器端發出請求的客戶數,一般結合并發測試(Concurrency Testing)使用,體現的是服務端承受的最大并發訪問數;

事務:Transaction,可以看作是一個動作或是一系列動作的集合,例如登錄,從登錄開始到登錄結束為一個事務。

TPS:Transaction per second,每秒鐘系統能夠處理的交易或者事務的數量,即服務器對客戶請求的能力,是衡量系統處理能力的重要指標。

吞吐量:網絡傳輸的數據量(處理客戶的請求數);

吞吐率:單位時間(可以是秒/分/時/天)內網絡成功傳輸的數據量,如請求數/秒、頁面數/秒;

點擊數:Web Server收到的HTTP請求數;

點擊率:HPS,每秒鐘用戶向Web Server提交的HTTP請求數;

資源指標:

硬件性能指標:CPU,內存Memory,磁盤I/O(Disk I/O),網絡I/O(Network I/O) ;

中間件:常用的中間件如web服務器Tomcat,nginx,Weblogic,JVM(java虛擬機),ThreadPool線程池,JDBC數據驅動 ;

數據庫指標:SQL,吞吐量,緩存命中率,連接數等;

JVM:Java虛擬機,為使java的代碼可以編譯運行在不同的平臺上順暢,仿真模擬各種計算機來實現 ;

前端指標?:首次顯示時間,頁面數量,頁面大小,網絡startRender,firstRender等。前端的性能與后端的性能的不同點在于,前端是每個用戶的直觀的感受,如前端頁面加載元素耗費的時間,而后端的性能關注點在于多用戶使用系統時,服務器是否能夠承受或者服務器的處理能力如何,能否以較好的響應時間響應;

Load:系統平均負載,特定時間間隔內運行進程數,Load與cpu核數一致;

2、性能測試包含了哪些測試類型?

負載測試(Load Testing):模擬實際軟件系統所承受的負載條件的系統負荷,通過不斷加載(如逐漸增加模擬用戶的數量)或其它加載方式來觀察不同負載下系統的響應時間和數據吞吐量、系統占用的資源(如CPU、內存)等,以檢驗系統的行為和特性,以發現系統可能存在的性能瓶頸、內存泄漏、不能實時同步等問題;(比如實際中我們說從比較小的負載開始,逐漸增加模擬用戶的數量, 直到應用程序響應時間超時,就是說的負載測試)

壓力測試(Stress Testing):壓力測試也稱為強度測試,是在 強負載(大數據量、大量并發用戶等) 下的測試,查看應用系統在峰值使用情況下操作行為,從而有效地發現系統的某項功能隱患、系統是否具有良好的容錯能力和可恢復能力。壓力測試分為高負載下的長時間(如24小時以上)的穩定性壓力測試和極限負載情況下導致系統崩潰的破壞性壓力測試;(壓力測試是測試系統的限制和故障恢復能力,也就是測試Web應用系統會不會崩潰,在什么情況下會崩潰)

容量測試(Volume Testing):確定系統最大承受量,譬如系統最大用戶數,最大存儲量,最多處理的數據流量等;

并發測試(Concurrent Testing): 測試多用戶并發訪問同一個應用、模塊、數據時是否產生隱藏的并發問題;

基準測試?(BenchmarkTesting):比較新的或未知測試對象與已知參照標準(如現有軟件或評測標準)的性能;

3、你認為不同角色關注的軟件性能要點分別是?

客戶:重點關注打開速度及響應時間;

  • 在進行操作時,每個請求之間的間隔時間;

  • 大量用戶在同一時刻在軟件系統上操作是否有較好的體驗;

開發人員:重點關注響應時間和數據庫交互,進行性能調優;

  • 系統架構:架構設計是否合理;

  • 數據庫設計:數據庫設計是否存在問題;

  • 代碼:代碼是否存在性能方面的問題,系統中是否有不合理的內存使用方式;

  • 業務邏輯:系統中是否存在不合理的線程同步方式,系統中是否存在不合理的資源競爭;

測試人員:重點關注用戶感受到的軟件性能;

  • 系統的響應時間;

  • 系統狀態的相關信息,如:CPU、內存、應用服務器狀態、JVM可用內存、數據庫的狀態等;

  • 系統的可擴展性,處理并發的能力;

  • 系統可能的最大容量,可能的性能瓶頸,通過更換哪些設備或是進行哪些擴展能夠提高系統性能;

  • 長時間運行是否足夠穩定,是否能夠不間斷的提供業務服務等;

4、如何得到性能測試需求?

  • 查看需求文檔提取性能測試需求,了解客戶實際使用情況;

  • 結合業務信息,設計操作場景從而總結出需要測試的性能關鍵指標;

  • 執行用例后,提取關鍵性能指標來分析是否滿足性能需求;

5、簡述性能測試步驟?

熟悉應用:了解應用的架構、功能邏輯;

需求分析:根據測試目的,細化需求;

測試方案:明確性能測試指標,性能場景及工具選擇;

測試準備:客戶端準備、測試數據準備、測試腳本準備;

執行測試:執行測試,監控測試客戶端和服務器性能,監控服務器端應用情況;

  • 客戶端的系統資源(CPU、IO、Memory)情況;?

  • 服務端的系統資源(CPU、IO、Memory)情況;?

  • 服務器的JVM運行情況;?

  • 服務端的應用情況是否有異常;?

  • 響應時間、吞吐量等指標;

性能分析與調優:找出性能瓶頸,提高系統整體性能,滿足用戶需求;

編寫測試報告:測試結束后,歸檔整理測試報告;

6、需求分析階段,你從哪幾個方面入手性能測試?

  • 明確到底要不要做性能測試,性能測試的目的是什么;

  • 明確被測系統的架構、軟硬件配置、網絡等;

  • 明確被測系統的基本業務、關鍵業務、用戶行為;

  • 明確被測系統未來的業務拓展規劃以及性能需求;

  • 明確工具選型,比如Jmeter、LoadRunner等;

  • 明確性能測試的指標,比如并發、吞吐量、響應時間等;

7、你如何識別性能瓶頸?

硬件上的性能瓶頸:如CPU、內存、磁盤讀寫等的瓶頸,為服務器硬件瓶頸;

應用軟件上的性能瓶頸:如服務器操作系統瓶頸(參數配置)、數據庫瓶頸(參數配置)、web服務器瓶頸(參數配置)、中間件瓶頸(參數配置)等;

應用程序上的性能瓶頸:應用程序上的性能瓶頸,如SQL語句、數據庫設計、業務邏輯、算法等等;

操作系統上的性能瓶頸:一般指的是Windows、linux等操作系統,如出現物理內存不足時,或虛擬內存設置不合理(虛擬內存設置不合理,會導致虛擬內存的交換率大大降低,從而導致行為的響應時間大大增加,可以認為在操作系統上出現了性能瓶頸);

網絡設備上的性能瓶頸:一般是防火墻、動態負載均衡器、交換機等設備導致;

8、打開瀏覽器輸入網址到頁面渲染,響應時間通常可以細分為哪些?

  • 從客戶端到服務端的請求時間(請求網絡傳輸時間Request);?

  • 從服務端返回數據到客戶端的時間(響應網絡傳輸時間Response);?

  • 頁面渲染時間(客戶端瀏覽器加載頁面的時間);?

  • 處理器的處理時間(應用服務器+數據庫服務器處理時間);

9、軟件為什么會有性能問題?

軟件是運行在環境當中的,在高負載訪問下,業務邏輯比較復雜,不同的軟硬件資源都會引起性能問題,還有軟件本身的代碼、數據庫等會引起性能問題。

10、什么是內存泄露?

內存泄漏?是指對象不再被應用程序使用,但是垃圾回收器卻不能回收它們,因為它們正在被引用。對于長時間運行的程序來說,內存泄漏會使程序占用的內存一直增加,最后就會出現內存耗盡而導致宕機,即使不宕機也會是系統的運行越來越慢,還有就是內存有其他資源,比如數據庫連接,網絡連接等等。

11、什么是內存溢出?

內存溢出?應用系統中存在無法回收的內存或使用的內存過多,最終使得程序運行要用到的內存大于能提供的最大內存。

12、敏捷開發模型,如何開展性能測試?

①每個迭代目標中包含明確的性能目標;?

②建立不同層次的性能測試;?

③完全或接近完全自動化的性能測試;?

④使用測試驅動方法保證性能與優化性能;

13、性能測試什么時間做?

系統性能測試在功能測試之后,系統比較穩定的時候開展。不同階段都可能做性能測試,如單接口性能測試,集成性能測試。

14、有驗證碼的功能,怎么做性能測試?

方案1、將驗證碼暫時屏蔽,完成性能測試后,再恢復。

方案2、使用萬能驗證碼。

15、常見性能測試工具?

Loadrunner、JMeter、SoapUI、Tsung等,根據不同的測試場景選擇適合的工具。

16、如何識別性能瓶頸???? ? ? ?

  • 查看系統日志,如果日志記錄的全面,很容易通過日志發現問題。比如,系統宕機時,系統日志打印了某方法執行拋出out of memory的錯誤,很快定位到導致內存溢出的問題在哪里。? ? ? ??

  • 利用性能監控工具,比如:linux系統環境下通過nmon來監控系統性能。??

  • 設計合理的性能測試場景,好的測試場景能更加快速的發現瓶頸。

-- End --



文末寄語??有些事,不是不在意,而是在意了又能怎樣。人生沒有如果,只有后果和結果。成熟,就是用微笑來面對一切小事。

25c6467d2e9ede2d047de32042296697.png

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

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

相關文章

ensp1.3.00.100用哪個virtualbox_virtualBox使用 Ubuntu18.0.4

一、視圖進入縮放模式,虛擬機上方菜單欄無法顯示?熱鍵c,恢復。 熱鍵默認為右邊的ctrl鍵。開啟增強功能?打開虛擬機后,點擊上方設備-->安裝增強功能。虛擬機里面會出現識別到光盤。先掛載光盤到指定路徑:…

動態ram依靠什么存儲信息_處理器內存系統1(ROM,RAM,數據存儲順序)

本篇文章主要介紹處理器中存儲器:ROM和RAM以及數據在內存中的存儲順序:大/小端(Little/Big Endian)。只讀存儲器(ROM)ROM(Read Only Memory)用來存儲和保存數據。ROM數據不能隨意更新,但是在任何時候都可以讀取。即使是斷電,ROM也…

python中row的用法_關于Python中openpyxl使用iter_rows()的方法

之前已經對iter函數的用法有過講解,記憶遺忘的小伙伴可以重新回顧一遍。今天就iter函數的拓展,講講openpyxl中導入iter_rows()的方法。 當我們使用以下代碼: import openpyxl as op ms = op.load_workbook(mtest.xlsx) ws = ms.active op.worksheet.Worksheet.iter_rows() 然…

市直系統推薦市級以上表彰的_推薦市級以及以上教學方面表彰的細則

推薦市級以及以上教學方面表彰的細則為了客觀、公正、合理地評價教師的德、才表現和工作實績,用制度來激勵、督促全體教職工提高政治和業務索質,認真履行好自身工作職責。避免人為因素,增強評優的透明度,有利于調動廣大教職工工作…

react全局狀態管理_react狀態管理redux

Redux(上)結合阮老師的技術博客,將自己吸收到的內容做了個整理:曾經有人說過這樣一句hua : 如果你不知道是否需要Redux,那就是不需要它。從組建層面考慮,什么樣子的需要redux;某個組件的狀態需要共享,某個狀…

edges2shoes數據集下載_edges2cats

edges2cats是一款十分有趣味的生成貓咪的游戲,在這款游戲是以多種不同的圖形相結合,來生成你所想要生成的畫面,游戲的玩法非常的有趣,感興趣的可以試玩哦!edges2cats游戲怎么玩 玩法介紹首先清除畫面,根據你…

單片機機器周期怎么計算公式_單片機定時器周期計算公式

定時器是單片機的重要功能模塊之一,在檢測、控制領域有廣泛應用。定時器常用作定時時鐘,以實現定時檢測,定時響應、定時控制,并且可以產生ms寬的脈沖信號,驅動步進電機。定時和計數的最終功能都是通過計數實現&#xf…

mac 下mysql工具_mysql之工具的使用總結(mac版本)

13.mysql Mac終端操作12.MySql在Mac上的安裝與配置詳解;11.mac下安裝mysql5.7.18,連接出現Access denied for user rootlocalhost (using password: YES)13.mysql Mac終端操作1.啟動mysql :brew services start mysql2.登陸mysql : mysql -u…

sqoop同步時間戳到mysql_在sqoop導入中使用24小時時間戳

我想從使用自由格式查詢的oracle導入數據,并且需要以24小時格式存儲時間戳。在sqoop導入中使用24小時時間戳sqoop import --connect jdbc:oracle:thin:(server credntials) \--username ***** --password ***** \--query "select emp_uid, emp_name, salary, t…

mysql權限系統的工作原理_Mysql權限系統工作原理

MySQL權限系統保證所有的用戶可以嚴格地做他們假定被允許做的事情。當你連接一個MySQL服務器時, 你的身份由你從那連接的主機和你指定的用戶名來決定,系統根據你的身份和你想做什么來授予權限。MySQL在認定身份中考慮你的主機名和用戶名字,是…

mysql日志文件的類型和作用_Mysql日志文件和日志類型介紹_MySQL

日志文件類型MySQL有幾個不同的日志文件,可以幫助你找出mysqld內部發生的事情:日志文件記入文件中的信息類型錯誤日志記錄啟動、運行或停止mysqld時出現的問題。查詢日志記錄建立的客戶端連接和執行的語句。更新日志記錄更改數據的語句。不贊成使用該日志…

ruby mysql 驅動_windows下Rails安裝MySql驅動的配置

1.安裝ruby這我就不廢話了,安裝很簡單,網上資料也很多。安裝完后再環境變量path里加入D:ruby\bin(視你的安裝路徑了)安裝完后在命令行輸入ruby -v, 會顯示版本號,表示安裝成功,我的版本號是1.8.62.安裝rails我建議去官…

cross join 一張表沒有值關聯不出來數據_你是否還在對left join、right join和join有困擾呢?...

說到SQL,很多人可能用了挺久,但依然有個問題一直困擾著,那就是 left join、 join、 right join和 inner join等等各種 join的區別。網上搜,最常見的就是一張圖解圖,如下:接下來就來實際自己動手實驗&#x…

MySQL如何修改表的儲存方式_修改mysql默認存儲引擎的方法

修改mysql默認存儲引擎的方法,供大家學習參考。先來了解一下mysql存儲引擎:mysql服務器采用了模塊化風格,各部分之間保持相對獨立,尤其體現在存儲架構上。存儲引擎負責管理數據存儲,以及mysql的索引管理。通過定義的AP…

前端判斷是否安裝桌面應用_前端開發人員的桌面應用神器 Electron

01為什么用 JavaScript 來開發桌面應用?曾經的 JavaScript 脆弱、簡陋、甚至有被邊緣化的危險,不過 JavaScript 在經過了兩次飛躍后(以 V8 為首的 JavaScript 引擎和 Node.js 的問世),不再受人欺負,早已升級…

mysql 導出csv 多列_從包含300多列的csv,txt或xls文件創建MySQL表

你可以用一些langague C ,PHP解析txt文件......然后構建一個請求并執行它。PHP和PDO :: module將使這個最簡單。我不知道某個程序是否已經完成這項工作。這是一個解決方案。如果您選擇這樣做并遇到麻煩,歡迎您。每個stackoverflow成員都會幫助您。編輯&a…

mysql error 1594_【MySQL】解決mysql的 1594 錯誤-阿里云開發者社區

對于主從架構的mysql,當發生主機斷電或者其他原因異常crash的時候, slave的容易發生讀取binlog出錯的問題,最常見的是show slave status \G;Master_Log_File: mysql-bin.000029Read_Master_Log_Pos: 3154083Relay_Log_File: relay-bin.000478Relay_Log_Pos: 633Rel…

mysql innodb文件_MySQL的InnoDB文件介紹

MySQL一個顯著的特點是其可插拔的存儲引擎,因此MySQL文件分為兩種,一種是和MySQL數據庫本身相關 的文件,一種是和存儲引擎相關的文件。本文主要介紹和InnoDB存儲引擎相關的文件。表空間文件InnoDB在存儲上也模仿了Oracle的設計,數…

python中與label類似的控件是_python中tkinter的使用(控件整理)(一)

1、使用tkinter.Tk() 生成主窗口(windowtkinter.Tk()):window.title(標題名)修改框體的名字,也可在創建時使用className參數來命名;window.resizable(0,0)框體大小可調性,分別表示x,y方向的可變性;1表示可變,0表示不可…

jdbc dao 工具類mysql_Java基于JDBC實現事務,銀行轉賬及貨物進出庫功能示例

本文實例講述了Java基于JDBC實現事務,銀行轉賬及貨物進出庫功能。分享給大家供大家參考,具體如下:1. 轉賬業務轉賬必須執行2個sql語句(update更新)都成功的情況下,提交事務,如果有一個失敗,則2個都回滾事務…