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