玩轉小程式壓測

阿里巴巴雲原生發表於2022-04-24

*作者:拂衣*


## 小程式也是需要壓測的


小程式是移動網際網路時代非常重要的流量入口。為了避免因系統效能瓶頸導致使用者在使用過程中出現白屏、異常報錯等問題影響使用者體驗,小程式在新功能上線前需要做好壓力測試,評估出系統的承載能力,並以壓測結果配置限流。讓系統面對流量突增,也能穩如泰山。


## 常見的小程式中需要做壓測的 3 種場景


-   新開發的系統或功能上線前需要了解其效能水位情況。

-   對系統進行技術調優、系統擴容前後透過壓測進行效能比對。

-   參加小程式平臺活動前對系統進行效能評估。


## 小程式的壓測方案如何設計


根據壓測場景不同,壓測方案可簡單可分為:單介面壓測、混合壓測、效能調優壓測、長穩壓測等。請根據需要選擇不同的方案。


-   **單介面壓測**:針對核心業務場景涉及的介面進行單獨壓測,分析單介面鏈路的瓶頸。

-   **混合壓測**:針對業務場景進行混合壓測,評估系統綜合併發處理能力。

-   **效能調優壓測**:測試應用系統引數、JVM 引數、執行緒池引數等對系統效能的影響,並得出最佳實踐的引數設定。

-   **長穩壓測**:長期維持一個相對較高的併發量進行壓力測試,觀察系統反應情況。透過 24H * N 天的長穩壓測,保證系統的穩定性,防止記憶體溢位、緩慢洩露,執行緒池、資源獲取時的偶然競爭造成死鎖、排隊等現象;長穩壓測的時間長度可根據具體情況適當減少,比如按照 JVM GC、Full GC 發生次數決定穩定性壓測時間等。 


## 使用 PTS 對小程式進行壓測的最佳實踐


不同於自建網站壓測,針對小程式壓測時,通常需要獲得小程式所在的平臺(如支付寶、微信)的 Token 資訊,並在有效期內使用才能正常壓測小程式業務介面。推薦您透過以下兩種方式獲取平臺授權的 Token:


-   (推薦)編寫介面自動獲取 Token,並在有效期內重新整理該 Token。壓測中,您透過 PTS 壓測該介面,可以自動獲得 Token。

-   壓測前提前記錄平臺 Token,並以引數形式傳入小程式業務介面中。但是請注意壓測時長不能超過 Token 的有效期,避免因 Token 失效導致無法進行業務壓測。


### 方式一:編寫介面獲取 Token


假設需要壓測微信平臺上小程式的活動頁面。您可以編寫介面去獲取微信的 Token 資訊,將該介面編排進壓測場景中,並提取出參,傳遞給後面實際的業務介面。具體操作步驟如下:


1. 在本地編寫介面,以便能夠在壓測過程中持續地獲取微信的 Token 資訊。


2. 登入 PTS 控制檯 **[1]** ,在左側導航欄選擇**建立場景 > 建立 PTS 場景**。


3. 填寫場景名,例如“myAPP”。


4. 在**場景配置**頁簽下,單擊壓測 API 名稱一欄右側的箭頭展開更多詳細設定,填寫第一個壓測 API,即自定義的獲取微信 Token 的介面。


5. 選擇**出參定義**頁籤,配置示例如下:


![image](~tplv-k3u1fbpfcp-zoom-1.image "image")


-   **出參名**:access_token

-   **來源**:Body:JSON

-   **解析表示式**:access_token


6. 單擊 **+新增壓測 API**,填寫第二個 API,即小程式活動頁面介面,請求方式選擇為 **POST**。小程式活動頁面介面即小程式的 URL。


![image](~tplv-k3u1fbpfcp-zoom-1.image "image")


7. 單擊**建立 PTS 場景**頁面下方的**引數列表**,在彈出的對話方塊中單擊出參名的複製圖示,複製該出參引數。


![image](~tplv-k3u1fbpfcp-zoom-1.image "image")


8. 假設需要在 API 的 Body 中傳入已複製的出參 access_token,單擊 API 的 **Body 定義**頁籤。在 Key 中填寫自定義的名稱(例如 input_token),在 Value 中貼上已複製的出參引數。


![image](~tplv-k3u1fbpfcp-zoom-1.image "image")


9. 單擊**施壓配置**頁籤,根據實際需要,填寫壓測併發數和時長等資訊,示例如下圖所示。


![image](~tplv-k3u1fbpfcp-zoom-1.image "image")


**說明**


