之前有在自己建的測(cè)試群直播分享了一些性能測(cè)試的基礎(chǔ)內(nèi)容,當(dāng)時(shí)有人說希望有個(gè)實(shí)戰(zhàn)的分享,想了想某些東西屬于公司機(jī)密不方便直接直播分享, 這里就拿最近我做的一個(gè)性能測(cè)試實(shí)例來舉例子說說,理解為主。。。 先看看一個(gè)完美的性能測(cè)試流程是怎樣的,如下圖: 當(dāng)然,實(shí)際工作中能實(shí)現(xiàn)這種完美的流程很難,下面挑重點(diǎn)的介紹。。。 一、獲取測(cè)試需求 大概上周三接到這樣一個(gè)性能測(cè)試需求,大概的業(yè)務(wù)邏輯如下圖: 簡單概括下業(yè)務(wù)邏輯,就是:發(fā)起一個(gè)拼團(tuán),其他人點(diǎn)擊活動(dòng)進(jìn)去,領(lǐng)券,然后領(lǐng)券時(shí)要驗(yàn)證拼團(tuán)的有效性,在買單用券時(shí),先驗(yàn)證是否是會(huì)員,如果不是,先注冊(cè)會(huì)員,再將券和會(huì)員綁定! 具體的性能指標(biāo)是:驗(yàn)證上圖4個(gè)場景中的接口,在響應(yīng)時(shí)間為3S和5S時(shí),服務(wù)器的TPS值(這屬于系統(tǒng)性能能力驗(yàn)證的應(yīng)用領(lǐng)域)。 測(cè)試的系統(tǒng),是公司的微信會(huì)員系統(tǒng),系統(tǒng)架構(gòu)相對(duì)熟悉,這里不過多介紹。 二、測(cè)試計(jì)劃和方案 所謂的測(cè)試計(jì)劃,無非就是某人用多久時(shí)間用什么資源什么方法完成什么事情。 由于這次性能測(cè)試需求工作量不大,且時(shí)間足夠,所以就我一個(gè)人完成測(cè)試的大部分工作,當(dāng)然,一部分需要開發(fā)協(xié)助。 測(cè)試方案,就是測(cè)試計(jì)劃的補(bǔ)充和擴(kuò)展。 比如這次性能測(cè)試,我預(yù)計(jì)用一周時(shí)間完成這些測(cè)試工作,設(shè)計(jì)用例、場景建模、準(zhǔn)備測(cè)試數(shù)據(jù)、測(cè)試腳本開發(fā)、環(huán)境搭建等各需要多久時(shí)間,在哪一天甚至是上午還是下午完成這些工作。 三、執(zhí)行前的準(zhǔn)備工作 環(huán)境搭建:測(cè)試環(huán)境由于之前會(huì)員系統(tǒng)也進(jìn)行過性能測(cè)試,測(cè)試環(huán)境搭建這一步工作量不大,開發(fā)很快就配置完成,所以這里不贅述。 場景建模:個(gè)人理解,就是考慮哪些場景下可能存在性能瓶頸,相應(yīng)的設(shè)置對(duì)應(yīng)的測(cè)試腳本和測(cè)試邏輯,以盡可能模擬生產(chǎn)環(huán)境(由于對(duì)業(yè)務(wù)蠻熟悉,這里也不贅述,需要提及的一點(diǎn)是: 一定要理解、熟悉系統(tǒng)業(yè)務(wù),因?yàn)樾枨蟮漠a(chǎn)生,就是用戶+場景)。 測(cè)試數(shù)據(jù)準(zhǔn)備:測(cè)試數(shù)據(jù)準(zhǔn)備常用的有這兩種方式:將生產(chǎn)數(shù)據(jù)復(fù)制一份過來、開發(fā)腳本預(yù)埋造數(shù)據(jù)(但無論哪種,一定要注意數(shù)據(jù)隔離,防止數(shù)據(jù)污染)。 測(cè)試腳本開發(fā):首先,需要從開發(fā)那里獲取開發(fā)接口文檔和數(shù)據(jù)庫表設(shè)計(jì)文檔。 然后,通過工具或者寫測(cè)試腳本調(diào)試接口,先保證接口可以成功調(diào)用(我用的工具是jmeter+MySQL)。 四、執(zhí)行測(cè)試腳本 在保證接口可以成功調(diào)用之后,先進(jìn)行單接口基準(zhǔn)測(cè)試,即:對(duì)一個(gè)接口進(jìn)行壓力測(cè)試,不斷加壓,直到響應(yīng)時(shí)間達(dá)到或超過指標(biāo),觀察當(dāng)前其并發(fā)數(shù)和TPS。 個(gè)人經(jīng)驗(yàn)是同樣的并發(fā)數(shù),多執(zhí)行幾次,得到一個(gè)平均值或穩(wěn)定值(即TPS和TRT曲線相對(duì)穩(wěn)定的值),并記錄下來。 如下圖: 記錄的目的,可以通過直觀的數(shù)據(jù)變化,得到單個(gè)接口的最大TPS和不同并發(fā)情況下的響應(yīng)時(shí)間變化。 PS:記得前幾天從一本書上看到這樣一句話:80%的性能瓶頸可以通過分析TPS和TRT的數(shù)值變化得到(雖然有點(diǎn)片面,但也不失為一種方法)。 比如按照上圖記錄的數(shù)值變化來看,很明顯領(lǐng)券接口性能極差,這時(shí)候就可以告知開發(fā),通過查看log、檢查代碼、SQL語句等方法來查詢?cè)颍ó?dāng)然個(gè)人能力足夠的話,這些可以自己來做)。 五、監(jiān)控調(diào)試 jmeter這個(gè)性能測(cè)試工具本身就用監(jiān)聽器這個(gè)元件提供了一定的監(jiān)聽數(shù)值報(bào)告元件,但畢竟開源工具,其本身的組件功能不夠強(qiáng)大,可以通過下載支持jmeter的增強(qiáng)型功能插件來進(jìn)行監(jiān)控。 jmeter插件下載地址:https:/// 下載后可以解壓縮,將plugins-manager.jar放入jmeter安裝目錄lib/exe,然后重啟jmeter即可。 可以通過點(diǎn)擊下圖圈出來的按鈕檢驗(yàn)是否成功安裝: 無論是對(duì)服務(wù)器資源使用率還是測(cè)試數(shù)據(jù)報(bào)表生成,甚至TPS、TRT等的監(jiān)聽,該插件都提供了組件支持,具體的使用方法請(qǐng)自行尋找。。。 所謂的監(jiān)控調(diào)試,就是一個(gè)不斷調(diào)整重復(fù)的過程,這個(gè)需要根據(jù)性能測(cè)試的目的,應(yīng)用領(lǐng)域去判斷具體如何執(zhí)行。。。 六、最終報(bào)告 根據(jù)上面的幾個(gè)步驟,得到測(cè)試結(jié)果,分析系統(tǒng)存在的瓶頸,然后采用各種方法提出解決方案或優(yōu)化建議,最后對(duì)本次性能測(cè)試進(jìn)行一個(gè)完整的總結(jié),這樣,一次性能測(cè)試就完成了。 在整個(gè)過程中,費(fèi)時(shí)較長一般是在測(cè)試數(shù)據(jù)準(zhǔn)備和測(cè)試執(zhí)行、監(jiān)控調(diào)優(yōu)階段。 文章來源:網(wǎng)絡(luò) 版權(quán)歸原作者所有 上文內(nèi)容不用于商業(yè)目的,如涉及知識(shí)產(chǎn)權(quán)問題,請(qǐng)權(quán)利人聯(lián)系小編,我們將立即處理 |
|