日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

软件性能测试的本质

發(fā)布時(shí)間:2023/12/10 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 软件性能测试的本质 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??

?

  淘寶網(wǎng)每年的雙11活動(dòng)都是對(duì)其服務(wù)器性能的挑戰(zhàn)。因?yàn)樵谶@一天所有商品半價(jià),購(gòu)物的用戶量劇增。做為淘寶網(wǎng)的高層更多的關(guān)心在線用戶數(shù),用戶交易量,總交易金額等,做為一名技術(shù)人員,我們可能更關(guān)心當(dāng)天系統(tǒng)的吞吐量、每秒鐘點(diǎn)擊率以及系統(tǒng)資源的消耗情況等,對(duì)!這就是系統(tǒng)的性能。那么性能的本質(zhì)是什么呢?我試抓住一些點(diǎn)來解釋。
   基于用戶體驗(yàn)的性能測(cè)試
   但對(duì)于一個(gè)用戶來說,他可以不關(guān)心上面這些(系統(tǒng)的性能參數(shù)),大約有一部分的消費(fèi)者會(huì)因?yàn)榫W(wǎng)站過于技術(shù)化或者性能問題而選擇了離開。換言之,如果你的網(wǎng)站速度太慢客戶就會(huì)離去。這是所有的互聯(lián)網(wǎng)用戶都熟知的道理。這時(shí)你的第一想法不是“哎呀,不知道站點(diǎn)的吞吐量怎樣”,而是“簡(jiǎn)直太慢了!我可沒有時(shí)間在這里等,到別處去吧”。現(xiàn)在想想,人們離開你的站點(diǎn)是否因?yàn)樾阅軉栴}?所以,在做性能測(cè)試的時(shí)候除關(guān)注吞吐量、點(diǎn)擊率這些參數(shù)外,我們更需要站在用戶的角度來測(cè)試實(shí)際的性能感受。如果你經(jīng)過測(cè)試聲稱網(wǎng)站可以承受更多的用戶同時(shí)訪問,但實(shí)際的用戶體驗(yàn)性非常差,那么做你的性能測(cè)試又有什么意義呢??
   現(xiàn)在市場(chǎng)上有大量的書討論如何設(shè)計(jì)良好的性能,還有更多的書把重點(diǎn)放在如何使得站點(diǎn)更加直觀、生動(dòng)和易于炒作上。關(guān)于速度的好處也討論過,但如何真正并優(yōu)化系統(tǒng)來提高用戶體驗(yàn)?zāi)?#xff1f;那就是直接的用戶體驗(yàn)測(cè)試了。有兩點(diǎn)方法可以做一這點(diǎn)。一是可以把站點(diǎn)直接投入到能夠進(jìn)行數(shù)據(jù)采集和系統(tǒng)調(diào)優(yōu)的生產(chǎn)環(huán)境中,并祈禱你的網(wǎng)站不會(huì)太慢或崩潰。另一個(gè)種明智的選擇是模擬真實(shí)的用戶活動(dòng),進(jìn)行重復(fù)的測(cè)試和調(diào)優(yōu),最后再投入到生產(chǎn)環(huán)境。?
   “明確”的性能需求?
   當(dāng)測(cè)試人員進(jìn)行性能測(cè)試工作時(shí),真正讓他們感到困難的不是測(cè)試工具如何使用,也不是如何對(duì)測(cè)試數(shù)據(jù)進(jìn)行分析與系統(tǒng)調(diào)優(yōu)(對(duì)于一個(gè)經(jīng)驗(yàn)豐富有性能工程師來說,這真的不難)。讓他們感到困惑的是如何得到準(zhǔn)確的量化的需求,比如:?
   A.網(wǎng)站可以支撐多少在線用戶數(shù)?
   B.網(wǎng)站可以支持多少用戶同時(shí)交易?
   C.電子郵件系統(tǒng)每秒種可以處理多少封郵件?
   D.可以支持多少人同時(shí)瀏覽網(wǎng)頁?
   類似于這樣的數(shù)據(jù)會(huì)出現(xiàn)客戶對(duì)系統(tǒng)的性能需求中,好吧,有了這些需求,我就開始性能工作了,這些需求真的很明確么??
   我們來看下面的例子,一個(gè)購(gòu)買汽車的用戶想知道:?
   這輛汽車開100公里的耗油是多少升。(對(duì),就是他坐在里面試駕的那輛車)?
   如果你是一個(gè)嚴(yán)謹(jǐn)?shù)钠囦N售,不會(huì)馬上會(huì)說這輛車每公里的耗油是多少。而是在大腦中快速的列出的汽車駕駛環(huán)境:?
   1、車上坐幾個(gè)人??
   2、車上帶多重的物品??
   3、路況如何,是高速還是擁擠的市區(qū)??
   4、天氣如何,溫度如何,要開空調(diào)碼??
   5、駕駛時(shí)間是白天還是晚上(如果是晚上要開車燈)??
   6、駕駛習(xí)慣是怎樣的??
   你唯一能做的就是繼續(xù)向客戶確認(rèn)更明確的需求,很多時(shí)候其實(shí)客戶也無法給出精確的需求。這個(gè)時(shí)候你就要多參考常規(guī)的情況下,參考同類產(chǎn)品,或盡量引導(dǎo)用戶去明確具體的需求,盡量與客戶達(dá)到統(tǒng)一的共識(shí)。?
   “假設(shè)”的測(cè)試環(huán)境?
   現(xiàn)在是不是覺得性能測(cè)試有太多的前置條件,它們或大或小的影響著測(cè)試的結(jié)果。?
   關(guān)于這些前置條件,或者我們稱之為假設(shè)(assumption),我把一些做法歸納為三個(gè)階段。?
  ?一:做了假設(shè)卻不知道自己做了假設(shè)
   比如前面提到的那個(gè)耗油的問題,有人的做法是我就開100公里看看,得出來是多少就是多少,比如9L。然后就告訴別人這個(gè)車的100公里耗油是9L。?
   問題是這樣的結(jié)果對(duì)你是OK,因?yàn)槟阌星猩淼牡捏w驗(yàn),知道遇到的狀況,可是測(cè)試的報(bào)告是要給別人,甚至你都無法直接面對(duì)或者溝通的人參考。這就會(huì)很容易誤導(dǎo)別人,即便這不是你的本意,而且你自已也確定你是真實(shí)的記錄了結(jié)果。這里的問題在于你并不清楚自己所做的假設(shè),因?yàn)槲覀円恢痹谧鲞@樣的假設(shè)。?
  ?二:做過多的假設(shè)
   “當(dāng)路面平坦,無任何紅綠燈,風(fēng)速5km/h只有一名70kg的乘客,時(shí)速穩(wěn)定在70km/h,良好駕駛習(xí)慣,....的情況下,耗油是7.1L/100km。”?
   這樣可能很嚴(yán)謹(jǐn),但是對(duì)你的報(bào)告的讀者而言,這樣的數(shù)據(jù)有多大意義,因?yàn)樗麄儧]有你這么幸運(yùn),有這么良好的環(huán)境。?
  ?三:做必要和合理的假設(shè)
   生活有時(shí)候是需要一些妥協(xié)和折衷,如果這些折衷是必要的和合理的。因?yàn)樘鰜砜?#xff0c;我們的測(cè)試需要提供有價(jià)值的信息,所以為了這樣有價(jià)值的信息,做出必要和合理的假設(shè)是可以接受的。?
   好吧,也許這不是你想要的答案,但它是我目前給自己的解釋和安慰。?
  ?性能測(cè)試環(huán)境需要在嚴(yán)格獨(dú)立監(jiān)控下管理,盡量保持與真實(shí)生產(chǎn)環(huán)境的一致性能。?
  ?“精確”的測(cè)試數(shù)據(jù)
   對(duì)于一個(gè)嚴(yán)謹(jǐn)?shù)臏y(cè)試員,我們的測(cè)試結(jié)果的描述也相當(dāng)精確,如:用戶每個(gè)用戶的訪問時(shí)間為2.8729秒,10分鐘系統(tǒng)處理請(qǐng)求8634個(gè)。我以前一直認(rèn)為,只要我把測(cè)試環(huán)境描述的很詳細(xì),我的測(cè)試結(jié)果就是精確的。?
   實(shí)際上功能測(cè)試很容易得到測(cè)試結(jié)果,而性能測(cè)試很難得到精確的量化結(jié)果,我買了一輛汽車,開車去上班,去時(shí)車的各個(gè)功能非常正常,回來的時(shí)候車的功能也非常正常。我們通過功能測(cè)試很容易得出,這個(gè)車的功能沒有問題。?
   那么性能測(cè)試呢?再來看耗油情況,我去時(shí)上耗油3.29升,回來時(shí)耗油3.42升,同樣的一條路,同樣的人開同樣的車,那么是不一樣的耗油結(jié)果?如果我再試一遍,可能情況還會(huì)有變化。所以,我們很難得到精確的數(shù)據(jù),但是這絲毫不影響我們測(cè)試結(jié)果的參考價(jià)值。?
  ?“宏觀/圍觀”的性能測(cè)試
   這也是一個(gè)有趣的對(duì)立。在做性能測(cè)試,特別是整個(gè)產(chǎn)品的性能測(cè)試的時(shí)候,我們看到的是產(chǎn)品的核心功能和主要的大的功能模塊,比如數(shù)據(jù)庫(kù)、web服務(wù)器、核心的daemon等等。在腦海里,我們有一個(gè)架構(gòu)圖,哪怕你沒有把它畫出來。所以有時(shí)候,我們會(huì)想,性能測(cè)試對(duì)于產(chǎn)品的視角是宏觀的,看大的組件,而不是具體的細(xì)節(jié)的東西。果真是如此嗎?看看下面的例子:?
   1.把daemon的log級(jí)別改為debug(log_level從2改到5)之后,性能下降了差不多一半。?
   2.關(guān)掉一個(gè)cache選項(xiàng)?
   3.打開keepalive選項(xiàng)?
   4.打開DNS反向查詢?
   .....?
   上面都是些細(xì)枝末節(jié)的設(shè)置,一個(gè)配置項(xiàng)而已,藏在DB的某張表或者某個(gè)ini里面。但是改變之后,得到的性能結(jié)果可能大不相同。這些都是否改變了我們以往的看法。?
   Scott Barber(性能測(cè)試方面的專家)在他的一篇文章里討論了這個(gè)話題。?
   “Macro-and Micro-tests,macro strategies and micro-plans,macro-level application usage and micro-level usage implementation details,macro-level result summaries for executives and micro-level test results for developers...it sounds like a day in the life of a performance tester to me.”?
   摘自他為Software Test &Performance雜志寫的一個(gè)系列文章,叫做Peak Performance,其中的2006年9月的一期,文章名是Macro to Micro And Back Again Macro to Micro And Back Again,嗯,很好的詮釋。
   亞里士多德說世上的道理不是被講一遍兩遍而是成千上萬遍,是的,因?yàn)閃einberg也講了一遍,就在上面提到的那本書里面。請(qǐng)?jiān)徫以俅我盟脑?#xff0c;粉絲嘛。“Although it's necessary to have an overview of the problem,the big picture often turns on one critical detail.”?
   critical detail,對(duì),就是這個(gè)term。其實(shí)不光是這里說的測(cè)試,工作和生活中的很多事情都是一樣,不是要不要關(guān)心細(xì)節(jié),而是它是否critical。?
   那么,怎么區(qū)分一個(gè)細(xì)節(jié)是不是critical或者怎樣找到critical的detail呢??
   嗯...,這是個(gè)好問題,不過不好意思這個(gè)不是這里要討論的范疇。?
   所以,你還認(rèn)為性能測(cè)試只是學(xué)習(xí)如何使用性能工具么?它需要一個(gè)長(zhǎng)期的個(gè)技術(shù)的積累,我們的路還很長(zhǎng)。也許,我講的不夠本質(zhì),但性能測(cè)試這個(gè)領(lǐng)域,看到太多的新手在整天問工具的使用,學(xué)會(huì)了工具的使用就大言“我會(huì)(精通)性能測(cè)試!”。太多的公司叫新手的做性能測(cè)試,環(huán)境神馬的也不提供,你找個(gè)工具對(duì)軟件加壓一下吧!哎~!這未免是太貶低“軟件性能測(cè)試”了。


本文選自:http://www.spasvo.com/news/html/20141217174341.html

?

轉(zhuǎn)載于:https://my.oschina.net/spasvo/blog/357938

總結(jié)

以上是生活随笔為你收集整理的软件性能测试的本质的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。