領(lǐng)導(dǎo)給你一個項目慷垮,如何開展性能測試工作

第一節(jié) 測試的一般步驟

性能測試的工作是基于系統(tǒng)功能已經(jīng)完備或者已經(jīng)趨于完備之上的揖闸,在功能還不夠完備的情況下沒有多大的意義(后期功能完善上會對系統(tǒng)的性能有影響,過早進入性能測試會出現(xiàn)測試結(jié)果不準(zhǔn)確料身、浪費測試資源)汤纸;因此,性能測試首先是基于功能測試的惯驼,你必須了解其功能實現(xiàn)才能開展性能測試蹲嚣。

我們還是來逐步分解說明:

一個被測系統(tǒng)來了递瑰,我們需要分三塊來分析

入口:需要怎么發(fā)送請求,施壓方應(yīng)該施加多大的壓力隙畜,用什么方法施壓抖部;

被測系統(tǒng):系統(tǒng)怎么應(yīng)對單個請求,系統(tǒng)業(yè)務(wù)流程是怎么樣的议惰,系統(tǒng)網(wǎng)元節(jié)點慎颗、數(shù)據(jù)流向等,整體性能需求有沒有言询,需要考察哪些指標(biāo)俯萎,怎么監(jiān)控;

出口:接收數(shù)據(jù)有哪些运杭,怎么獲取和比對夫啊;

OK,是不是感覺就像功能測試差不了多少?是的辆憔,就是先分析單個用戶的功能流程以及系統(tǒng)的數(shù)據(jù)流向(包括后臺的數(shù)據(jù)流向)結(jié)構(gòu)圖撇眯,然后再考慮大量的用戶操作。

那么一般系統(tǒng)的性能測試步驟大體如下:

1) 確認(rèn)測試目標(biāo)

2) 分析被測系統(tǒng)業(yè)務(wù)需求

3) 分析被測系統(tǒng)的系統(tǒng)結(jié)構(gòu)

4) 分析被測系統(tǒng)的性能測試點

5) 設(shè)計測試方案虱咧、檢測方案和測試案例

6) 選擇測試工具

7) 測試開發(fā)

8) 測試執(zhí)行

9) 測試結(jié)果分析

10) 測試調(diào)優(yōu)熊榛、測試驗證、測試分析

11) 測試報告

第二節(jié) 測試準(zhǔn)備

測試準(zhǔn)備工作越充分后期的測試執(zhí)行越順利腕巡,一般測試準(zhǔn)備工作如下:

1) 確認(rèn)測試目標(biāo)

2) 分析被測系統(tǒng)的業(yè)務(wù)

3) 分析被測系統(tǒng)的結(jié)構(gòu)

4) 分析被測系統(tǒng)可能產(chǎn)生性能瓶頸的節(jié)點

5) 設(shè)計測試方案玄坦、檢測方案和測試方案

我們分步來研究一下:

確認(rèn)測試目標(biāo)

拿到一個任何任務(wù)首先都要確認(rèn)任務(wù)的目標(biāo)是什么。如果不知道目標(biāo)绘沉,你所做的任何努力得到的結(jié)果有可能都不是最終所需要的結(jié)果煎楣。

性能測試也一樣,它首先是有一個目標(biāo)的车伞。無論是你是隨機測試想看看系統(tǒng)的當(dāng)前性能情況转质,還是奔著對系統(tǒng)進行優(yōu)化而去的,還是檢驗一下系統(tǒng)的性能是否滿足需求帖世,等等休蟹,這些都是你再做事情之前的一個目標(biāo)。你后面所做的一切事情日矫,從分析到方案和案例設(shè)計赂弓,到測試執(zhí)行監(jiān)控,再到最后的測試分析和報告哪轿,都是要圍繞這個目標(biāo)展開的盈魁。

所以,首要的任務(wù)就是確認(rèn)測試的目標(biāo)要求窃诉,需要達(dá)到怎樣的一個測試目的和目標(biāo)杨耙。

有一些赤套,測試任務(wù)沒有明確的目標(biāo)或者要求,并不說明它沒有目的和目標(biāo)珊膜,這就需要我們進行溝通和分析了容握。

溝通就是要和項目組達(dá)成一致的目的要求;分析车柠,分析需求剔氏,分析系統(tǒng),最后也是要明確項目或者系統(tǒng)測試任務(wù)的目的要求竹祷。