-   若需要獲取已經登入的微信使用者資訊供多個串聯鏈路使用,如 OpenID 或 Token 等,請參見使用 Cookie 模擬登入場景 **[2]** 。

-   若獲取的資訊側有限流資訊,如同一使用者的頻繁登入登出限制、介面呼叫限制等,可準備一個串聯鏈路低併發、低 RPS 的登入資訊。

-   施壓配置的更多資訊,請參見如何進行施壓配置 **[3]** 。


10. 單擊**建立 PTS 場景**頁面左下方的**儲存去壓測**,即可發起壓測。


### 方式二:手動記錄 Token 並寫入業務介面


假設需要壓測微信平臺上小程式的活動頁面。那麼,您可以在壓測前提前批次獲取到平臺 Token,或者在本地準備些資料(如果業務允許),放在資料檔案中,壓測時作為全域性引數使用。


注意 一般平臺 Token 都存在有效期限制,需要定期重新整理才能使用。所以採用該方法請注意確認 Token 有效期,超過該期限後,壓測就無法正常進行。


具體操作步驟如下:


1.新建一個 **.csv** 檔案(用 Excel 編輯之後另存為 **.csv** 格式,或者用 Apache 的 commons-csv 來生成),將 Token 資訊寫在一列中,示例如下:


![image](~tplv-k3u1fbpfcp-zoom-1.image "image")


**說明**您可以透過線上環境批次獲取平臺 Token,或者如果業務允許的情況下可在本地構造 Token 資料。


2. 登入 PTS 控制檯 **[1]** ,在左側導航欄單擊**建立場景 > 建立 PTS 場景**。


3. 在**建立 PTS 場景**頁面,填寫場景名,例如“myAPP”。


4. 在**場景配置**頁簽下,填寫小程式活動頁面介面。


5. 單擊**建立 PTS 場景**頁面下方的**資料來源管理**,單擊 **+上傳檔案**,上傳本地準備的 **.csv** 檔案。上傳完畢後,填寫引數名,並單擊**確定**。


![image](~tplv-k3u1fbpfcp-zoom-1.image "image")


6. 單擊 **+新增壓測 API** 右側的下拉箭頭,選擇**新增資料配置**。


7. 單擊**資料配置**一欄右側的箭頭圖示展開更多詳細設定,在**檔案引數設定**頁籤中選擇**引數名**。單擊複製圖示,複製該引數。


![image](~tplv-k3u1fbpfcp-zoom-1.image "image")


8. 假設需要在 API 的 Body 中傳入已複製引數,單擊**活動頁面** API 的 **Body 定義**頁籤。在 **Key** 中填寫自定義的名稱(例如 token),在 **Value** 中貼上已複製的出參引數。


![image](~tplv-k3u1fbpfcp-zoom-1.image "image")


9. 單擊**施壓配置**頁籤,根據實際需要,填寫壓測併發數和時長等資訊,示例如下圖所示。


![image](~tplv-k3u1fbpfcp-zoom-1.image "image")


10. 單擊**建立 PTS 場景**頁面左下方的**儲存去壓測**,即可發起壓測。


## 使用 PTS 做小程式壓測的優勢


-   PTS **完全自研**的壓測引擎,支援吞吐量模式,準確模擬流量漏斗模型

-   支援全國地域發起壓測流量,模擬真實使用者分佈

-   提供問題診斷工具,展示方法堆疊粒度的報錯資訊,精準定位效能問題

-   支援客戶端代理錄製,大大降低構建壓測指令碼的成本


同時,PTS 全新售賣方式來襲,基礎版價格直降 50%!百萬併發價格只需 6200!更有新使用者 0.99 體驗版、VPC 壓測專屬版,歡迎大家選購!


![image](~tplv-k3u1fbpfcp-zoom-1.image "image")


## 相關連結


[1]PTS 控制檯


[**]()


[2]使用 Cookie 模擬登入場景


[*https://help.aliyun.com/document_detail/71027.htm#multiTask1285*](https://help.aliyun.com/document_detail/71027.htm#multiTask1285)


[3]如何進行施壓配置


[*https://help.aliyun.com/document_detail/70480.htm#concept-70480*](https://help.aliyun.com/document_detail/70480.htm#concept-70480)


[4]支付寶小程式壓力測試方案


[**]()


[5]如何在一分鐘內發起壓測


[*https://help.aliyun.com/document_detail/70290.html*](https://help.aliyun.com/document_detail/70290.html)


點選[**此處**](),瞭解效能測試 PTS 更多資訊!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69953029/viewspace-2888486/,如需轉載,請註明出處,否則將追究法律責任。

相關文章