最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

軟件測(cè)試的性能測(cè)試入門了解

2023-08-18 01:07 作者:過路之人  | 我要投稿

發(fā)了下csdn,B站也發(fā)發(fā),雖然是很水的文。


前言

好久沒有寫文章,打字都不利索了,趕緊水一篇出來練練手。

就實(shí)際而言,很多從事軟件測(cè)試工作的人,之所以能干這活,就是功能測(cè)試要求極低,肯干活就行。不少情況都是跨專業(yè)工作,對(duì)軟件開發(fā)中一些基本的術(shù)語都不太了解,后續(xù)職業(yè)發(fā)展肯定受阻。這里整理下性能測(cè)試可能接觸的一些術(shù)語并進(jìn)行說明。有些說法可能不那么正確,還是需要系統(tǒng)。

性能測(cè)試

本文將通過餐廳點(diǎn)餐這一行為說明一些術(shù)語。餐廳點(diǎn)餐包括:到柜臺(tái)點(diǎn)餐、等待餐、取餐。
性能測(cè)試需要牢記一點(diǎn),就是所有生產(chǎn)活動(dòng),都需要占用資源,完成后需要釋放資源。

事務(wù)

事務(wù)是測(cè)試對(duì)象的具體測(cè)試內(nèi)容或集合,它是由測(cè)試目標(biāo)決定的。以餐廳點(diǎn)餐為例,我可以定義點(diǎn)餐到取餐離開為一個(gè)事務(wù),這個(gè)測(cè)試目標(biāo)是完整的點(diǎn)取餐流程;也可以定義柜臺(tái)點(diǎn)餐為一個(gè)事務(wù),這個(gè)測(cè)試目標(biāo)僅僅是點(diǎn)餐。

線程

拋開硬件層面不談。在同一事務(wù)中,多線程就是為了并發(fā)當(dāng)成并行也行。
在柜臺(tái)點(diǎn)餐環(huán)節(jié),我們可以把柜臺(tái)數(shù)當(dāng)作線程數(shù)。假設(shè)有10個(gè)顧客同時(shí)到店,柜臺(tái)10s處理一個(gè)顧客點(diǎn)餐。1個(gè)柜臺(tái)就是1個(gè)線程,此時(shí)完成10個(gè)顧客點(diǎn)單就要10*10s;10個(gè)柜臺(tái)就是10個(gè)線程,此時(shí)只需10/10*10s就能完成顧客點(diǎn)餐。這就是為什么大多數(shù)情況增大線程數(shù)就能提升性能。
此外,多線程還可以改善一些業(yè)務(wù)阻塞的情況,例如某個(gè)人點(diǎn)餐,點(diǎn)餐量非常大,需要10min才能完成點(diǎn)單,多線程就可以避免其他人被迫等待10min。

實(shí)際業(yè)務(wù)開發(fā)中,流行線程池之類的管理線程,動(dòng)態(tài)管理線程,基本上就是點(diǎn)餐人多了,柜臺(tái)多開點(diǎn),人少了,柜臺(tái)關(guān)幾個(gè)。線程本身是占用性能的,所以測(cè)試性能時(shí)測(cè)試工具低并發(fā)和高并發(fā)是不同的,即使預(yù)設(shè)事務(wù)壓力一致。

協(xié)程

協(xié)程是一個(gè)輕量級(jí)的線程,開發(fā)測(cè)試的話需要升入了解下,如果只做性能測(cè)試,當(dāng)成線程就行,在下面的異步和同步里簡(jiǎn)單會(huì)說下區(qū)別。

異步和同步

異步相對(duì)于同步,主要外在區(qū)別在于是否阻塞運(yùn)行。
對(duì)于計(jì)算機(jī)軟件而言,軟件由CPU運(yùn)行(就像點(diǎn)餐事務(wù)由營業(yè)員操作),其工作內(nèi)容可以主要分為兩類: IO密集型和CPU密集型。在IO密集型中cpu經(jīng)常閑置。實(shí)際工作中有優(yōu)化需求的多數(shù)為IO密集型(能優(yōu)化CPU密集型的,這是真大佬了)。

