性能測試個人經驗小結
性能測試定義:
通過一定的工具結合相應的測試方法,對部署的系統應用進行測試,發現系統應用內部存在的代碼邏輯問題及應用部署的機器硬件資源瓶頸問題及應用部署架構存在架構錯誤問題,如:網絡端、客戶端、服務端搭建的架構問題;
負載測試:是一個分析軟件應用程序和支撐架構、模擬真實環境的使用,從而來確定能夠接收的性能過;
壓力測試(Stress Testing):是通過確定一個系統的瓶頸或者不能接收的性能點,來獲得系統能提供的最大服務級別的測試;
性能測試的目的:
性能測試的目的主要體現在三個方面:以真實的業務為依據,選擇有代表性的、關鍵的業務操作設計測試案例,以評價系統的當前性能;當擴展應用程序的功能或者新的應用程序將要被部署時,負載測試會幫助確定系統是否還能夠處理期望的用戶負載,以預測系統的未來性能;通過模擬成百上千個用戶,重復執行和運行測試,可以確認性能瓶頸并優化和調整應用,目的在于尋找到瓶頸問題;
項目開發周期:初始時刻,項目更多關注的是功能實現,此時功能測試顯得尤為重要,測試的提前介入,可以提前預測風險,減少項目開發周期、節約開發成本;功能測試后的階段,個人認為應該是性能測試(試想,如果一個項目連功能都實現不了,更何談性能測試);在功能完畢之后,引入性能測試,通過性能測試對開發項目潛在的問題進行排查(功能測試,僅僅是幾個人或者幾十個人簡單的對應用功能的一個測試,對于應用真正上線后的大量用戶使用,應用存在的潛在風險,并不能做很好的預估,尤其是當前空前的競爭壓力下,應用上線后的失敗,很可能導致整個項目的失敗;例如:12306訂票網站,使用量之大,可能全世界前所未有,調動全國人力去測試應用性能問題,肯定是不可能的。如果事先不經過性能測試,貿然上線,在如此之多的用戶使用情況下,系統崩潰將是怎樣的一種后果。);
案例分享:編者曾經從事過一個項目,伴隨項目的始終。前期階段,由于測試提前介入,以及項目開發采用的敏捷開發方式,項目很快在不到半年的時間內,功能近乎完美完成。項目經理本著穩妥起見,引入性能測試,對項目潛在的風險進行評估,然后就搭建了一套模擬環境,專用于性能測試,搭建的模擬環境30用戶并發運行,項目一點問題沒有,進一步提升并發用戶數,各種問題接踵而來;經過系統調優后(發布的應用系統參數等),部分問題解決;為了進一步測試實際情況下存在問題,性能測試環境由模擬環境切到了生產環境上,此時是大量用戶下的并發,部分業務是沒有問題的,但是更多的問題是集中在涉及到工作流的一些業務場景上,后臺日志各種報錯;通過抓取后臺日志,對問題進行定位分析,很快排查解決了代碼開發中存在的一些邏輯問題;代碼修復后重新上線,問題已基本不存在了;項目也很快結束,大大的縮短了項目開發周期、節約了開發成功、更好的適用于用戶;
性能測試注意點:
錄制腳本盡量模擬實際用戶操作,在場景設計時,盡量與實際場景一致,對于用戶使用比較多的業務,應著重關注;
性能測試盡可能在實際生產環境上進行,普通模擬環境并不能真正發現實際生產環境下,應用存在的問題,但是并非棄用模擬環境;
性能測試,對于應用系統部署的環境上,可能需要部署一些系統性能監控軟件,在軟件的選取上,盡可能降低軟件自身運行對系統性能的影響;
性能測試,特別是應用與數據庫交互的業務操作上,需要提前預制符合性能測試業務需求的數據,在此基礎上,盡量讓環境測試環境可多次重復使用,這就要求數據、應用可還原;
性能測試技能掌握要求:
測試環境搭建,環境搭建不僅僅是性能測試所需要具備的技能,也是測試人員所需要具備的基本技能;很多測試,包括應用的安裝卸載,都需要測試人員具備這一技能;
應用搭建使用協議的了解,很多情況下,性能測試人員需要錄制測試腳本,這就要測試人員對應用采用的協議有充分的了解;
服務器架構的了解,單一的一臺服務器、多臺服務器情況下的集群架構等,了解服務器架構,可以為性能測試人員初期性能調優提供幫助;
數據庫知識,面對大數據時代,數據庫機能的掌握不僅僅可以為性能測試服務,還可以為你今后的華麗轉型,提供良好保障,華麗的DBA;
良好的編碼思量。基礎的編碼知識,對于編碼的了解,可以為你今后沖擊高級性能測試工程師提供有力保障,一個高級性能測試工程師,應當具有性能調優這一技能,編碼就顯得尤為重要;
對于新技術、新思想的一種追求與掌握;
posted on 2014-07-30 09:38 順其自然EVO 閱讀(380) 評論(0) 編輯 收藏 所屬分類: 性能測試