分析被測系統(tǒng)的業(yè)務(wù)

曾經(jīng)在一次面試中谈跛,有一位面試官給了我這樣一個題目:“有一個網(wǎng)站,只知道它的總訪問量一天是300萬塑陵,怎么測試它的性能感憾?”,大家想一想要怎么設(shè)計方案令花?

------猜想面試官是想面試者回答吹菱,正態(tài)分布、二八原理等基本的測試原則應(yīng)用彭则。

我當(dāng)時沒有回答任何與正態(tài)分布、二八原理相關(guān)的東西占遥;記得當(dāng)時面試官對我的回答好像是“蔑視”的笑了笑俯抖;可能是覺著“連基本的正態(tài)分布、二八原理都不知道瓦胎,還搞性能測試芬萍?”。其實搔啊,性能測試并不是想象的那樣簡單柬祠,并不是一個簡單的原理的應(yīng)用就行的,如果這么容易负芋,那豈不是誰都能搞漫蛔。

性能測試的基礎(chǔ)是基于系統(tǒng)的業(yè)務(wù)功能基本趨于穩(wěn)定,首要的任務(wù)就是性能在系統(tǒng)滿足業(yè)務(wù)功能需求上展開旧蛾,因此我們必須要分析系統(tǒng)的業(yè)務(wù)莽龟。不管是普通的網(wǎng)站也好還是比較專業(yè)的系統(tǒng)也好,它都是有業(yè)務(wù)功能需求的锨天,所有的性能測試都要基于這些功能才能進行毯盈,脫離了業(yè)務(wù)功能的性能測試沒有意義。性能測試所以首要的任務(wù)就是分析系統(tǒng)的業(yè)務(wù)功能病袄,分析系統(tǒng)業(yè)務(wù)上的性能限制搂赋,也就是業(yè)務(wù)需求赘阀。

那么怎么分析系統(tǒng)的業(yè)務(wù)需求呢?

(1) 如果有用戶需求規(guī)格說明脑奠,首要的任務(wù)就是閱讀和理解分析用戶需求規(guī)格說明基公;

(2) 如果沒有用戶需求規(guī)格說明,那么就需要分析系統(tǒng)功能捺信,提煉出系統(tǒng)的業(yè)務(wù)需求酌媒。如果可能,項目組比較熟悉的人講述一遍是最好的了迄靠。

(3) 最后無論哪一種秒咨,最好的方法就是按照自己的理解畫出系統(tǒng)的業(yè)務(wù)流程或者系統(tǒng)的功能結(jié)構(gòu)圖,拿到項目組進行確認(rèn)掌挚。一定要進行確認(rèn)雨席,和整個項目組達(dá)成一致的認(rèn)同。

有人會說吠式,我們自由測試沒有項目組可確認(rèn)的時候怎么辦陡厘?

還是一樣,需要從分析入手特占。如果不分析糙置,你就不會知道系統(tǒng)的功能數(shù)據(jù)流向,請求的數(shù)據(jù)構(gòu)成是目,系統(tǒng)的網(wǎng)元結(jié)構(gòu)谤饭,以及系統(tǒng)可能出現(xiàn)的瓶頸在哪一個節(jié)點,你又怎么進行優(yōu)化呢懊纳?

當(dāng)然面對一種全新的知識領(lǐng)域的時候揉抵,可能需要我們多積累經(jīng)驗,更多的進行分析嗤疯;我們可能需要結(jié)合實踐冤今,多次實際運行系統(tǒng)或者執(zhí)行測試,在測試中不斷的進行優(yōu)化和完善我們的分析過程茂缚、分析結(jié)果戏罢、測試方案、測試開發(fā)甚至是測試執(zhí)行等等脚囊。

分析被測系統(tǒng)的業(yè)務(wù)帖汞,有時候不是一蹴而就,需要我們進行多次反復(fù)的分析凑术、確認(rèn)和再分析翩蘸、再確認(rèn),直到把系統(tǒng)弄明白淮逊,甚至有可能在測試執(zhí)行的最后階段你還需要再次進行分析和確認(rèn)催首,然后重新規(guī)劃測試扶踊。

分析被測系統(tǒng)的結(jié)構(gòu)

