實用主義效能測試

2021-09-07 16:37:56 字數 2726 閱讀 7086

學習了《軟體開發沉思錄》中的實用主義效能測試,對重點內容做下記錄:

效能測試應該囊括確保產品效能符合要求所需的一切行動。這裡有四個關鍵點:需求、產品效能資料、溝通和流程。

1.需求採集

需求採集中的幾個重要問題:要度量什麼?如何知道我們需要什麼?以及如何得到確實有用(而非幫倒忙)的資料?

@要度量什麼

最重要的效能度量點有兩個,最大吞吐量以及給定吞吐量下的響應時間。乙個好的做法是:分別度量幾種不同吞吐量下的響應時間,從中分析負載對響應時間的影響。

需要通過度量找出兩項資料:當響應時間恰好可以接受時的吞吐量,以及達到預期吞吐量時的響應時間。伸縮性度量的關鍵則在於:隨著資料規模、使用者數量或者執行系統的硬體變化,起初得到的效能度量資料會發生怎樣的變化。

可靠性的關鍵度量點是:當負載量高得超乎尋常,或者連續執行了很長時間以後,系統是否仍然正常工作。

@如何設定目標

要想知道系統需要達到怎樣的吞吐量,你首先需要知道有多少使用者會使用這個系統,以及他們的使用模式。使用者會多頻繁地使用某個功能?這個功能需要多快完成?

需要有乙個可靠的溝通流程與機制來獲得所需的資訊,及時獲知支撐業務需求所需的效能指標。

總之:需求採集是為了讓所有人都清楚最終交付的產品需要有怎樣的效能才能支撐業務目標。之所以要讓客戶參與,是因為他們最了解自己的業務,這樣才能確保採集到的需求足夠準確。而且通過討論也能幫助客戶清晰自己對效能的需求,從而有效管理他們對系統的期望。

2.執行測試

@執行哪些測試

單場景和混合場景:所有頻繁進行的使用者操作都應該有對應的測試。這些測試應該記錄吞吐量、錯誤率和響應時間的統計資料。然後你還應該復用這些測試,從而構建更複雜的測試。所有這些測試應該一起執行,盡可能地模擬真實情況,這樣你就能從中獲悉產品的效能狀況。

考慮伸縮性:在不同的使用者量、不同的資料規模下執行它們,觀察效能資料的伸縮情況。如果可能的話,還應該在不同的機器數量下進行測試,從而了解增加硬體能給效能帶來多大提公升。從這幾方面,你就能獲知產品的伸縮能力。

超負荷以及穩定性測試

@何處執行測試

如果可能的話,應該盡量讓效能測試環境模擬真實的生產環境。如果生產環境太過龐大而無法整體模擬,那麼就應該讓效能測試環境模擬生產環境的乙個部分,然後將真實的效能需求等比壓縮到效能測試環境的水平。(包括軟硬體環境)

@應該用多大規模的資料庫來做效能測試

應該先與關注效能的客戶交流,爭取拿到乙份生產資料庫的副本,這樣就可以針對它來進行測試。盡量模擬線上環境(包括資料量,索引等等)。另外,還應該與客戶**資料規模發生變化的可能性。

@如何處理第三方介面

如果系統用到很多第三方介面,效能測試最好不要直接去使用這些第三方系統。原因有兩點:首先,第三方系統可能並不適合成為效能測試的一部分;其次,即便第三方系統提供了測試環境,依賴你無法控制的第三方系統會降低測試的可靠性。最好的辦法是用乙個單獨的測試來獲知第三方系統的平均響應時間,然後為它寫乙個 mock或者 stub,直接等待那麼長的一段時間然後返回乙個固定的響應。

@多次度量響應時間和吞吐量

需要得到系統最大吞吐量,最佳響應時間、當響應時間正好符合要求時的負載量以及負載達到事先測量的最大吞吐量的 80%和 90%時的響應時間等資訊

@有必要測試所有功能嗎

