摘自:http://www.51testing.com/html/29/n-197229.html
發(fā)布時(shí)間: 2009-11-30 14:30 作者: 未知 來源: 51Testing軟件測試網(wǎng)采編
性能測試策略
1.模擬生產(chǎn)線真實(shí)的硬件環(huán)境。
2.服務(wù)器置于同一機(jī)房,最大限度避免網(wǎng)絡(luò)問題。
3.以PV為切入點(diǎn),通過模型將其轉(zhuǎn)換成性能測試可量化的TPS。
4.性能測試數(shù)據(jù)分為基礎(chǔ)數(shù)據(jù)和業(yè)務(wù)數(shù)據(jù)兩部分,索引和SQL都會(huì)被測試到。
5.日志等級設(shè)置成warn,避免大量打印log對性能測試結(jié)果的影響。
6.屏蔽ESI緩存,模擬最壞的情況。
7.先單場景,后混合場景,確保每個(gè)性能瓶頸都得到調(diào)優(yōu)。
8.拆分問題,隔離分析,定位性能瓶頸。
9.根據(jù)性能測試通過標(biāo)準(zhǔn),來判斷被測性能點(diǎn)通過與否。
10.針對當(dāng)前無法解決的性能瓶頸,錄入QC域進(jìn)行跟蹤,并請專家進(jìn)行風(fēng)險(xiǎn)評估。
性能測試壓力變化模型
a點(diǎn):性能期望值
b點(diǎn):高于期望,系統(tǒng)資源處于臨界點(diǎn)
c點(diǎn):高于期望,拐點(diǎn)
d點(diǎn):超過負(fù)載,系統(tǒng)崩潰
性能測試
a點(diǎn)到b點(diǎn)之間的系統(tǒng)性能,以性能預(yù)期目標(biāo)為前提,對系統(tǒng)不斷施加壓力,驗(yàn)證系統(tǒng)在資源可接受范圍內(nèi),是否能達(dá)到性能預(yù)期。
負(fù)載測試
b點(diǎn)的系統(tǒng)性能,對系統(tǒng)不斷地增加壓力或增加一定壓力下的持續(xù)時(shí)間,直到系統(tǒng)的某項(xiàng)或多項(xiàng)性能指標(biāo)達(dá)到極限,例如某種資源已經(jīng)達(dá)到飽和狀態(tài)等。
b點(diǎn)到d點(diǎn)之間,超過安全負(fù)載的情況下,對系統(tǒng)不斷施加壓力,是通過確定一個(gè)系統(tǒng)的瓶頸或不能接收用戶請求的性能點(diǎn),來獲得系統(tǒng)能提供的最大服務(wù)級別的測試。
穩(wěn)定性測試
a點(diǎn)到b點(diǎn)之間,被測試系統(tǒng)在特定硬件、軟件、網(wǎng)絡(luò)環(huán)境條件下,給系統(tǒng)加載一定業(yè)務(wù)壓力,使系統(tǒng)運(yùn)行一段較長時(shí)間,以此檢測系統(tǒng)是否穩(wěn)定,一般穩(wěn)定性測試時(shí)間為n*12小時(shí)。
監(jiān)控指標(biāo)
性能測試通常需要監(jiān)控的指標(biāo)包括:
1.服務(wù)器 Linux(包括CPU、Memory、Load、I/O)。
2.數(shù)據(jù)庫:1.Mysql 2.Oracle(緩存命中、索引、單條SQL性能、數(shù)據(jù)庫線程數(shù)、數(shù)據(jù)池連接數(shù))。
3.中間件:1.Jboss 2. Apache(包括線程數(shù)、連接數(shù)、日志)。
4.網(wǎng)絡(luò): 吞吐量、吞吐率。
5.應(yīng)用: jvm內(nèi)存、日志、Full GC頻率。
6.監(jiān)控工具(LoadRunner):用戶執(zhí)行情況、場景狀態(tài)、事務(wù)響應(yīng)時(shí)間、TPS等。
7.測試機(jī)資源:CPU、Memory、網(wǎng)絡(luò)、磁盤空間。
監(jiān)控工具
性能測試通常采用下列工具進(jìn)行監(jiān)控:
1.Profiler。一個(gè)記錄log的類,阿里巴巴集團(tuán)自主開發(fā),嵌入到應(yīng)用代碼中使用。
2.Jstat。監(jiān)控java 進(jìn)程GC情況,判斷GC是否正常。
3.JConsole。監(jiān)控java內(nèi)存、java CPU使用率、線程執(zhí)行情況等,需要在JVM參數(shù)中進(jìn)行配置。
4.JMap。監(jiān)控java程序是否有內(nèi)存泄漏,需要配合eclipse插件或者M(jìn)emoryAnalyzer來使用。
5.JProfiler。全面監(jiān)控每個(gè)節(jié)點(diǎn)的CPU使用率、內(nèi)存使用率、響應(yīng)時(shí)間累計(jì)值、線程執(zhí)行情況等,需要在JVM參數(shù)中進(jìn)行配置。
6.Nmon。全面監(jiān)控linux系統(tǒng)資源使用情況,包括CPU、內(nèi)存、I/O等,可獨(dú)立于應(yīng)用監(jiān)控。
7.Valgrind。監(jiān)控C/C++程序是否存在內(nèi)存泄漏,基于linux環(huán)境。
8.Vmmap和ApplicationVerifier。監(jiān)控C/C++程序是否存在內(nèi)存泄漏,基于windows環(huán)境。
性能分析
可按以下順序:
中間件瓶頸(apache/jboss參數(shù)配置、數(shù)據(jù)庫參數(shù)配置)->
應(yīng)用服務(wù)的debug log ->
應(yīng)用服務(wù)的filter log ->
本應(yīng)用的性能瓶頸(SQL語句、索引、業(yè)務(wù)邏輯、線程池設(shè)置、算法)->
服務(wù)提供者的性能瓶頸 ->
相關(guān)聯(lián)的底層存儲(chǔ)應(yīng)用的性能瓶頸
分析標(biāo)準(zhǔn)
通過性能指標(biāo)的表現(xiàn)形式,分析性能是否穩(wěn)定。比如:
1.響應(yīng)時(shí)間是否符合性能預(yù)期,表現(xiàn)是否穩(wěn)定。
2.應(yīng)用日志中,超時(shí)的概率,是否在可接受的范圍之內(nèi)。
3.TPS維持在多大的范圍內(nèi),是否有波形出現(xiàn),標(biāo)準(zhǔn)差有多少,是否符合預(yù)期。
4.服務(wù)器CPU、內(nèi)存、load是否在合理的范圍內(nèi),等等。
分析工具
對于部分性能指標(biāo),可借助自動(dòng)分析工具,統(tǒng)計(jì)出數(shù)據(jù)的總體趨勢:
1.LoadRunner analysis
LoadRunner analysis是loadrunner的一個(gè)部件,用于將運(yùn)行過程中所采集到的數(shù)據(jù)生成報(bào)表,主要用于采集TPS、響應(yīng)時(shí)間、服務(wù)器資源使用情況等變化趨勢。
2.Memory Analyzer
Memory Analyzer工具可以解析Jmap dump出來的內(nèi)存信息,查找是否有內(nèi)存泄漏。
3.nmon_analyser
nmon工具可以采集服務(wù)器的資源信息。列出CPU、MEM、網(wǎng)絡(luò)、I/O等資源指標(biāo)的使用情況。