系統(tǒng)的結(jié)構(gòu)和系統(tǒng)的業(yè)務(wù)一樣重要,不知道系統(tǒng)的網(wǎng)元結(jié)構(gòu)可能就沒有辦法進行監(jiān)控郎任,就沒有辦法知道瓶頸在哪個節(jié)點秧耗,就不能進行優(yōu)化。

分析系統(tǒng)的結(jié)構(gòu)舶治,最好的方法就是項目組提供系統(tǒng)的部署和構(gòu)成圖分井;如果項目組不能提供或者沒有項目組,那就需要用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

(1)tcp: ip icmp arp rarp 和 tcp、udp惜浅、icmp這些選項等都要放到第一個參數(shù)的位置瘫辩,用來過濾數(shù)據(jù)報的類型

(2)-i eth1 : 只抓經(jīng)過接口eth1的包

(3)-t : 不顯示時間戳

(4)-s 0 : 抓取數(shù)據(jù)包時默認(rèn)抓取長度為68字節(jié)。加上-S 0 后可以抓到完整的數(shù)據(jù)包

(5)-c 100 : 只抓取100個數(shù)據(jù)包

(6)dst port ! 22 : 不抓取目標(biāo)端口是22的數(shù)據(jù)包

(7)src net 192.168.1.0/24 : 數(shù)據(jù)包的源網(wǎng)絡(luò)地址為192.168.1.0/24

(8)-w ./target.cap : 保存成cap文件坛悉,方便用ethereal(即wireshark)分析

從第一個節(jié)點分析流向到哪伐厌,確定第二層的節(jié)點;

然后從第二層每個節(jié)點分析第三層節(jié)點裸影,逐層分析挣轨,完善系統(tǒng)的數(shù)據(jù)流向的所有機構(gòu)層次和節(jié)點;

然后再弄明白每個節(jié)點部署的應(yīng)用程序或者進程隊列轩猩;

對每一個節(jié)點的應(yīng)用程序或者進程隊列進行測試監(jiān)控卷扮;

最后才能得出哪些應(yīng)用或者進程隊列需要進行優(yōu)化。

弄明白系統(tǒng)的節(jié)點構(gòu)成之外界轩,還需要弄明白各個節(jié)點之間的通訊協(xié)議和數(shù)據(jù)格式,后面的測試工具選擇和測試數(shù)據(jù)準(zhǔn)備以及測試腳本開發(fā)就需要你明白這些衔瓮。

這一切的基礎(chǔ)就是要分析和弄明白系統(tǒng)的所有節(jié)點浊猾,也就是要分析清楚系統(tǒng)的結(jié)構(gòu)。

分析系統(tǒng)可能的性能瓶頸

分析系統(tǒng)的業(yè)務(wù)需求和系統(tǒng)的結(jié)構(gòu)組成热鞍,同時預(yù)判系統(tǒng)可能存在的性能瓶頸葫慎,這是分析中的一個目標(biāo);得到預(yù)判的性能瓶頸后我們后面需要在監(jiān)控的時候多注意一下這些節(jié)點薇宠。

當(dāng)然有一些常見的可能會是系統(tǒng)瓶頸的節(jié)點我們需要注意:

(1) 登錄偷办,一般系統(tǒng)登錄要進行多種校驗,可能數(shù)據(jù)交互比較頻繁;

(2) 下單,搶單刺彩、搶紅包這個時候會有一定量的并發(fā)需求油坝;

(3) 大數(shù)據(jù)的查詢掸宛、統(tǒng)計和報表分析贴见,會對系統(tǒng)產(chǎn)生壓力佑力;

(4) 視頻筋量、動畫等會對網(wǎng)絡(luò)產(chǎn)生壓力湖苞;

(5) 消息比較集中的系統(tǒng)功能節(jié)點拯欧,會對系統(tǒng)產(chǎn)生壓力;

(6) 一些特殊的業(yè)務(wù)需求會對系統(tǒng)產(chǎn)生壓力财骨;

常見的瓶頸:

(1) 數(shù)據(jù)庫的瓶頸一般在磁盤IOPS過高造成進程阻塞

(2) 系統(tǒng)進程數(shù)過多一般會消耗系統(tǒng)的內(nèi)存空間

(3) 消息隊列和緩存服務(wù)镐作,開啟持久化后會需要考察磁盤IOPS,不開啟持久化則需要考察內(nèi)存占用

