跟著芒果一起,好好學(xué)習(xí),天天向上。上周六是我們TestOps性能課程的第五天,我們來為這一天的課程做個小總結(jié)~(關(guān)于第四天的課程總結(jié),芒果之后再為大家推出)
從大的角度來說性能測試有三大步驟:負(fù)載、監(jiān)控以及調(diào)優(yōu)。而我們要完成這三大步的前提就是需求,必須分析清楚需求,才能做好性能測試,但是很多時候的真實情況是很難有人去想明白需求,尤其是性能需求。所以周六的性能課云層老師專門花了一天的時間帶大家理解和分析性能測試需求。
因為這一天的課程內(nèi)容實在是太過豐富(芒果太懶),所以選取其中的一部分進(jìn)行總結(jié)。
性能需求開發(fā)
云層老師在談到性能需求開發(fā)的時候提到以下四點可以幫助到我們:
與用戶溝通
需求來源于客戶,如果我們的客戶懂需求,我們可以從客戶那里得到數(shù)據(jù):我們需要多少用戶去負(fù)載什么樣的業(yè)務(wù)(負(fù)載量),達(dá)到什么樣的性能指標(biāo)(響應(yīng)時間、處理能力等),會消耗多少資源(資源占用)。按照這個需求我們?nèi)?zhí)行性能測試,然后驗證結(jié)果即可。但是很多時候問題在于,無論是客戶還是執(zhí)行性能測試的我們都很難把需求說清楚,也很難把需求很好的拆分,所以這時候我們就需要其他的一些方法幫我們做性能需求開發(fā)了。
歷史日志
我們可以通過歷史最大峰值訪問量、負(fù)載特性、行業(yè)規(guī)則來幫助我們確定性能需求。日志分析是個非常靠譜的需求分析方法,現(xiàn)在有非常多的在線(比如51LA)或者非在線(比如將日志導(dǎo)入InfluxDB,做groupby操作后按照時間段查看)日志分析工具幫我們做日志分析。很多時候我們用歷史最高的訪問量進(jìn)行性能測試系統(tǒng)滿足需求,是可以說明系統(tǒng)的性能測試是通過的。我們通過歷史日志也可以清楚用戶的操作習(xí)慣流程是什么,是哪一個頁面到哪一個頁面,我們也可以按照這個方式來執(zhí)行我們的性能測試。
同類產(chǎn)品
我們可以通過同類型產(chǎn)品的物理特性、最大負(fù)載量和系統(tǒng)性能狀態(tài)來推斷我們自己系統(tǒng)的情況。但是有幾個方面我們需要注意的是,同類型產(chǎn)品的數(shù)據(jù)不一定是真實的(城里套路深,本寶寶想回農(nóng)村);當(dāng)我們需要顯現(xiàn)出比同類型產(chǎn)品的優(yōu)勢時,僅僅參考同類型產(chǎn)品的數(shù)據(jù)肯定是不夠的;還有一個就是同類型產(chǎn)品的公司能承受的,自己的公司不一定能承受(大家還記得那個有名的領(lǐng)導(dǎo)說讓我做一個跟淘寶差不多的購物網(wǎng)站的段子么)。
80/20原則
軟件測試界也有所謂的80/20原則,比如20%的bug隱藏在80%的代碼中,80%的bug是由20%的測試人員發(fā)現(xiàn)的,80%的bug屬于20%的錯誤類型等等;在性能測試中,也會使用泊松分布理論來計算并發(fā)用戶峰值。其實這都是核心業(yè)務(wù)、核心負(fù)載時間等方面基于經(jīng)驗的做法,大多時候真實情況并不是這樣的,所以我們僅僅只能它拿來作為參考;當(dāng)然80/20原則作為一大殺器,我們也可以用來說服外行人士(這里必須配上手打表情[奸笑][奸笑][奸笑])。
性能需求分析
對于性能需求的分析,通常有這樣的一個過程:知道測什么 -> 知道被測對象是什么 -> 知道被測對象以后會被怎么使用 -> 知道我應(yīng)該怎么測 -> 知道我測出來的結(jié)果怎么才算通過。
要知道測什么、被測對象是什么,我們必須熟悉系統(tǒng)的架構(gòu),也就是俗稱的要懂業(yè)務(wù),我們要清楚詳細(xì)的需求說明,知道我們的數(shù)據(jù)從輸入到輸出中間發(fā)生了什么樣的變化,知道最后的輸出結(jié)果。我們還應(yīng)該知道我們的系統(tǒng)是如何實現(xiàn)的,這個不一定需要自己能寫一套這個系統(tǒng),但是我們一定要知道這個系統(tǒng)是如何工作的。
對于被測對象以后怎么用,我們主要是看負(fù)載量等信息。比如某某接口跑多少負(fù)載時能夠獲得什么樣的響應(yīng)時間和吞吐量,在什么配置下,資源占用路不超過80%等。
對于怎么測這個問題主要是關(guān)系到用何種協(xié)議、實現(xiàn)架構(gòu)、使用的工具以及性能測試腳本的開發(fā)了。當(dāng)然也要考慮能不能測試的情況,比如對于客戶端的測試,當(dāng)客戶端的業(yè)務(wù)沒辦法實現(xiàn)時,我們就無法進(jìn)行測試。
性能需求分析舉例
在課堂上云層老師對于性能需求分析做了個小總結(jié)之后,舉了幾個例子帶大家充分熟悉和掌握性能需求分析。我這里拿西門子某PLC進(jìn)行機械狀態(tài)采集,采集點眾多導(dǎo)致的性能問題跟大家分享一下:
總的來說,這個系統(tǒng)的原理很簡單,就是利用采集器采集數(shù)據(jù),采集器上發(fā)數(shù)據(jù),確認(rèn)上發(fā)成功就行了。PLC的工作原理我們可能不太好理解,可以把它看成我們熟悉的瀏覽器,它具有定時刷新功能,刷新的內(nèi)容是一個表單,表單里會包含當(dāng)前系統(tǒng)時間和一個采集到的數(shù)字。我們只需要做到模擬PLC服務(wù)器上發(fā)數(shù)據(jù)的過程,形成多用戶并發(fā),然后測試服務(wù)器對于多節(jié)點的處理能力就可以了。至于怎么模擬:PLC既然能夠上報到服務(wù)器,一定會有兩個過程:一定會有SDK這樣的東西,我們可以調(diào)用SDK來實現(xiàn)模擬物理信號的問題;一個是把物理信號轉(zhuǎn)化為數(shù)字信號提交給某個模塊,該模塊再和服務(wù)器產(chǎn)生網(wǎng)絡(luò)請求。
這樣一分析我們的性能測試是不是簡單了很多?
其他問題
性能測試還應(yīng)該考慮:
被測系統(tǒng)到底是一個c/s、或者是一個b/s,還是一個單機的;要解決負(fù)載源的問題,當(dāng)然解決負(fù)載源的關(guān)鍵是如何重寫個客戶端;跟蹤記錄客戶端所產(chǎn)生負(fù)載的對應(yīng)指標(biāo)。
到底是使用何種工具來進(jìn)行測試?是使用Loadrunner、Jmeter,還是自己寫個代碼以jar或者dll的負(fù)載模式。
當(dāng)然這一天的課程內(nèi)容還有性能測試的請求模擬工具、負(fù)載工具、監(jiān)控工具及其他輔助工具的介紹;測試計劃的介紹;測試方案的介紹;測試策略的介紹;測試環(huán)境對真實生產(chǎn)環(huán)境模擬的介紹;場景設(shè)計等等內(nèi)容。因為篇幅原因介紹不過來,所以大家還是跟著云層老師在課堂上好好學(xué)習(xí)吧~
點擊原文即可達(dá)到我們的課程直播頁面喲~
文章最后介紹一下我們只是智慧又帥氣的男神——云層老師:
陳霽 網(wǎng)絡(luò)ID云層 全棧測試、TestOps測試運維推動者,DevOps、敏捷測試資深專家。云層天咨創(chuàng)始人,曾先后供職于ETANG和GAMELOFT(上海)有限公司,原51testing資深講師、產(chǎn)品總監(jiān),性能測試,自動化測試資深專家。著有《性能測試進(jìn)階指南》系列叢書,為行業(yè)內(nèi)數(shù)百家公司數(shù)千學(xué)員提供測試技術(shù)咨詢、培訓(xùn)、服務(wù)。 百度名家,超過15W讀者。授課尖銳詼諧,邏輯清晰,深受廣大學(xué)員喜愛。
精益技術(shù) 賦能過程
聯(lián)系客服