小白 對性能測試的初步了解

聽了破冰的分享后种吸,對性能測試有了初步的了解,今天補(bǔ)了下空白區(qū)域

性能測試概述

一提到性能測試呀非,就會涉及到另外兩個(gè)密切相關(guān)的概念——壓力測試骨稿、負(fù)載測試。這三者有密切的關(guān)系姜钳,又有區(qū)別坦冠。三者的測試目的是不一樣的,但使用的手段和方法在一定程度哥桥,通常會使用相同的測試環(huán)境和測試工具辙浑,而且都會監(jiān)控系統(tǒng)所占用資源的情況以及其他相應(yīng)的性能指標(biāo),這也造成了很多人容易產(chǎn)生概念混淆的主要原因拟糕。

性能測試是為了獲得系統(tǒng)在某種特定條件下(包括特定的負(fù)載條件下)的性能指標(biāo)數(shù)據(jù)判呕,致力于提供系統(tǒng)性能指標(biāo)方面的數(shù)據(jù)。對加載有非常嚴(yán)格送滞、明確的要求侠草,而且事先所定義的性能指標(biāo)也很明確。
如果系統(tǒng)性能測試的實(shí)際結(jié)果不符合指標(biāo)要求犁嗅,那么就需要進(jìn)一步分析边涕、優(yōu)化,最終使系統(tǒng)的性能指標(biāo)達(dá)到要求褂微。

負(fù)載測試功蜓、壓力測試是為了發(fā)現(xiàn)軟件系統(tǒng)中所存在的問題,包括性能瓶頸宠蚂、內(nèi)存泄漏等式撼。

定義

(1)負(fù)載測試 是通過模擬實(shí)際軟件系統(tǒng)所承受的負(fù)載條件、改變系統(tǒng)負(fù)載大小和負(fù)載方式來發(fā)現(xiàn)系統(tǒng)中所存在的問題求厕。
例如:逐漸增加模擬用戶的數(shù)量來觀察系統(tǒng)的響應(yīng)時(shí)間和數(shù)據(jù)吞吐量著隆、系統(tǒng)占用的資源(CPU扰楼、內(nèi)存等),以檢驗(yàn)系統(tǒng)的行為和特性美浦,發(fā)現(xiàn)系統(tǒng)可能存在的性能瓶頸弦赖、內(nèi)存泄漏、不能實(shí)時(shí)同步等問題抵代。
負(fù)載測試 更多地體現(xiàn)了一種方法或一種技術(shù),可以為性能測試忘嫉、壓力測試所采用荤牍。

(2)壓力測試(強(qiáng)度測試) 是在強(qiáng)負(fù)載情況下(如大數(shù)據(jù)量、大量并發(fā)用戶連接)對穩(wěn)定性進(jìn)行測試庆冕,查看應(yīng)用系統(tǒng)在峰值(瞬間使用高峰)使用情況下的行為表現(xiàn)康吵,更有效的發(fā)現(xiàn)系統(tǒng)穩(wěn)定性的隱患和系統(tǒng)在負(fù)載峰值的條件下的功能隱患,確認(rèn)系統(tǒng)是否具有良好的容錯(cuò)能力和可恢復(fù)能力访递。
可分為 高負(fù)載下的長時(shí)間(如24小時(shí)以上)的穩(wěn)定性壓力測試 和極限負(fù)載情況導(dǎo)致系統(tǒng)崩潰的破壞性壓力測試
如12306網(wǎng)站晦嵌,8月30日可購買國慶10月1日的票,購買時(shí)間一到可能有上億用戶與系統(tǒng)在同一時(shí)間產(chǎn)生交互
CPU內(nèi)存100%使用拷姿,系統(tǒng)在處理新的會話時(shí)會不會出現(xiàn)新的錯(cuò)誤

