今天有同行在blog上留言,問“想從功能測試轉向性能測試,但不知道需要哪些了解哪些知識,及怎樣進行一個系統的學習”。這類問題之前也被問到很多次了,所以這次干脆整理一下,發個主題供同行們參考。如果需要補充,也歡迎大家留言一起討論。
如果想真的做好性能測試,需要學習的東西還是比較多的。簡單列一下吧。
1. 精通性能測試的基本概念,過程,方法論,了解性能工程;
2. 精通1個商業性能測試工具+1個開源性能測試工具,知道工具可以做什么,不可以做什么,以及工具使用中常見的問題和解決思路;
3. 扎實的計算機專業基礎知識,包括計算機組成原理、操作系統、數據庫原理、計算機網絡原理;
4. 熟悉至少1個常用的數據庫產品,例如SQL Server或者 Oracle,能進行一般的數據庫管理操作,熟悉SQL腳本的使用,熟悉常用的數據調優工具和常用的counter;
5. 熟悉至少一個操作系統的原理,Windows或者Linux都可以,熟悉操作系統的體系架構、操作系統的重要基礎概念,以及內存管理、存儲/文件系統、驅動/硬件的管理、網絡協議的實現及構成、性能的監控方法和原理,熟悉常用的counter;
6. 熟悉至少一個web server 產品,例如apache,了解一般的配置和常用的counter;
7. 熟悉至少一個應用服務器產品,例如tomcat,了解一般的配置,熟悉常用的服務器性能監控方法和原理,熟悉常用的counter;
8. 至少熟悉TCP/IP協議,熟悉HTTP協議,至少見過并了解三層、四層交換或者路由器的使用和配置。了解常用的與網絡性能相關的counter;
9. 了解一般的大型企業應用的部署架構和應用架構;
10. 了解知名大型web應用、高并發量、高流量、實時響應要求高的超大規模網站的架構和優化歷程;
11. 熟悉統計學的基礎知識、常用分析方法以及實驗設計方法,了解數學建模相關的知識;
12. 熟悉專屬行業的業務知識和用戶場景,例如電信行業的OSS系統所涉及的業務知識和用戶場景,證券交易系統所涉及的業務知識和用戶場景;
13. 大量的實際性能測試及優化經驗;
14. 積極的參與到各類圈子、社團的討論和交流、分享中。
暫時先想到了這么多,有興趣的朋友可以一起討論一下,相信每個人都有自己不同的經歷和感想,可以跟其他人分享一下,提供參考。
性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項性能指標進行測試。負載測試和壓力測試都屬于性能測試,兩者可以結合進行。通過負載測試,確定在各種工作負載下系統的性能,目標是測試當負載逐漸增加時,系統各項性能指標的變化情況。壓力測試是通過確定一個系統的瓶頸或者不能接收的性能點,來獲得系統能提供的最大服務級別的測試。