對系統的所有功能進行測試基本上是不現實的。重點在於要覆蓋最常用的功能。 所以你需要識別出系統的主要使用場景,並針對這些場景建立不同的測試。

3.溝通

需要做的就測試結果進行溝通。

根據討論出的效能需求和目前的效能水平來解讀測試結果。

@指出系統效能與目標的接近程度(與目標的差距有多少,或是超出目標多少)

@說明產品的效能是否發生了重大變化。

@各個關鍵點時各種系統資源的使用情況

不同的人會對不同的資訊感興趣(客戶,專案經理,開發者)。建議用乙個**向所有人展示最新的效能測試結果。

4.流程

效能測試經常被放在專案結束前進行,這種安排嚴重影響了效能測試的效果。效能測試中最重要的事就是要定期地進行測試。如果直到專案最後幾周才做效能測試,那麼你將有很多事要幹,而時間卻非常緊迫。大部分時間會被用於編寫測試指令碼,並得到一些和產品有關的資料。這時你就會處於一種尷尬的境地,你大概知道系統執行得多快,但基本無從知道它是否足夠快,而且也沒有時間做任何改進。

當第一段**被編寫出來,效能測試就應該開始了。雖然這時可能還沒有任何可供測試的東西,但還是有很多事可以去做。你可以向開發者了解他們將要使用的技術,評估合適的工具,找出功能足以測試當前產品的工具。此外還需要識別出關注效能的客戶,並且與他們一起啟動需求採集的流程。

@如何把各種工作連線起來

每週迴圈工作:1.每週開始時開會,討論正在開發的功能的效能需求,介紹測試計畫;2.編寫新功能對應的指令碼,維護已有指令碼,執行測試;3.每週結束時開會,展示本週成果:指令碼,測試結果等並進行討論

@如何確保不拖後腿

1.確定任務列表;2.確定優先順序;3.時間確實緊張時按照前面2點來減少任務量(高難度,低優先順序)或者增加人手

5.總結

這個流程最大的好處在於它能確保你知道自己手上有什麼、需要什麼,而且你能肯定系統的每個部分都有測試覆蓋,從而大大增加了發現問題解決問題的機會。讓效能測試與開發同步,對每個功能都有測試覆蓋,這樣如果效能出了問題你就有時間應對。有乙份效能需求在手上,你就能判斷當前的系統是否需要改變。這份需求是客戶根據業務流程和規模制訂的,所以整個團隊都對它有信心,大家也會樂於花時間來解決效能問題,因為他們知道這是一件有價值的工作。

白羊座和實用主義

白羊座崇尚實用主義 當然這裡的白羊座代指我,真正的白羊座這麼多,我沒研究過 是什麼時候開始跟著小女生研究星座已經記不清楚了,但是對星座卻一直保持著最初的那種感覺。彷彿神秘的潘多拉魔盒,不知道裡面裝的是什麼。開啟了,看了,還是不知道。看到了一些,卻說不出來。莫可名狀。說它是迷信,可據說星座分析是有統計...

釘釘上手體會 阿里實用主義的野望

釘釘出自阿里之手,而阿里是電商出身,在移動辦公和協同辦公方面不算老司機,但釘釘卻憑藉阿里的背書聲稱拿下了這個市場的最大份額,甚至超過後面9名的總和 資料 為釘釘官網發布的 2018中國智慧型移動辦公行業趨勢報告 當然這個資料能有多少可信度還有待考證,但阿里讓很多公司都用上了釘釘的事實是我們身邊真實發...

騰訊馬化騰 乙個技術實用主義者的成長

沉重巨集大的政治更迭與社會思潮與1971年出生的馬化騰相隔甚遠。青少年的他曾沉迷於觀測天象,但深圳火熱的市場經濟氛圍最終將他拉回地面成為乙個商人。果然,我們的採訪提綱難住了馬化騰,你的問題很難答,我真沒想那麼多。虛的東西我不會講。這是馬化騰式的答案,於是,我們拿出了第二套採訪提綱。馬化騰自己也解答不...