針對上述負(fù)載測試惭载、壓力測試舉個(gè)例子:一個(gè)人背X斤
負(fù)載測試:200斤情況下,是否能堅(jiān)持5分鐘响巢。
壓力測試:200,300,400斤... 情況下描滔,他的表現(xiàn),什么時(shí)候失敗踪古,失敗之后什么表現(xiàn)含长,重新扛200是否正常。

容量測試:在堅(jiān)持5分鐘的情況下伏穆,他一次最多能扛多少斤

Web前端性能

取決于瀏覽器的實(shí)現(xiàn)機(jī)制拘泞,Web頁面上的JS文件的執(zhí)行等,它與服務(wù)端的負(fù)載和壓力無關(guān)枕扫。比如圖片陪腌、CSS、JS等資源的下載

Web服務(wù)端性能

在確保功能實(shí)現(xiàn)正確的前提下烟瞧,考察服務(wù)端應(yīng)用程序的各項(xiàng)性能指標(biāo)偷厦,以及服務(wù)器硬件資源的使用情況。

做性能測試基礎(chǔ)知識

  • HTML 語言基礎(chǔ):用來顯示數(shù)據(jù)
    參考教程:http://www.w3school.com.cn/html/index.asp
    (元素燕刻、屬性只泼、表單、鏈接卵洗、URL)
  • C 語言基礎(chǔ)知識
    了解分支循環(huán)请唱、變量弥咪、函數(shù)定義
  • HTTP 協(xié)議
    接口性能會涉及到;請求(post十绑、get聚至、delete、put)本橙;狀態(tài)碼含義(200扳躬、302、404甚亭、500等)
  • XML:用來傳輸和存儲數(shù)據(jù)
    參考教程:http://www.runoob.com/xml/xml-tutorial.html
    與html類似贷币,樹形結(jié)構(gòu)
  • JSON:輕量級的文本數(shù)據(jù)交換格式
    1)全拼:JavaScript Object Notation(JavaScript 對象表示法)
    2)存儲和交換文本信息的語法,類似 XML亏狰,比 XML 更小役纹、更快,更易解析
    3)現(xiàn)在很多http的post請求都在用 Json 格式傳輸數(shù)據(jù)暇唾,最常見的用法之一是從 web 服務(wù)器上讀取 JSON 數(shù)據(jù)(作為文件或作為 HttpRequest)促脉,將 JSON 數(shù)據(jù)轉(zhuǎn)換為 JavaScript 對象,然后在網(wǎng)頁中使用該數(shù)據(jù)策州。
    參考教程:http://www.runoob.com/json/json-tutorial.html
  • 數(shù)據(jù)庫
    主要是數(shù)據(jù)的增刪改查操作

多角度看待性能測試

  • 用戶角度
    軟件對用戶操作所產(chǎn)生的響應(yīng)時(shí)間瘸味,用戶不關(guān)注是什么原因引起的性能問題
  • 運(yùn)維角度
    系統(tǒng)是否能夠提供給用戶一個(gè)可靠可持續(xù)的服務(wù),必須關(guān)注系統(tǒng)資源使用的情況
  • 開發(fā)角度
    如何調(diào)整設(shè)計(jì)代碼的實(shí)現(xiàn)

比如銀行軟件够挂,并不要求多快的速度硫戈,只要求系統(tǒng)的穩(wěn)定運(yùn)行,要保證數(shù)據(jù)不出錯(cuò)

性能測試主要術(shù)語

1下硕、并發(fā)數(shù):同一時(shí)間點(diǎn)內(nèi)跟系統(tǒng)交互操作的數(shù)量

  • 狹義并發(fā)
    用戶在同一時(shí)刻做同一件事情或操作丁逝。
    例如:首頁并發(fā)、加入購物車等

  • 廣義并發(fā)
    用戶在同一時(shí)間點(diǎn)內(nèi)發(fā)出的請求或操作梭姓,這些請求或操作可以是相同的霜幼,也可以是不同的。
    例如:首頁誉尖、促銷頁罪既、商品列表、商品詳情等同時(shí)訪問

