軟件測試 | 性能調(diào)整基礎
在性能測試工作中經(jīng)常會提到“性能調(diào)優(yōu)”或者“系統(tǒng)調(diào)優(yōu)”等概念,實際上“性能調(diào)優(yōu)“或者”系統(tǒng)調(diào)優(yōu)”都屬于性能調(diào)整的范疇。性能調(diào)整是比性能調(diào)優(yōu)更準確的說法,例如可能為了讓某些部分“更優(yōu)”而把某些部分調(diào)得“不優(yōu)”。
所謂性能調(diào)整是為了改變系統(tǒng)特性而對系統(tǒng)軟件或者硬件進行的修改,性能調(diào)整不是測試人員的職責,性能測試工程師的主要任務是主要任務是發(fā)現(xiàn)定位性能問題。對于性能測試中發(fā)現(xiàn)的問題,通常由性能測試工程師、DBA、系統(tǒng)管理員、開發(fā)人員共同來解決,但是對于測試人員,了解調(diào)整的相關(guān)知識則是十分必要的。
1)確定問題
通常情況下,首先確定系統(tǒng)是否存在問題,并對問題進行正確的定位,重點是發(fā)現(xiàn)系統(tǒng)瓶頸。通常,確定系統(tǒng)問題從下面幾個方面入手。
應用程序代碼:通常情況下,很多程序的性能問題都是寫出來的,因此對于發(fā)現(xiàn)瓶頸的模塊,應該首先檢查一下代碼;
數(shù)據(jù)庫配置:數(shù)據(jù)庫配置經(jīng)常會引起整個系統(tǒng)運行緩慢,一些諸如Oracle的大型數(shù)據(jù)庫都是需要DBA進行正確的參數(shù)調(diào)整才能投產(chǎn)的。
操作系統(tǒng)配置:操作系統(tǒng)配置不合理也可能引起系統(tǒng)瓶頸。
硬件設置:磁盤速度、內(nèi)存大小等都是容易引起瓶頸的原因,因此這些都是分析的重點。
網(wǎng)絡:網(wǎng)絡負載過重會導致網(wǎng)絡沖突和網(wǎng)絡延遲。
同時,還要對系統(tǒng)的使用情況進行調(diào)查,例如,以下幾種情況。
是否聽到了很多用戶的抱怨?
是否某些操作的響應時間會隨著時間越來越長?
CPU的使用率是否很低而I/O的使用率卻很高?
使用過程中性能是否穩(wěn)定?
系統(tǒng)性能問題不是顯而易見的,要進行仔細的查找才能夠進行正確的定位。
2)確定原因
確定系統(tǒng)存在問題后就要仔細分析,確定引起問題發(fā)生的原因。確定原因很大程度上靠的是個人經(jīng)驗,涉及的知識有操作系統(tǒng)、數(shù)據(jù)庫、網(wǎng)絡和程序開發(fā)等許多方面。
和確定性能問題一樣,確定原因仍要廣泛地搜集信息。通常要進行如下的分析。
問題的影響是什么,是響應時間還是業(yè)務吞吐量,或者是其他問題?
是大多數(shù)用戶還是少數(shù)用戶遇到了問題,如果是少數(shù)用戶,這幾個用戶與其他用戶的操作有什么不同?
系統(tǒng)資源監(jiān)控的結(jié)果是否正常:CPU的使用是否到了極限?I/O情況如何?
問題是否集中在某一類模塊中?
是客戶端還是服務器出現(xiàn)了問題?
系統(tǒng)硬件配置是否夠用?
是否實際負載超過了系統(tǒng)的負載能力?
是否未對系統(tǒng)進行優(yōu)化?
通過這些分析以及一些具體系統(tǒng)相關(guān)的問題,可以對系統(tǒng)瓶頸有更深入的了解,進而分析出真正的原因。
3)確定調(diào)整目標和解決方案
在分析出問題的原因后,測試人員和其他系統(tǒng)調(diào)整人員首先要確定調(diào)整目標,然后設計解決方案。確實調(diào)整目標的主要作用是明確何時停止調(diào)整系統(tǒng),否則工作將永無盡頭。
每個系統(tǒng)都有不同的特點,因此調(diào)整目標可能不同。例如,下面這些都是系統(tǒng)的調(diào)整目標。
提高系統(tǒng)吞度量
縮短響應時間
更好地支持并發(fā)
設計解決方案的主要依據(jù)就是這些調(diào)整目標,有了明確的方案和目標,就可以進行后面的工作了。
4)測試解決方案
實施解決方案后,就要對方案進行測試。測試人員可以使用以前的測試場景來進行測試,驗證系統(tǒng)是否解決了性能問題。測試解決方案盡量在仿真測試環(huán)境下進行,因為在生產(chǎn)環(huán)境下可能會帶來破壞,除非充分估計了測試的風險,并且準備了充分的補救方案。
5)分析調(diào)整結(jié)果
性能調(diào)整的最后一步是分析調(diào)整結(jié)果,如果沒有解決問題,則要重復前面的工作。在測試系統(tǒng)調(diào)整方案過程中,要經(jīng)常分析所做的工作,例如沒能準確定位問題或調(diào)整方案不正確,預期目標可能不會達到,盡早發(fā)現(xiàn)這些問題可以使工作方向正確。
分析結(jié)果主要考慮下面的問題。
系統(tǒng)調(diào)整是否達到或者超出了預期目標?
系統(tǒng)是調(diào)整性能得到了改善,還是犧牲某部分性能來解決問題?
調(diào)整是否可以結(jié)束了?
最后,如果達到了預期目標,則調(diào)整工作完成。
搜索微信公眾號:TestingStudio霍格沃茲的干貨都很硬核