本文共3040字 閱讀約需5分鐘
(後臺回復「Python福利」獲取一份Python學習入門圖解)
一、為什麼要寫這篇文章?
在博客園和公號連續寫文章,已經快兩年了。
自然在公號或博客園閱讀過我文章的同學,基本都能聯繫到我的。
就在幾天前,有個同學加我微信,當然我並不驚訝,甚至習以為常(因為總有人加我微信),為什麼呢?
這裡講下原因吧,對於被添加好友一般可為以下幾類:
第一種:微商,你一看朋友圈,各種商品廣告連接,哇,好頭疼!
第二種:索取,「大佬,有學習視頻、資料嗎?」,官方回答,有,200,還需要嗎?
第三種:直接發來「進群」,我知道你誰呀,想幹什麼的,搞「團結」來了?
第四種:不說話,也不清楚要做什麼,某一天發現自己意外被刪除了,是不是感覺特無辜,有木有!
但這個同學,我要著重說一下,挺有意思的。這是一個關注我公號很久的一個粉絲,總會看我的文章。我們聊了一會,他和我說了下他的情況,也是個自學黨,問我有老師講jmeter課程嗎?想系統學習一下。
畢竟我不是專業搞培訓,雖然工作多年,也不敢妄稱為人師,怕誤人子弟呀,也只能勉強算工作稍微久一些吧。
但作為一個自學黨,自知自學是一件多麼堅難的事。
當然,還有一點就是自己的小玻璃心,受到了影響。因為有一陣自己特別不愛寫文章,周期大概有1-2個月,為什麼呢?
文章閱讀量一直開始走低,而且好多人都不看,甚至連點開都不願意,更別談分享到朋友圈了。而且有人在群裡艾特我問我問題,我說這都寫過文章呀,結果他說不到呀,你發給我下,我那個心裡的難受呀,就別提了。
後來我就琢磨是為什麼,是排版不好看呢?還是內容寫的low?後來也總結了一些原因,只能一點點堅持努力改進,期待閱讀量上去。
但是,這個同學給我了一種強烈的認同感,頓時讓我覺得備受期待,原來我寫的文章,還有人看的,超感動的!所以當他說出困惑後,我想了想,我還是可以幫上一些人的,必須堅持寫下去,幫助一些渴望學習技術的同學,所以就專門寫了這篇文章。
那麼就我限有的知識,來詮釋怎麼做一個功能的性能測試。
二、性能測試的分類
做性能測試,有些名詞自然也是需要了解的,如果後面篇幅我提到有些名詞,感覺生疏,不好理解的。請自行百度一下,對於概念性的東西,個人感覺百度說的比我好多了。
那麼性能測試分為哪些呢,簡單來說分為以下幾類:
1、壓力測試
目的:找出臨界點。
2、負載測試
目的:找出能承受的最大負載量。
3、穩定性測試
目的:驗證系統是否有內存洩露等問題。
4、容量測試
目的:找出資料庫能夠處理的最大會話能力、最大容量。
5、配置測試
目的:為系統調優提供參考。
三、性能測試流程
在實施性能測試的過程中,整體工作流程,如下圖所示:
當然,以上流程僅供參考,具體大家還需視公司情況自行調整。
1、性能需求分析
這裡以我們常用的禪道中的添加用例功能為例,進行分享。
1.1、調研期望指標(即性能需求)
這只是流程中的第一步,如果這一步做好了,接下來的測試方案設計、腳本開發、測試執行、測試報告都會輕鬆很多。
為什麼? 你想如果想都不想,直接搞,後面做的一切不都是白扯嘛!自己心裡都迷迷糊糊的,還怎麼去說服別人呢?
1.2、關於收據需求指標
友情提示:什麼所謂的二八原則,沒有數據支持依據一切都是屁話,完全沒說服力,也就是能忽悠下,沒接觸過性能測試的同學吧。
這裡在廢話幾句哈,做測試的要嚴謹,覺得可能?大約?應該就是這樣的吧?這些字眼能說服誰?下面劃重點,拿出數據說話、數據說話、數據說話、重要的事說三遍!
2、性能測試方案設計
2.1、測試目的、目標與範圍
目的:找出系統潛在的性能缺陷
目標:從安全,可靠,穩定的角度出發,找出性能缺陷,並且找出系統最佳承受並發用戶數,以及並發用戶數下長時間運行的負載情況,如要並發100用戶,如何對系統進行調優
測試功能範圍:本次測試計劃主要收集分析禪道添加用例並發請求相關數據,做出分析和調優
2.2、測試指標範圍
測試範圍:禪道中添加用例並發時,伺服器各項性能指標的性能測試
Jmeter指標:由於Apache旗下性能測試工具Jmeter收集的性能指標偏少,下面的數據選取代表性指標
1、Average/ms:伺服器處理事物平均響應時間(表示客戶端請求到伺服器處理信息且反饋客戶端的時間)
2、Throughput/s:伺服器每秒處理請求數(表示伺服器每秒處理客戶端請求數(單位:個/秒))
3、KB/s:伺服器每秒接受到的數據流量(表示伺服器每秒接受到客戶端請求的數據量KB表示)
硬體指標:
1、%Processor time:CUP使用率(平均低於75%,低於50%更佳)
2、System:Processor Queue Length:CUP隊列中的線程數(每個處理器平均低於2)
3、Memory:Pages/sec:內存錯誤頁數(平均低於20,低於15更佳)
4、Physical Disk-%Disk Time:磁碟使用率(平均低於50%)
5、SQL Server:Buffer Manager-Buffer Cache Hit Ratio:(在緩衝區告訴緩存中找到而不需要從磁碟中讀取的頁的百分比,正常情況次比率超過90%,理想狀態接近99%)
不需要關心的指標:
業務流程/路徑覆蓋率
業務數據的完整、正確性
其他諸如系統易用性、可管理性等屬於專項測試的內容
2.3、測試資源
條件有限,我就一個測試環境,虛擬機套出來的環境,所有服務都部署在一塊了,正常系統是分開部署的,這裡參考這個表格的屬性就好了。
2.4、測試準備
測試環境安裝:我這裡部署的是一個禪道系統,如何搭建百度一下
2.5、測試工具和測試策略
測試工具:Apache-Jmeter2.3.2
測試策略:根據公司內部實際情況,以及業務分布設置訪問量即並發用戶數
2.6、測試數據收集測試腳本、數據及其預驗證
添加測試用例場景設計如下:
2.8、基準測試
目的:驗證測試腳本,初步檢查交易本身是否存在性能缺陷。
測試方法:採用5個用戶負載執行,取交易的平均響應時間作為衡量指標,並計算吞吐量
2.9、負載測試
目的:獲得交易本身的性能表現,診斷交易是否存在性能缺陷。
2.10、穩定性測試
壓測系統7x24小時
2.11、測試輸出成果物
《性能測試方案》
《性能測試記錄及問題跟蹤表》
《性能測試報告》
2.12、測試進度計劃
度量你性能測試期間,在每個時間點該完成的事。這裡根據公司情況來吧,我不給出示例了。
2.13、實施風險及規避措施
指對影響項目測試的各種可能發生的風險進行估計,以及對風險的發生機率和嚴重程度進行估計,並按照估計結果對風險進行排序
3、腳本開發製作
腳本開發製作:請參考文章《JMeter壓力測試實例操作》
4、伺服器監控
伺服器性能監控:請參考文章《Jmeter監控伺服器性能》
5、測試報告編寫
這裡我只介紹可能會涉及的一些點、大家根據自己情況做增減,性能測試報告一般包含如下幾項內容:測試目標、參考文檔、測試環境說明、硬體配置、軟體配置、測試策略、人力資源、測試方案、測試場景、測試用例、測試結果及其分析、測試結論及建議等等。
至於每項的詳細內容,這裡就不逐項一一詳細說明了,請大家根據公司情況做設計編寫。
四、關於性能測試的一些看法
想要把性能測試做好,需要做好多方面的知識儲備,而且涉及到面非常廣,比如網絡,OS,系統架構,業務邏輯,協議報文,腳本開發,服務和系統的監控等等更多方面的知識。
值的一提的是,真正要把性能測試做得好,還得是大公司(真的肯花錢呀),畢竟人家真的是數據量大呀。我們一起回憶一下雙十一的淘寶和京東,這些才算的上真正意義的性能測試。
還有一點要說的是,性能測試真的是水太深了,箇中細節,相信做過性能測試的同學自有體味,哈哈哈!!!
以上僅為自己實際工作中的一些經驗,本人能力有限,如有不足,還請留言補充。最後,謝謝您的耐心閱讀!!
做事一定要有始有終,
堅持到底很重要。