一般來說铡恕,廣義并發(fā)更接近用戶的實(shí)際使用情況琢感。

對性能測試而言,兩種并發(fā)都需要測試(先狹義后廣義)探熔。

狹義并發(fā)發(fā)生在使用較為頻繁的模塊中驹针,一旦有問題通常都是程序問題。

一般通過測試工具模擬虛擬用戶(Virtual User)來體現(xiàn)

比如:12306網(wǎng)站诀艰,100個(gè)人8點(diǎn)都登錄網(wǎng)頁搶票柬甥,那并發(fā)數(shù)就是100

在這里饮六,我們要解除兩種誤區(qū)
1)認(rèn)為系統(tǒng)所有的用戶都是并發(fā)用戶
注冊用戶數(shù)(系統(tǒng)所有用戶):當(dāng)前系統(tǒng)中全部注冊的用戶數(shù)量
如公司員工2000人,每個(gè)人都會用到OA系統(tǒng)苛蒲,但并不代表這2000人都同時(shí)在使用OA系統(tǒng)
2)認(rèn)為所有在線的用戶都是并發(fā)用戶
在線用戶數(shù):當(dāng)前時(shí)間段內(nèi)有多少用戶登錄了卤橄,并不一定與系統(tǒng)產(chǎn)生交互,有些用戶只是登錄了而已 或者查看網(wǎng)上上的一些信息

如何計(jì)算并發(fā)用戶數(shù)臂外?
很大程度上市根據(jù)經(jīng)驗(yàn)和行業(yè)的一些標(biāo)準(zhǔn)來計(jì)算的窟扑,像12306網(wǎng)站并發(fā)用戶數(shù)量就會比較多,而OA系統(tǒng)一般是在線用戶的5%-20%

2漏健、事務(wù)

比如登錄網(wǎng)站嚎货,輸入用戶名密碼,點(diǎn)擊登錄漾肮,這三個(gè)操作我們就可以稱為登錄事務(wù)

TPS:服務(wù)器每秒處理的事務(wù)數(shù)厂抖,衡量系統(tǒng)處理能力的重要指標(biāo)

3茎毁、吞吐量:被測系統(tǒng)產(chǎn)生的數(shù)據(jù)流量

直接體現(xiàn)服務(wù)器的承載能力克懊,衡量服務(wù)器處理能力的重要指標(biāo),在分析時(shí)一定要注意分析吞吐量

比如說點(diǎn)擊網(wǎng)頁(10M)七蜘,打開谭溉,100個(gè)人同時(shí)點(diǎn)擊網(wǎng)頁,100*10M就是吞吐量

4橡卤、吞吐率:單位時(shí)間內(nèi)服務(wù)器處理用戶提交的請求數(shù)

吞吐率=吞吐量/測試時(shí)間

5扮念、點(diǎn)擊率(每秒點(diǎn)擊率):客戶端每秒真正發(fā)給服務(wù)端后端請求的數(shù)量

比如每秒向接口發(fā)送多少次請求,這不能反映系統(tǒng)的性能碧库,只能反映出客戶端向服務(wù)端發(fā)送的請求數(shù)量

注意點(diǎn):用戶點(diǎn)擊一次柜与,并不代表客戶端只向服務(wù)器端發(fā)送一個(gè)HTTP請求,可能會發(fā)出多個(gè)請求嵌灰。

6弄匕、思考時(shí)間:用戶在進(jìn)行操作時(shí),每個(gè)請求之間的時(shí)間間隔

如:輸入用戶名和密碼后沽瞭,看下輸入的對不對迁匠,這個(gè)等待時(shí)間就是思考時(shí)間

7、資源利用率:服務(wù)器系統(tǒng)不同硬件資源被使用的程度

分析服務(wù)器出現(xiàn)瓶頸和對服務(wù)器進(jìn)行調(diào)優(yōu)的主要依據(jù)
主要包括CPU占有率驹溃、內(nèi)存使用率城丧、IO使用率和時(shí)間(需要后臺監(jiān)控)