(4) 頻繁的管道開辟和銷毀會導(dǎo)致CPU占用較高

(5) 有部分程序結(jié)構(gòu)上不能利用多個CPU

等等B÷帷8眉帧!

在分析業(yè)務(wù)和系統(tǒng)結(jié)構(gòu)的過程中摘仅,我們就需要考慮這個業(yè)務(wù)點或者結(jié)構(gòu)點會不會有大量的數(shù)據(jù)訪問靶庙,會不會產(chǎn)生壓力,我們的設(shè)計會不會產(chǎn)生性能瓶頸娃属。

方案和案例設(shè)計

測試方案的以及最后測試方案文檔的形成六荒,實際就是上面所有分析工作的總結(jié)。

你寫測試方案的過程就是明確測試目的目標(biāo)矾端、分析業(yè)務(wù)需求掏击、系統(tǒng)結(jié)構(gòu)以及評估測試方法、測試安排秩铆、測試風(fēng)險等等的過程總結(jié)砚亭。而這些全部來源于你在測試執(zhí)行之前的分析,有時候可能你在測試過程中還需要做出一些分析和調(diào)整殴玛。

測試方案包含了這些你分析和整理的各個方面捅膘。

一個好的測試方案包含的內(nèi)容:測試目的目標(biāo)、內(nèi)容(可能包含業(yè)務(wù)性能滚粟、可靠性寻仗、穩(wěn)定性等等),業(yè)務(wù)需求目標(biāo)凡壤,系統(tǒng)業(yè)務(wù)構(gòu)成署尤,系統(tǒng)節(jié)點構(gòu)成,測試方法流程亚侠,需要監(jiān)控的指標(biāo)要求和節(jié)點等等曹体。

測試案例,實際上一般需要包含在測試方案中硝烂;測試案例箕别,實際上就是普通的業(yè)務(wù)操作流程,用測試工具或者其他測試手段來模擬大的數(shù)據(jù)量業(yè)務(wù)操作,并對系統(tǒng)的各個節(jié)點進行監(jiān)控究孕,獲取監(jiān)控數(shù)據(jù)啥酱。預(yù)期的監(jiān)控數(shù)據(jù)和實際監(jiān)控數(shù)據(jù)的對比,滿足要求就是預(yù)期要求厨诸,實際對比結(jié)果就是測試結(jié)果镶殷。

作  者:?自動化軟件測試?

出  處:微信公眾號:自動化軟件測試平臺

版權(quán)說明:歡迎轉(zhuǎn)載,但必須注明出處微酬,并在文章頁面明顯位置給出文章鏈接

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末绘趋,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子颗管,更是在濱河造成了極大的恐慌陷遮,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件垦江,死亡現(xiàn)場離奇詭異帽馋,居然都是意外死亡,警方通過查閱死者的電腦和手機比吭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門绽族,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人衩藤,你說我怎么就攤上這事吧慢。” “怎么了赏表?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵检诗,是天一觀的道長。 經(jīng)常有香客問我瓢剿,道長逢慌,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任间狂,我火速辦了婚禮攻泼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘前标。我一直安慰自己坠韩,他們只是感情好距潘,可當(dāng)我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布炼列。 她就那樣靜靜地躺著,像睡著了一般音比。 火紅的嫁衣襯著肌膚如雪俭尖。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天,我揣著相機與錄音稽犁,去河邊找鬼焰望。 笑死,一個胖子當(dāng)著我的面吹牛已亥,可吹牛的內(nèi)容都是我干的熊赖。 我是一名探鬼主播,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼虑椎,長吁一口氣:“原來是場噩夢啊……” “哼震鹉!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起捆姜,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤传趾,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后泥技,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體浆兰,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年珊豹,在試婚紗的時候發(fā)現(xiàn)自己被綠了簸呈。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡平夜,死狀恐怖蝶棋,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情忽妒,我是刑警寧澤玩裙,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站段直,受9級特大地震影響吃溅,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸯檬,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一决侈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧喧务,春花似錦赖歌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至坎穿,卻和暖如春展父,著一層夾襖步出監(jiān)牢的瞬間返劲,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工栖茉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留篮绿,地道東北人。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓吕漂,卻偏偏與公主長得像亲配,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子惶凝,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內(nèi)容