經(jīng)常聽到異步處理提升性能,這個(gè)性能提升來源于減少CPU閑置。還是以點(diǎn)餐為例,營業(yè)員是有限的(這是大前提,測(cè)試也好開發(fā)也好,須知資源是有限的)。

類似開封菜點(diǎn)菜,過去就有過爭(zhēng)論,營業(yè)員點(diǎn)完單后到底是去先配餐,完成這個(gè)客戶的業(yè)務(wù)還是繼續(xù)點(diǎn)餐,直到一定人數(shù)或沒有點(diǎn)餐人。
假設(shè)只有一個(gè)營業(yè)員,2個(gè)客戶同時(shí)到店,現(xiàn)成的食品,完成一次流程需要 點(diǎn)餐10s,配餐10s,等待取餐1s。
模式1:采取嚴(yán)格的 點(diǎn)餐-配餐-取餐-點(diǎn)餐 模式,此時(shí)一個(gè)客戶需要的時(shí)間是 點(diǎn)餐(10s)+等待取餐(10s)+取餐(1s),耗時(shí)21s。第二個(gè)客戶耗時(shí)21+21=42s。
模式2:采取中間閑置時(shí)可以打斷當(dāng)前行動(dòng),處理其他客戶 模式,此時(shí)第一個(gè)客戶最短需要等待 10+10+10+10=40s(在等待取餐時(shí)進(jìn)行下個(gè)點(diǎn)單,)),第二個(gè)客戶耗時(shí)41s
模式3: 采取完成所有點(diǎn)餐,完成所有配餐,再一次性完成所有取餐的模式。這個(gè)模式中,分別耗時(shí)41s,41s。

注意上面這個(gè)取餐的1s是營業(yè)員等待客戶取走餐,可以看成線程中進(jìn)行不同任務(wù)會(huì)需要占用釋放資源,這需要時(shí)間。在實(shí)際開發(fā)中這個(gè)資源的占用和釋放很重要,是優(yōu)化的要點(diǎn)之一,畢竟你不能逼迫營業(yè)員10s完成點(diǎn)餐或者5s完成取餐,這很難。

在點(diǎn)-配-取上,模式1 是同步,模式2是異步,模式3是實(shí)際有可能開發(fā)出的一種也可能被叫異步的模型,自行甄別,所幸實(shí)際開發(fā)中資源并沒有短缺到如此。(只有一個(gè)營業(yè)員這是協(xié)程,由開發(fā)主動(dòng)控制在閑置時(shí)切換任務(wù)。)。咋一看似乎模式1,好于模式2。因?yàn)檫@是一個(gè)典型的cpu密集型的,營業(yè)員只有在等待客戶取餐時(shí)才會(huì)處于閑置狀態(tài),而起工作壓力極其的大,無法快速處理業(yè)務(wù)??梢姰惒胶屯降膬?yōu)劣還是要根據(jù)實(shí)際情況來確定。

我們?cè)诩僭O(shè)在配餐過程需要等待40s,等待食物烹飪,這個(gè)過程中營業(yè)員閑置。
模式1 分別耗時(shí)61s(10+40+10+1),122s;模式2分別耗時(shí)61s(10+40+10+1),111s(61+40+10+1).模式2更為優(yōu)異。

為了更好理解,我們進(jìn)一步做假設(shè),我們這時(shí)候假設(shè)有三個(gè)營業(yè)員分別從事點(diǎn)餐,配餐(無需等待),取餐。
此時(shí)模式1的耗時(shí)不變,分別是21秒,42秒。(當(dāng)然有聰明的小伙伴就想到了,我可以讓兩個(gè)人同時(shí)服務(wù)兩個(gè)人,這樣的話一個(gè)21秒就可以搞定了。)
但模式2的耗時(shí),分別是21s,31s。(模式3也是這個(gè)時(shí)間,這是多線程,可以不用考慮閑置問題,模式3跟模式2并無不同)
模式2很明顯優(yōu)于模式1。

mq和消息隊(duì)列和中間件

mq就是消息隊(duì)列,message queue,是一種面向消息的中間件。中間件顧名思義就是夾在兩個(gè)實(shí)體中間的起到連接二者的作用。在異步中中間件不可或缺。