8、響應(yīng)時(shí)間(Time to laster byte)

從客戶端發(fā)送一個(gè)請求開始豌鹤,到客戶端接收到從服務(wù)端返回的響應(yīng)結(jié)果結(jié)束時(shí)所經(jīng)歷的時(shí)間亡哄,它是影響用戶體驗(yàn)的及其重要的一個(gè)指標(biāo)。

從用戶角度來說布疙,當(dāng)用戶單擊一個(gè)按鈕磺平,發(fā)出一條指令或在web頁面上單擊一個(gè)鏈接魂仍,從用戶單擊開始到應(yīng)用系統(tǒng)把本次操作的結(jié)果以用戶能察覺的方式展示出來,這個(gè)過程所消耗的時(shí)間就是用戶對軟件性能的直觀印象拣挪。


image.png
響應(yīng)時(shí)間=網(wǎng)絡(luò)傳輸時(shí)間+服務(wù)器處理時(shí)間+瀏覽器顯示時(shí)間(呈現(xiàn)給用戶的時(shí)間)

響應(yīng)時(shí)間的標(biāo)準(zhǔn)

  • 在3秒鐘之內(nèi)擦酌,頁面給予用戶響應(yīng)并有所顯示---“很不錯(cuò)的”;
  • 在3~5秒鐘內(nèi)菠劝,頁面給予用戶響應(yīng)并有所顯示---“好的”赊舶;
  • 在5~10秒鐘內(nèi),頁面給予用戶響應(yīng)并有所顯示---“勉強(qiáng)接受”赶诊;
  • 超過10秒就讓人有點(diǎn)不耐煩了笼平,很可能不會繼續(xù)等待下去---“差評”;

寫性能測試腳本步驟

1舔痪、需求分析
2寓调、測試點(diǎn)提取:對哪些功能進(jìn)行測試(指標(biāo)評估)

參考?xì)v史數(shù)據(jù)
客戶方提出
參與同行業(yè)同項(xiàng)目性能指標(biāo)
業(yè)界通用規(guī)則
自己測試決定

3锄码、制定測試計(jì)劃
4夺英、測試計(jì)劃評審
5、測試設(shè)計(jì)(搭建環(huán)境滋捶、準(zhǔn)備數(shù)據(jù)痛悯、編寫用例)
6、執(zhí)行用例(一次加載和逐步加載)
如:一個(gè)加載30個(gè)并發(fā)數(shù) 和 每次加載10個(gè)重窟,逐步加載到30個(gè)
7载萌、分析測試結(jié)果
8、提交性能測試報(bào)告

如何選擇性能測試工具

web service:SOUPUI巡扇,不用編寫代碼
http接口:Jmeter
界面功能性能測試(打開扭仁、下載圖片):LR

常見的性能問題

1、資源泄漏

包括內(nèi)存泄漏厅翔,系統(tǒng)占用的資源(如內(nèi)存乖坠、CPU等)隨著運(yùn)行時(shí)間不斷增長,從而降低系統(tǒng)性能知给。系統(tǒng)響應(yīng)越來越慢瓤帚,甚至出現(xiàn)混亂。只有重啟系統(tǒng)才能恢復(fù)到最初水平涩赢。
這類問題 產(chǎn)生的主要原因 是 有些對象(如GDI使用戈次、JDBC連接)沒有及時(shí)被銷毀、內(nèi)存沒有釋放干凈筒扒、緩存區(qū)回收等怯邪。

內(nèi)存泄漏
在進(jìn)程執(zhí)行過程中,如果一塊內(nèi)存區(qū)域花墩,進(jìn)程失去了對其的引用悬秉,也就是所該塊內(nèi)存區(qū)域永遠(yuǎn)都不會被進(jìn)程使用到了澄步,而操作系統(tǒng)又不知道進(jìn)程失去了對其的引用,所以不能進(jìn)行回收和泌,這就會導(dǎo)致操作系統(tǒng)認(rèn)為進(jìn)程保留了很多內(nèi)存空間村缸,但進(jìn)程本身卻沒辦法去使用這些內(nèi)存空間。

