第一節(jié) 測(cè)試的一般步驟
性能測(cè)試的工作是基于系統(tǒng)功能已經(jīng)完備或者已經(jīng)趨于完備之上的,在功能還不夠完備的情況下沒有多大的意義(后期功能完善上會(huì)對(duì)系統(tǒng)的性能有影響,過早進(jìn)入性能測(cè)試會(huì)出現(xiàn)測(cè)試結(jié)果不準(zhǔn)確、浪費(fèi)測(cè)試資源);因此,性能測(cè)試首先是基于功能測(cè)試的,你必須了解其功能實(shí)現(xiàn)才能開展性能測(cè)試。
我們還是來逐步分解說明:
一個(gè)被測(cè)系統(tǒng)來了,我們需要分三塊來分析
-
入口:需要怎么發(fā)送請(qǐng)求,施壓方應(yīng)該施加多大的壓力,用什么方法施壓;
-
被測(cè)系統(tǒng):系統(tǒng)怎么應(yīng)對(duì)單個(gè)請(qǐng)求,系統(tǒng)業(yè)務(wù)流程是怎么樣的,系統(tǒng)網(wǎng)元節(jié)點(diǎn)、數(shù)據(jù)流向等,整體性能需求有沒有,需要考察哪些指標(biāo),怎么監(jiān)控;
-
出口:接收數(shù)據(jù)有哪些,怎么獲取和比對(duì);
OK,是不是感覺就像功能測(cè)試差不了多少?是的,就是先分析單個(gè)用戶的功能流程以及系統(tǒng)的數(shù)據(jù)流向(包括后臺(tái)的數(shù)據(jù)流向)結(jié)構(gòu)圖,然后再考慮大量的用戶操作。
那么一般系統(tǒng)的性能測(cè)試步驟大體如下:
1) 確認(rèn)測(cè)試目標(biāo)
2) 分析被測(cè)系統(tǒng)業(yè)務(wù)需求
3) 分析被測(cè)系統(tǒng)的系統(tǒng)結(jié)構(gòu)
4) 分析被測(cè)系統(tǒng)的性能測(cè)試點(diǎn)
5) 設(shè)計(jì)測(cè)試方案、檢測(cè)方案和測(cè)試案例
6) 選擇測(cè)試工具
7) 測(cè)試腳本開發(fā)
8) 測(cè)試執(zhí)行
9) 測(cè)試結(jié)果分析
10) 測(cè)試調(diào)優(yōu)、測(cè)試驗(yàn)證、測(cè)試分析
11) 測(cè)試報(bào)告
第二節(jié) 測(cè)試準(zhǔn)備
測(cè)試準(zhǔn)備工作越充分后期的測(cè)試執(zhí)行越順利,一般測(cè)試準(zhǔn)備工作如下:
1) 確認(rèn)測(cè)試目標(biāo)
2) 分析被測(cè)系統(tǒng)的業(yè)務(wù)
3) 分析被測(cè)系統(tǒng)的結(jié)構(gòu)
4) 分析被測(cè)系統(tǒng)可能產(chǎn)生性能瓶頸的節(jié)點(diǎn)
5) 設(shè)計(jì)測(cè)試方案、檢測(cè)方案和測(cè)試方案
我們分步來研究一下:
1、確認(rèn)測(cè)試目標(biāo)
拿到一個(gè)任何任務(wù)首先都要確認(rèn)任務(wù)的目標(biāo)是什么。如果不知道目標(biāo),你所做的任何努力得到的結(jié)果有可能都不是最終所需要的結(jié)果。
性能測(cè)試也一樣,它首先是有一個(gè)目標(biāo)的。無論是你是隨機(jī)測(cè)試想看看系統(tǒng)的當(dāng)前性能情況,還是奔著對(duì)系統(tǒng)進(jìn)行優(yōu)化而去的,還是檢驗(yàn)一下系統(tǒng)的性能是否滿足需求,等等,這些都是你再做事情之前的一個(gè)目標(biāo)。
你后面所做的一切事情,從分析到方案和案例設(shè)計(jì),到測(cè)試執(zhí)行監(jiān)控,再到最后的測(cè)試分析和報(bào)告,都是要圍繞這個(gè)目標(biāo)展開的。
所以,首要的任務(wù)就是確認(rèn)測(cè)試的目標(biāo)要求,需要達(dá)到怎樣的一個(gè)測(cè)試目的和目標(biāo)。
有一些測(cè)試任務(wù)沒有明確的目標(biāo)或者要求,并不說明它沒有目的和目標(biāo),這就需要我們進(jìn)行溝通和分析了。
溝通就是要和項(xiàng)目組達(dá)成一致的目的要求;分析,分析需求,分析系統(tǒng),最后也是要明確項(xiàng)目或者系統(tǒng)測(cè)試任務(wù)的目的要求。
2、分析被測(cè)系統(tǒng)的業(yè)務(wù)
曾經(jīng)在一次面試中,有一位面試官給了我這樣一個(gè)題目:“有一個(gè)網(wǎng)站,只知道它的總訪問量一天是300萬,怎么測(cè)試它的性能?”,大家想一想要怎么設(shè)計(jì)方案?
------猜想面試官是想面試者回答,正態(tài)分布、二八原理等基本的測(cè)試原則應(yīng)用。
我當(dāng)時(shí)沒有回答任何與正態(tài)分布、二八原理相關(guān)的東西;記得當(dāng)時(shí)面試官對(duì)我的回答好像是“蔑視”的笑了笑;可能是覺著“連基本的正態(tài)分布、二八原理都不知道,還搞性能測(cè)試?”。
其實(shí),性能測(cè)試并不是想象的那樣簡(jiǎn)單,并不是一個(gè)簡(jiǎn)單的原理的應(yīng)用就行的,如果這么容易,那豈不是誰都能搞。
性能測(cè)試的基礎(chǔ)是基于系統(tǒng)的業(yè)務(wù)功能基本趨于穩(wěn)定,首要的任務(wù)就是性能在系統(tǒng)滿足業(yè)務(wù)功能需求上展開,因此我們必須要分析系統(tǒng)的業(yè)務(wù)。
不管是普通的網(wǎng)站也好還是比較專業(yè)的系統(tǒng)也好,它都是有業(yè)務(wù)功能需求的,所有的性能測(cè)試都要基于這些功能才能進(jìn)行,脫離了業(yè)務(wù)功能的性能測(cè)試沒有意義。
性能測(cè)試所以首要的任務(wù)就是分析系統(tǒng)的業(yè)務(wù)功能,分析系統(tǒng)業(yè)務(wù)上的性能限制,也就是業(yè)務(wù)需求。
那么怎么分析系統(tǒng)的業(yè)務(wù)需求呢?
- 如果有用戶需求規(guī)格說明,首要的任務(wù)就是閱讀和理解分析用戶需求規(guī)格說明;
- 如果沒有用戶需求規(guī)格說明,那么就需要分析系統(tǒng)功能,提煉出系統(tǒng)的業(yè)務(wù)需求。如果可能,項(xiàng)目組比較熟悉的人講述一遍是最好的了。
- 最后無論哪一種,最好的方法就是按照自己的理解畫出系統(tǒng)的業(yè)務(wù)流程或者系統(tǒng)的功能結(jié)構(gòu)圖,拿到項(xiàng)目組進(jìn)行確認(rèn)。一定要進(jìn)行確認(rèn),和整個(gè)項(xiàng)目組達(dá)成一致的認(rèn)同。
有人會(huì)說,我們自由測(cè)試沒有項(xiàng)目組可確認(rèn)的時(shí)候怎么辦?
還是一樣,需要從分析入手。如果不分析,你就不會(huì)知道系統(tǒng)的功能數(shù)據(jù)流向,請(qǐng)求的數(shù)據(jù)構(gòu)成,系統(tǒng)的網(wǎng)元結(jié)構(gòu),以及系統(tǒng)可能出現(xiàn)的瓶頸在哪一個(gè)節(jié)點(diǎn),你又怎么進(jìn)行優(yōu)化呢?
當(dāng)然面對(duì)一種全新的知識(shí)領(lǐng)域的時(shí)候,可能需要我們多積累經(jīng)驗(yàn),更多的進(jìn)行分析;我們可能需要結(jié)合實(shí)踐,多次實(shí)際運(yùn)行系統(tǒng)或者執(zhí)行測(cè)試,在測(cè)試中不斷的進(jìn)行優(yōu)化和完善我們的分析過程、分析結(jié)果、測(cè)試方案、測(cè)試開發(fā)甚至是測(cè)試執(zhí)行等等。
分析被測(cè)系統(tǒng)的業(yè)務(wù),有時(shí)候不是一蹴而就,需要我們進(jìn)行多次反復(fù)的分析、確認(rèn)和再分析、再確認(rèn),直到把系統(tǒng)弄明白,甚至有可能在測(cè)試執(zhí)行的最后階段你還需要再次進(jìn)行分析和確認(rèn),然后重新規(guī)劃測(cè)試。
3、分析被測(cè)系統(tǒng)的結(jié)構(gòu)
系統(tǒng)的結(jié)構(gòu)和系統(tǒng)的業(yè)務(wù)一樣重要,不知道系統(tǒng)的網(wǎng)元結(jié)構(gòu)可能就沒有辦法進(jìn)行監(jiān)控,就沒有辦法知道瓶頸在哪個(gè)節(jié)點(diǎn),就不能進(jìn)行優(yōu)化。
分析系統(tǒng)的結(jié)構(gòu),最好的方法就是項(xiàng)目組提供系統(tǒng)的部署和構(gòu)成圖;如果項(xiàng)目組不能提供或者沒有項(xiàng)目組,那就需要用TCPDUMP等抓包工具,分析數(shù)據(jù)流向。
TCPDUMP的使用:
tcpdump tcp -i eth1 -t -s 0 -c 100 and dst port ! 22 and src net 192.168.1.0/24 -w ./target.cap
- tcp: ip icmp arp rarp 和 tcp、udp、icmp這些選項(xiàng)等都要放到第一個(gè)參數(shù)的位置,用來過濾數(shù)據(jù)報(bào)的類型
- -i eth1 : 只抓經(jīng)過接口eth1的包
- -t : 不顯示時(shí)間戳
- -s 0 : 抓取數(shù)據(jù)包時(shí)默認(rèn)抓取長(zhǎng)度為68字節(jié)。加上-S 0 后可以抓到完整的數(shù)據(jù)包
- -c 100 : 只抓取100個(gè)數(shù)據(jù)包
- dst port ! 22 : 不抓取目標(biāo)端口是22的數(shù)據(jù)包
- src net 192.168.1.0/24 : 數(shù)據(jù)包的源網(wǎng)絡(luò)地址為192.168.1.0/24
- -w ./target.cap : 保存成cap文件,方便用ethereal(即wireshark)分析
從第一個(gè)節(jié)點(diǎn)分析流向到哪,確定第二層的節(jié)點(diǎn);
然后從第二層每個(gè)節(jié)點(diǎn)分析第三層節(jié)點(diǎn),逐層分析,完善系統(tǒng)的數(shù)據(jù)流向的所有機(jī)構(gòu)層次和節(jié)點(diǎn);
然后再弄明白每個(gè)節(jié)點(diǎn)部署的應(yīng)用程序或者進(jìn)程隊(duì)列;
對(duì)每一個(gè)節(jié)點(diǎn)的應(yīng)用程序或者進(jìn)程隊(duì)列進(jìn)行測(cè)試監(jiān)控;
最后才能得出哪些應(yīng)用或者進(jìn)程隊(duì)列需要進(jìn)行優(yōu)化。
弄明白系統(tǒng)的節(jié)點(diǎn)構(gòu)成之外,還需要弄明白各個(gè)節(jié)點(diǎn)之間的通訊協(xié)議和數(shù)據(jù)格式,后面的測(cè)試工具選擇和測(cè)試數(shù)據(jù)準(zhǔn)備以及測(cè)試腳本開發(fā)就需要你明白這些。
這一切的基礎(chǔ)就是要分析和弄明白系統(tǒng)的所有節(jié)點(diǎn),也就是要分析清楚系統(tǒng)的結(jié)構(gòu)。
4、分析系統(tǒng)可能的性能瓶頸
分析系統(tǒng)的業(yè)務(wù)需求和系統(tǒng)的結(jié)構(gòu)組成,同時(shí)預(yù)判系統(tǒng)可能存在的性能瓶頸,這是分析中的一個(gè)目標(biāo);得到預(yù)判的性能瓶頸后我們后面需要在監(jiān)控的時(shí)候多注意一下這些節(jié)點(diǎn)。
當(dāng)然有一些常見的可能會(huì)是系統(tǒng)瓶頸的節(jié)點(diǎn)我們需要注意:
- 登錄,一般系統(tǒng)登錄要進(jìn)行多種校驗(yàn),可能數(shù)據(jù)交互比較頻繁;
- 下單,搶單、搶紅包這個(gè)時(shí)候會(huì)有一定量的并發(fā)需求;
- 大數(shù)據(jù)的查詢、統(tǒng)計(jì)和報(bào)表分析,會(huì)對(duì)系統(tǒng)產(chǎn)生壓力;
- 視頻、動(dòng)畫等會(huì)對(duì)網(wǎng)絡(luò)產(chǎn)生壓力;
- 消息比較集中的系統(tǒng)功能節(jié)點(diǎn),會(huì)對(duì)系統(tǒng)產(chǎn)生壓力;
- 一些特殊的業(yè)務(wù)需求會(huì)對(duì)系統(tǒng)產(chǎn)生壓力;
常見的瓶頸:
- 數(shù)據(jù)庫的瓶頸一般在磁盤IOPS過高造成進(jìn)程阻塞
- 系統(tǒng)進(jìn)程數(shù)過多一般會(huì)消耗系統(tǒng)的內(nèi)存空間
- 消息隊(duì)列和緩存服務(wù),開啟持久化后會(huì)需要考察磁盤IOPS,不開啟持久化則需要考察內(nèi)存占用
- 頻繁的管道開辟和銷毀會(huì)導(dǎo)致CPU占用較高
- 有部分程序結(jié)構(gòu)上不能利用多個(gè)CPU
在分析業(yè)務(wù)和系統(tǒng)結(jié)構(gòu)的過程中,我們就需要考慮這個(gè)業(yè)務(wù)點(diǎn)或者結(jié)構(gòu)點(diǎn)會(huì)不會(huì)有大量的數(shù)據(jù)訪問,會(huì)不會(huì)產(chǎn)生壓力,我們的設(shè)計(jì)會(huì)不會(huì)產(chǎn)生性能瓶頸。
5、方案和案例設(shè)計(jì)
測(cè)試方案的以及最后測(cè)試方案文檔的形成,實(shí)際就是上面所有分析工作的總結(jié)。
你寫測(cè)試方案的過程就是明確測(cè)試目的目標(biāo)、分析業(yè)務(wù)需求、系統(tǒng)結(jié)構(gòu)以及評(píng)估測(cè)試方法、測(cè)試安排、測(cè)試風(fēng)險(xiǎn)等等的過程總結(jié)。而這些全部來源于你在測(cè)試執(zhí)行之前的分析,有時(shí)候可能你在測(cè)試過程中還需要做出一些分析和調(diào)整。
測(cè)試方案包含了這些你分析和整理的各個(gè)方面。
一個(gè)好的測(cè)試方案包含的內(nèi)容:
測(cè)試目的目標(biāo)、內(nèi)容(可能包含業(yè)務(wù)性能、可靠性、穩(wěn)定性等等),業(yè)務(wù)需求目標(biāo),系統(tǒng)業(yè)務(wù)構(gòu)成,系統(tǒng)節(jié)點(diǎn)構(gòu)成,測(cè)試方法流程,需要監(jiān)控的指標(biāo)要求和節(jié)點(diǎn)等等。
測(cè)試案例,實(shí)際上一般需要包含在測(cè)試方案中;測(cè)試案例,實(shí)際上就是普通的業(yè)務(wù)操作流程,用測(cè)試工具或者其他測(cè)試手段來模擬大的數(shù)據(jù)量業(yè)務(wù)操作,并對(duì)系統(tǒng)的各個(gè)節(jié)點(diǎn)進(jìn)行監(jiān)控,獲取監(jiān)控?cái)?shù)據(jù)。文章來源:http://www.zghlxwxcb.cn/news/detail-746909.html
預(yù)期的監(jiān)控?cái)?shù)據(jù)和實(shí)際監(jiān)控?cái)?shù)據(jù)的對(duì)比,滿足要求就是預(yù)期要求,實(shí)際對(duì)比結(jié)果就是測(cè)試結(jié)果。文章來源地址http://www.zghlxwxcb.cn/news/detail-746909.html
最后如果你想學(xué)習(xí)軟件測(cè)試和需要軟件測(cè)試資料,歡迎加入筆者的交流群:320231853,里面可以免費(fèi)領(lǐng)取軟件測(cè)試+自動(dòng)化測(cè)試資料+軟件測(cè)試面試寶典+簡(jiǎn)歷模版+實(shí)戰(zhàn)項(xiàng)目+面試刷題工具和大佬答疑解惑,我們一起交流一起學(xué)習(xí)!
到了這里,關(guān)于8年測(cè)試工程師分享,我是怎么開展性能測(cè)試的(基礎(chǔ)篇)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!