在上面點(diǎn)餐的例子中,我們將點(diǎn)餐清單作為消息。
負(fù)責(zé)點(diǎn)餐的營業(yè)員,在客戶完成點(diǎn)餐之后,需要將這個(gè)消息傳遞給負(fù)責(zé)配餐的人員,但是負(fù)責(zé)配餐的人員不一定處于閑置狀態(tài),他有可能正在工作中。
負(fù)責(zé)點(diǎn)餐的營業(yè)員不可能等待配餐員,這樣的話就成一種阻塞,某種程度上可以算成是一種同步。
所以這里需要中間件,負(fù)責(zé)點(diǎn)餐的營業(yè)員將這個(gè)消息存放到中間件中,而負(fù)責(zé)配餐的營業(yè)員,在閑置的時(shí)間就可以去中間件中去獲取點(diǎn)餐清單。這樣才算一個(gè)真正的一個(gè)異步。
中間件的優(yōu)點(diǎn)非常多,除了上述的異步之外,它還可以實(shí)現(xiàn)包括排隊(duì)之類的功能。

緩存和緩沖

緩存cache,緩沖buffer,都有緩緩的作用。但二者不同。
緩存
還是上面的例子,一開始配餐只需要10秒鐘,不需要進(jìn)行等待,這里就是假設(shè)存在已經(jīng)煮熟的食品(在快餐店非常常見)。這些已經(jīng)預(yù)制好的食品,我們可以將它視為一種緩存。在緩存還足夠的時(shí)候,可以用非??斓乃俣韧瓿膳洳瓦@一件事情,但是一旦緩存消耗殆盡,就需要重新進(jìn)行食品配置(這個(gè)速度遠(yuǎn)遠(yuǎn)慢于直接拿成品)。
上面的例子里,預(yù)制食品就是緩存空間,每次占用緩存就是消耗了預(yù)制食品,儲(chǔ)存食品的柜子大小決定了緩存總大小,緩存被使用后可以被釋放就像食品柜中可以補(bǔ)充食品。一次配餐(一個(gè)計(jì)算工作)再有預(yù)制食品時(shí)(緩存)可以非??焖偻瓿?,一旦耗盡(內(nèi)存寫不下寫磁盤,速度起碼慢三個(gè)數(shù)量級(jí)),就需要現(xiàn)燒(速度非常慢)。

緩沖
緩沖可以說是一種行為。常見的日志緩沖寫入。以上面的點(diǎn)餐為例,可以在配餐過程中一件一件拿給客戶,也可以等完成所有配餐后一口氣拿過去。很顯然一件一件拿很浪費(fèi)資源。
完成所有配餐后再取餐,這一行為可以稱為緩沖。測(cè)試過程中,有時(shí)候需要查看日志,很多日志都有緩沖設(shè)置,特別是一些小設(shè)備,硬件能力有限,采取緩沖寫入設(shè)置了超過多少條后寫入,很長時(shí)間都沒有日志,中間設(shè)備異常斷電,有時(shí)候可能會(huì)丟日志,測(cè)試過程中對(duì)測(cè)試數(shù)據(jù)來源要進(jìn)行保證,一要保真,二要保有。

暫時(shí)先這樣,隨便寫寫,可能有不少理解表述不當(dāng)?shù)牡胤健?br>最好還是多看書,系統(tǒng)學(xué)習(xí)。軟考的軟件評(píng)測(cè)師的教材其實(shí)還行,有點(diǎn)老,脫離實(shí)際,但是系統(tǒng)。


軟件測(cè)試的性能測(cè)試入門了解的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
湘潭县| 分宜县| 吉隆县| 高邮市| 聂荣县| 西充县| 天台县| 二连浩特市| 光泽县| 新化县| 安多县| 龙门县| 曲水县| 咸宁市| 彭泽县| 吉隆县| 济阳县| 勃利县| 绥棱县| 文登市| 贡嘎县| 肥城市| 新绛县| 抚州市| 日照市| 许昌县| 宜城市| 区。| 孟村| 克什克腾旗| 长治市| 蓬莱市| 昂仁县| 盈江县| 莒南县| 晋江市| 高州市| 黄龙县| 兴文县| 靖江市| 桐城市|