2武氓、資源瓶頸

內(nèi)部資源(線程梯皿、放入池的對象)變得稀缺,隨著負(fù)載越來越慢县恕,甚至系統(tǒng)掛起或出現(xiàn)異常錯(cuò)誤东羹。
這類問題產(chǎn)生的主要原因是線程過度使用或資源分配不足等造成的

3、CPU使用率達(dá)到100%忠烛,系統(tǒng)被鎖定

代碼中可能存在無限循環(huán)属提、缺乏保護(hù)(如對失敗請求不斷的重試)、頻繁對數(shù)據(jù)庫存取美尸、沒有使用數(shù)據(jù)高速緩存等

4冤议、線程死鎖、阻塞

可能因?yàn)槌绦驅(qū)κ挛锊l(fā)處理上的錯(cuò)誤火惊、資源爭用引起鎖阻塞和死鎖等
如:線程獲得順序的算法不對求类,造成死鎖奔垦、線程同步點(diǎn)上備份過多而造成通信阻塞

5屹耐、數(shù)據(jù)庫連接成為性能瓶頸

可能是因?yàn)閿?shù)據(jù)庫存取交互過多、未使用連接池 或 連接池配置參數(shù)不當(dāng)椿猎、單個(gè)SQL請求的數(shù)據(jù)量過多等問題

6蒲拉、查詢速度慢 或 列表效率低

主要原因是列表查詢未使用索引暖哨、過于復(fù)雜的SQL語句、分頁算法效率低
也可能是查詢結(jié)果集過大或不規(guī)范的查詢,如返回全部數(shù)據(jù)鼓拧,查詢?nèi)孔侄味皇撬枳侄?/p>

7、受外部系統(tǒng)影響越來越大

主要原因有 向后端系統(tǒng)發(fā)出太多的請求济欢、頁面內(nèi)容過多脆贵、經(jīng)第三方系統(tǒng)認(rèn)證比較復(fù)雜、網(wǎng)絡(luò)連接不穩(wěn)定或延遲

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末量蕊,一起剝皮案震驚了整個(gè)濱河市铺罢,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌残炮,老刑警劉巖韭赘,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異势就,居然都是意外死亡泉瞻,警方通過查閱死者的電腦和手機(jī)脉漏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來袖牙,“玉大人侧巨,你說我怎么就攤上這事”薮铮” “怎么了刃泡?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長碉怔。 經(jīng)常有香客問我烘贴,道長,這世上最難降的妖魔是什么撮胧? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任桨踪,我火速辦了婚禮,結(jié)果婚禮上芹啥,老公的妹妹穿的比我還像新娘锻离。我一直安慰自己,他們只是感情好墓怀,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布汽纠。 她就那樣靜靜地躺著,像睡著了一般傀履。 火紅的嫁衣襯著肌膚如雪虱朵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天钓账,我揣著相機(jī)與錄音碴犬,去河邊找鬼。 笑死梆暮,一個(gè)胖子當(dāng)著我的面吹牛服协,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播啦粹,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼偿荷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了唠椭?” 一聲冷哼從身側(cè)響起跳纳,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎泪蔫,沒想到半個(gè)月后棒旗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年铣揉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了饶深。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡逛拱,死狀恐怖敌厘,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情朽合,我是刑警寧澤俱两,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站曹步,受9級特大地震影響宪彩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜讲婚,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一尿孔、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧筹麸,春花似錦活合、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至酵紫,卻和暖如春告嘲,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背憨闰。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工状蜗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留需五,地道東北人鹉动。 一個(gè)月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像宏邮,于是被迫代替她去往敵國和親泽示。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

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