文 | 安和前端
網易智企資深性能測試工程師web
一般在軟件產品的研發流程中,性能QA處於被動輸出的位置,研發人員提性能需求,性能QA執行,常見流程圖以下:後端
這種工做模式可能出現2種場景:網絡
在某些產品中,這是個尷尬的狀況:生產環境10天半個月都沒有性能問題;業務需求愈來愈穩定,性能需求減小;用戶流量增加趨勢緩慢,暫無穩定性風險。沒有性能需求,性能QA還有必要存在嗎?架構
若是你是性能QA,若是你出如今如上場景中,也許你須要捫心自問:性能
我能作的只有執行嗎?測試
我只能作到這種程度嗎?spa
個人價值應該體如今哪裏?操作系統
問題由現象而來,架構設計
但思考能夠從根源出發
換個角度,上面的三個問題能夠整合爲一個問題:我還能爲產品多作些什麼?
性能QA的本職工做毋庸置疑是保證產品的性能質量知足用戶使用需求,咱們的思考能夠從這個根源展開,試試拆解來看。
這句話有幾個關鍵詞:產品、性能質量、知足用戶。
一、 產品
產品是核心,性能QA的全部活動都要圍繞具體產品研發過程展開,對產品勢必要有必定了解,包括但不限於這是什麼產品、有什麼業務功能及特色、用戶羣體的行爲模式、產品部署的總體架構等等。
瞭解產品有什麼用?
在產品研發過程當中,性能QA應該處於什麼位置?
如開篇所示的流程中,性能QA是做爲質量保障的最後一道門檻,處於後方守衛的位置。該位置的缺點是一般被動接受研發人員提出的性能需求。
假設不一樣產品是不一樣場地,研發人員是球員,性能QA是守門員,球門線是性能質量及格線,球員要作的是用正確的姿式踢球入門,守門員要作的是把不符合條件的球擋在門外。
若是球員不瞭解規則,能不能踢進,全靠球員自由發揮;若是多個球員從不一樣的角度用不一樣的腳法同時射球,能不能擋住爛球,全靠守門員自由發揮。
那麼有2個問題急需解決:
當性能QA開始思考這個問題,已經邁出了突破思惟模式侷限性的一步,不只僅是性能需求的執行者,而是球場上的規則制定者。也能夠這樣說:不想當教練的守門員不是好QA。
此時或許能夠基於不一樣產品的特色總結出進球指南, 好比:
二、性能質量
保證性能質量必須基於產品來實施。
如開篇所示的流程只能被稱爲性能測試,輸出的內容只是某個性能需求的性能質量,當咱們習慣從更多的角度瞭解產品,並擺正了本身的位置後,可以更清楚的瞭解到保證性能質量不只僅依靠性能測試執行,而應該是多視角多維度的。
嘗試把保證性能質量看做一個服務性質的產品,首先須要明確如下幾點:
一、什麼是性能質量?
經過量化指標判斷性能知足用戶使用需求的程度。在軟件質量模型中,性能屬於效率,效率不是非黑即白,那麼對性能質量的評估,除了基線外,趨勢對比一樣重要。
二、目標用戶
研發團隊/產品負責人:直接用戶;
軟件產品的使用羣體:最終用戶;
三、 目標用戶的需求
四、提供什麼樣的服務
基於如上的目標用戶及用戶需求,性能QA提供的服務應該具有如下幾個特色:
1) 基線和對比
2) 兼顧局部性能、系統性能、業務場景性能及服務穩定性;
3) 可以規避風險、預知風險、評估風險;
4) 及時跟蹤用戶體驗;
即從多視角出發,推進性能活動介入到產品整個生命週期中,提供全方位的支撐,能夠稱爲性能質量保障或非功能質量保障。性能質量保障並不等同於性能測試,性能測試是指一類測試行爲,而性能質量保障是一系列行爲活動的集合,其中包括性能測試執行。
三、 知足用戶
是否知足,對不一樣產品可能會有不一樣判斷標準,一般在用戶正常使用過程當中,50ms和500ms的差異很難有明顯感覺,可是「不知足」都有類似表現,好比說頁面加載失敗、用戶操做無響應等(非功能上的異常)。
性能QA須要作的除了驗證「知足」,更要保證「不知足」的狀況可以不發生或者可以及時補救,保證產品可以保持穩定的性能表現。若是功能是指「作的對」,性能是指「作的快」,穩定就是指「作的好」。
但研發過程是不斷產生「不知足」風險的過程,性能QA怎麼規避風險呢?
首先來分析一下研發過程當中,哪些階段可能會產生風險以及產生的緣由,以一個簡單的流程圖爲例:
性能QA能夠作什麼:
1) 人爲因素:減小人爲因素的干擾;在研發階段卡點評估風險。
2) 客觀因素:預案管理、提早演練
思路有了,
還怕不知道作什麼嗎?
彙總上述章節的思路,當性能QA思考「我能夠爲產品多作些什麼」的時候,能夠從這幾個方向入手:
1)從熟知產品出發,轉換視角
2)嘗試多總結多輸出,轉換角色
3)擴展關注產品性能表現的角度和深度
4)從多方位規避風險
5)及時跟進用戶體驗
嘗試列出腦圖:
從這些思考中能夠大體整理出工做規劃的幾個方向:
1) 版本迭代性能需求
由研發或業務QA提出的性能測試需求,主要用於發現新功能的性能問題、處理瓶頸以及性能影響範圍。
2) 版本回歸
線下全鏈路壓測,用於對比歷史版本的性能表現,關注是否存在性能降低、資源佔有異常等性能風險。
3) 線上全鏈路壓測
線上容量評估,爲服務擴容和線上容量規劃提供參考數據。
4) 核心模塊摸底
對核心模塊的核心接口進行性能摸底,關注該模塊核心接口的性能表現及性能瓶頸。
5) 故障演練&服務治理
單模塊或全鏈路的故障演練,根據故障用例和故障恢復預案,模擬真實故障狀況的演習。目的是服務治理、預案驗證,即驗證系統的故障恢復能力,是有效預防系統失控的手段。
6) 非功能質量線上巡檢
關注線上性能表現及資源使用狀況。
7) 賦能
旨在加強研發團隊對於產品性能的意識及主觀能動性,提升研發效能。
當咱們清楚能夠作什麼後,接下來是如何作、如何作的更好、如何評估、如何持續作,本文不作展開。
總結
在軟件產品開發這個行業裏,性能質量的範圍很是龐大,從前端到後端、從網絡到操做系統、從虛擬機到數據存儲,而性能質量保障的方法手段一樣層出不窮,展開來分分鐘懷疑人生。那麼如何規劃和規範這些手段,使之井井有理、高質高效的爲產品服務,稱之爲性能質量保障體系的建設。這是個逐漸演變、逐漸完善的過程,是咱們須要進一步思考和實踐的方向。
「道可道也,非恆道也;名可名也,非恆名也」,請性能QA獨立行走!共勉!