3.1性能測試流程
3.1.1性能測試基本流程
性能測試從實際執(zhí)行層面來看,測試的過程一般分為:
3.1.2性能需求分析
? ? ? ?性能需求分析是整個性能測試工作開展的基礎(chǔ)拨匆,性能需求分析做的好不好直接硬性到性能測試的結(jié)果毯焕。
? ? ? ?在需求分析階段讥耗,測試人員需要與項目相關(guān)的人員進(jìn)行溝通,收集各種項目資料修肠,對系統(tǒng)進(jìn)行分析,建立性能測試數(shù)據(jù)模型,并將其轉(zhuǎn)化為可衡量的具體性能指標(biāo),確認(rèn)測試的目標(biāo)惠爽。
3.1.3性能需求分析的目標(biāo)
①明確到底要不要做性能測試杂曲?性能測試的目的是什么?
②明確被測系統(tǒng)是什么?被測試系統(tǒng)的相關(guān)技術(shù)信息如:架構(gòu)、平臺、協(xié)議等牲芋。
③明確被測系統(tǒng)的基本業(yè)務(wù)、關(guān)鍵業(yè)務(wù)捺球,用戶行為缸浦。
④明確性能測試點是什么?哪些需要測氮兵,為什么裂逐?哪些不需要測,又是為什么泣栈?
⑤明確被測系統(tǒng)未來的業(yè)務(wù)拓展規(guī)劃以及性能需求卜高?
⑥明確性能測試策略弥姻,即應(yīng)該怎么測試?
⑦明確性能測試的指標(biāo)掺涛,知道測試出來的結(jié)果怎么算通過庭敦?
3.1.4性能需求分析方法
①系統(tǒng)信息調(diào)研
? ? ? ?指對被測系統(tǒng)進(jìn)行分析,需要對其有全面的了解和認(rèn)識薪缆,這是做好性能測試的前提秧廉,而且在后續(xù)進(jìn)行性能分析和調(diào)優(yōu)時將會大有用處,試想如果連系統(tǒng)的架構(gòu)拣帽、協(xié)議都不了解疼电,我們?nèi)绾芜M(jìn)行準(zhǔn)確的性能測試?如果進(jìn)行西鞥呢分析與調(diào)優(yōu)减拭?
②業(yè)務(wù)信息調(diào)研
? ? ? ?指對被測試的業(yè)務(wù)進(jìn)行分析蔽豺,通過對業(yè)務(wù)的分析和了解,方便我們后續(xù)進(jìn)行性能測試場景的確定以及性能測試指標(biāo)的確定峡谊。
③性能需求評估
? ? ? ?在實施性能測試之前茫虽,我們需要對被測系統(tǒng)做相應(yīng)的評估刊苍,主要目的是明確是否需要做性能測試既们。
? ? ? ? 如果確定需要做性能測試,需要進(jìn)一步確立性能測試點和指標(biāo)正什,明確該測什么啥纸、性能指標(biāo)是多少,測試通過or不通過的標(biāo)準(zhǔn)婴氮?
? ? ? 性能指標(biāo)也會根據(jù)情況評估斯棒,要求被測系統(tǒng)能滿足將來一定時間段的業(yè)務(wù)壓力。
3.1.5性能需求評估
eg:判斷是否進(jìn)行性能測試
①業(yè)務(wù)角度
? ? ? ?系統(tǒng)時公司內(nèi)部or對外主经?系統(tǒng)使用的人數(shù)的多少荣暮?如果一個系統(tǒng)上線后基本沒幾個人使用,無論系統(tǒng)多大罩驻,設(shè)計多么復(fù)雜穗酥,并發(fā)的性能測試都是沒必要的,前期可以否決惠遏。
②系統(tǒng)角度
? ? ? ?如果一個系統(tǒng)采用的架構(gòu)是老的系統(tǒng)架構(gòu)(通常大公司都有自己的統(tǒng)一架構(gòu))砾跃,只是在此框架上增加一些應(yīng)用,其實是沒有必要做性能測試节吮,因為老框架的使用肯定是經(jīng)過了驗證的抽高。如果一個系統(tǒng)采用的是一種新的框架,可以考慮做性能測試透绩。
③數(shù)據(jù)庫要求
? ? ? ?很多情況下翘骂,性能測試是大數(shù)據(jù)量的并發(fā)訪問壁熄、修改數(shù)據(jù)庫,而瓶頸在于連接數(shù)據(jù)庫池的數(shù)量碳竟,而非數(shù)據(jù)庫本身的負(fù)載请毛、吞吐能力。這時瞭亮,可以結(jié)合DBA的建議方仿,來決定是否來做性能測試。
④系統(tǒng)特殊要求
? ? ? ?從實時性能角度來分析统翩,某些系統(tǒng)對響應(yīng)時間要求比較仙蚜,比如餐飲系統(tǒng),系統(tǒng)的快慢直接影響客戶的感受厂汗,這種情況就有作并發(fā)測試的必要委粉,在大并發(fā)量的場景下,查看這個功能的響應(yīng)時間娶桦。
3.2性能測試準(zhǔn)備
3.2.1性能需求分析方法
確定性能測試點:
①關(guān)鍵業(yè)務(wù):確定被測項目是否屬于關(guān)鍵業(yè)務(wù)贾节,有哪些主要的業(yè)務(wù)邏輯點,特別是跟交易相關(guān)的功能點衷畦。例如:結(jié)算栗涂,扣款等接口。
②日請求量:確定被測項目各功能點的日請求量(可以統(tǒng)計不同時間力度下的請求量如:小時祈争、日斤程、周、月)菩混。如果日請求量很高忿墅,系統(tǒng)壓力很大,而且又是關(guān)鍵業(yè)務(wù)沮峡,該項目需要做性能測試疚脐,而且關(guān)鍵業(yè)務(wù)點,可以被確定為性能點邢疙。
③邏輯復(fù)雜度:判定被測項目各功能點的邏輯復(fù)雜度棍弄。如果一個主要業(yè)務(wù)的日請求量不高,但是邏輯很復(fù)雜秘症,則也需要通過性能測試照卦。原因是,在分布式方式的調(diào)用中乡摹,當(dāng)某一個環(huán)節(jié)響應(yīng)較慢役耕,就會影響到其他環(huán)節(jié),造成雪崩效應(yīng)聪廉。
④運營推廣活動:根據(jù)運營的推廣計劃來判定待測系統(tǒng)未來的壓力瞬痘。未雨綢繆故慈、防患于未然、降低運營風(fēng)險是性能測試的主要目標(biāo)框全。
⑤被測系統(tǒng)的性能不僅能滿足當(dāng)前壓力察绷,更需要滿足未來一定時間段內(nèi)的壓力。因此津辩,事先了解運營推廣計劃拆撼,對性能點的制定有很大的作用。
3.2.2性能測試準(zhǔn)備
①測試環(huán)境準(zhǔn)備
? ? ? ?系統(tǒng)運行環(huán)境:測試環(huán)境喘沿,有些時候需求比較多闸度,做性能測試擔(dān)心把環(huán)境搞垮影響其他的功能測試,可能需要重新搭建一套專門用來做性能測試的環(huán)境蚜印。
? ? ? ?執(zhí)行機(jī)環(huán)境:這個就是用來生成負(fù)載的執(zhí)行機(jī)莺禁,有時候甚至需要一套執(zhí)行機(jī)集群。
②測試場景設(shè)計
? ? ? ?根據(jù)性能需求分析來設(shè)計符合用戶使用習(xí)慣的場景窄赋,場景設(shè)計的好不好直接影響到性能測試的效果哟冬。
③性能工具準(zhǔn)備
? ? ? ? 負(fù)載工具:根據(jù)需求分析和系統(tǒng)特點選擇合適的負(fù)載工具,比如LoadRunner忆绰、Jmeter等浩峡。
? ? ? ?監(jiān)控工具:準(zhǔn)備性能測試時的服務(wù)器資源、JVM较木、數(shù)據(jù)庫監(jiān)控工具红符,以便進(jìn)行后續(xù)的性能測試分析與調(diào)優(yōu)青柄。
④測試腳本準(zhǔn)備
? ? ? ?如果性能測試工具不能滿足被測系統(tǒng)的要求或只能滿足部分要求時伐债,需要我們自己開發(fā)腳本配合工具進(jìn)行性能測試。
⑤測試數(shù)據(jù)準(zhǔn)備
? ? ? ? 負(fù)載測試數(shù)據(jù):并發(fā)測試時需要多少數(shù)據(jù)致开?
? ? ? ?DB數(shù)據(jù)量大蟹逅:為了盡量符合生產(chǎn)場景,需要模擬線上大量數(shù)據(jù)情況双戳,那么要往數(shù)據(jù)庫里提前插入一定的數(shù)據(jù)量虹蒋。這可能需要花費一些時間,特點是關(guān)聯(lián)系統(tǒng)較多飒货,邏輯復(fù)雜的業(yè)務(wù)可能同時設(shè)計多張表魄衅。
3.2.3性能測試執(zhí)行
①人工邊執(zhí)行邊分析
? ? ? ?通常我們做性能測試都是人工執(zhí)行并隨時觀察系統(tǒng)運行的情況、資源的使用率等指標(biāo)塘辅。這個過程可能會很漫長晃虫,需要不斷的調(diào)整系統(tǒng)配置或程序代碼來定位問題。
②無人值守執(zhí)行性能測試
? ? ? ?無人值守值最理想化的目標(biāo)扣墩,無人值守不是說沒有人力介入哲银,而是把人為的分析和執(zhí)行過程分離扛吞,執(zhí)行過程只是機(jī)器服從指令的運行而已。
? ? ? ?通常測試環(huán)境在白天比較繁忙荆责,出現(xiàn)性能問題及定位難度較大且影響功能測試滥比。
? ? ? ?所以一般性能測試最好在晚上或周末進(jìn)行,在相對較安靜的條件下有利于測試結(jié)果的穩(wěn)定性做院。
3.2.4測試報告與總結(jié)
①性能測試報告是性能測試的里程碑盲泛,通過報告能展示出性能測試的最終結(jié)果,展示系統(tǒng)性能是否符合需求键耕,是否有性能隱患查乒。
② 性能測試報告中需要闡明性能測試目標(biāo)、性能測試環(huán)境郁竟、性能測試數(shù)據(jù)構(gòu)造規(guī)則玛迄、性能測試策略、性能測試結(jié)果棚亩、性能測試調(diào)優(yōu)說明蓖议、性能測試過程中遇到的問題和解決方法等。
③性能測試工程師完成該次性能測試后讥蟆,需要將測試結(jié)果進(jìn)行備案勒虾,并作為下次性能測試的極限標(biāo)準(zhǔn),具體包括性能測試結(jié)果數(shù)據(jù)瘸彤、性能測試瓶頸和調(diào)優(yōu)方案等修然。
④同時需要將測試過程中遇到的問題,包括代碼瓶頸质况、配置項問題愕宋、數(shù)據(jù)問題和溝通問題,以及解決辦法或解決方案结榄,進(jìn)行知識沉淀中贝。