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