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