今年跳槽到一家電商企業,性能測試須要從零開始。在性能測試不斷推進落地過程當中,積累了一些從零開始的經驗和教訓,本身也在有計劃的寫一個系列《性能測試從零開始實施指南》。html
前面已經聊過了從零開始要作的一些事情,好比:《性能測試從零開始實施指南——流程篇》、《性能測試從零開始實施指南-文檔建設篇》、《性能測試從零開始實施指南-測試計劃篇》。安全
最近在忙着準備雙十一全鏈路壓測相關的工做,正好最近私信收到一個同行的消息,看完感觸蠻多的,也算是督促了這篇博客的出現吧。私信的主要內容包含下面幾點:架構
一、性能測試,需求分析是重中之重——分析不到位會致使場景不符合實際,作無用功;運維
二、工具+監控沒太多學習成本;微服務
三、真實的性能需求,纔是影響最終測試結果的關鍵因素;工具
這幾點問題,和我本人在實際工做中的感覺是很相似的。相信不少性能測試的同窗,都遇到過下面這些問題:性能
一、需求不明確,有時候甚至是「咱們有個XXX接口,你給我壓一下」這種僞需求;學習
二、需求不明確致使沒法對測試點&測試場景進行詳盡完善的分析,最終的測試結果與實際須要的結果差距很大,沒法對瓶頸定位和線上容量規劃提供精確的參考;測試
三、工做結果沒有正向有效的反饋機制,出了問題甚至須要背鍋這種蛋疼的事情;spa
。。。。。。
固然,實際工做中,還會遇到不少其餘的問題,重要的是:咱們如何分析問題背後的緣由,而後想辦法解決問題!
這篇博客,聊聊在性能測試過程當中,我是如何理解而且去實踐場景建模的方法。。。
關於場景建模,我我的的實踐和經驗,主要從以下三方面入手:
1、業務場景
在測試開始前的需求階段,必定要梳理調研清楚,咱們測試的範圍和目的是什麼?
以我司來講,主要是社交電商+鑑定,社交必備的風控業務,電商先天自帶的物流倉儲業務,基礎的消息及推送服務,以及雙十一必備的促銷活動,在雙十一大促期間,這些都是核心的業務鏈路。
那麼,咱們能夠肯定大致的測試範圍,包含以下幾個核心業務鏈路:
知道了測試的業務鏈路範圍,接下來就是和對應的業務&產品&開發同窗梳理確認各自負責的核心業務鏈路(這裏指的是帶有業務屬性的鏈路及對應API,以及重要程度和優先級)。
以交易業務來講,交易業務鏈路,會包含以下的一些核心業務鏈路:
其中,首頁可能會包含開屏頁、登陸首頁、促銷活動頁,我的主頁等;商品會包含商品詳情、商品列表、商品收藏等;以及訂單、購物車、支付、搜索等和交易有強依賴的業務。
根據不一樣業務鏈路包含的細分業務功能,以及結合系統架構類型(微服務可能會根據業務屬性來作高度內聚解耦),劃分不一樣功能的優先級和重要程度。
這樣,咱們在需求階段,就能夠獲得一個比較明確的業務場景,從而開始下一步的工做。
2、鏈路場景
完成了測試範圍的確認和業務場景的梳理劃分,接下來,就是從需求→測試點的拆分(關於這點,初始的想法是和壓測場景合併來講,但仔細想一想,做爲一個獨立場景更好)。
在鏈路場景構建過程當中,最重要的,是考慮到以下三點:
一、任務拆解
任務拆解,和字面意思同樣,根據梳理出來的業務場景,從用戶的角度來劃分不一樣的操做流程,而後梳理出不一樣業務鏈路的任務List;
二、任務排期
根據拆分的業務鏈路,分析梳理它的前置項(環境準備、服務聯調)、跨部門合做(運營投放、渠道引流)、資源投入(開發、運維、測試)、交付產出(版本、API文檔、日誌服務、監控)。
而後按照時間節點,預估工期並進行倒排,工時預估到天/人,能夠有半天左右的浮動,但必定要明確交付時間和預案(好比各team交付太晚或資源不足的備份方案)。
三、權重劃分
你看,按照上面的玩法,梳理出來的東西必定不少。但不少時候,交付產出總會晚點,資源投入總會少點,預案基本是沒有的。
針對這種問題,做爲性能測試,該如何作呢?答案其實上面已經說到了,劃分權重和優先級,在有限的時間和資源投入範圍內,優先保障核心和重要鏈路的測試覆蓋!
畢竟,兜底方案,是有不少的,好比流量限流、服務降級甚至熔斷(這些手段都是有損的,但爲了保障到時候服務不掛掉,這些都是可接受的)。
PS:有些細節性的東西,限於保密和安全規則,沒法詳細介紹,但抓住重點,按照上面介紹的思路去實踐,總歸會有適合本身團隊的方法。
3、壓測場景
前面咱們確認了測試範圍、業務場景、業務鏈路,劃分了優先級和權重,作了一些預案及任務排期,但最終要落地的,仍是測試方案及具體的測試場景。
好比,針對不一樣的業務場景,咱們要採用哪些測試策略,如何進行測試,何時開始,預期結果以及驗收標準等等。
這裏,我建議在輸出最終的測試方案前,先畫個思惟導圖,和開發、運維甚至架構童鞋快速的review一下,先達成大方向的一致,而後輸入測試方案,執行壓測。
能夠參照以下的壓測思路進行具體的測試場景設計:
如上,就是性能測試過程當中,關於場景模型的梳理構建相關的內容,這裏主要分享一些我我的的思路和方法,具體實踐,仍是建議根據各自team的特色,針對性執行。