玩轉小程式壓測
*作者:拂衣*
## 小程式也是需要壓測的
小程式是移動網際網路時代非常重要的流量入口。為了避免因系統效能瓶頸導致使用者在使用過程中出現白屏、異常報錯等問題影響使用者體驗,小程式在新功能上線前需要做好壓力測試,評估出系統的承載能力,並以壓測結果配置限流。讓系統面對流量突增,也能穩如泰山。
## 常見的小程式中需要做壓測的 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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 基於 PTS 壓測輕鬆玩轉問題診斷
- 木魚小鋪:商家如何玩轉社群團購小程式
- 小微團隊怎麼玩轉App自動化測試APP
- nodejs玩兒轉程式NodeJS
- 小邵教你玩轉ES6
- 小邵教你玩轉promise原始碼Promise原始碼
- 微信小程式初體驗--玩安卓小程式微信小程式安卓
- 小邵教你玩轉JS物件導向JS物件
- 1小時學會Git玩轉GitHubGithub
- 玩Android微信小程式版Android微信小程式
- H5 和小程式拍照圖片旋轉、壓縮和上傳H5
- 帶你玩轉小程式開發實踐|含直播回顧視訊
- 玩轉 Github Profile Readme:單元測試Github
- 小邵教你玩轉Generator+co/async awaitAI
- 用 PHP 玩轉程式之二 — 多程式 PHPServerPHPServer
- 使用測試客戶端「玩轉」MQTT 5.0客戶端MQQT
- # 支付寶小程式微信小程式分享轉發微信小程式
- 玩轉 Codeigniter 框架 二 守護程式篇框架
- React轉小程式現狀React
- 玩轉 PHP 網路程式設計全套之多程式程式設計PHP程式設計
- 一起玩轉玩轉LiteOS元件:TinyFrame元件
- 敏捷測試VS傳統測試對比,6招玩轉敏捷測試!敏捷測試
- 玩轉macMac
- 玩轉「Canvas」Canvas
- 玩轉EsLintEsLint
- 玩轉 ByteBuffer
- 玩轉 pyocd
- 玩轉redisRedis
- 玩轉TCPTCP
- 微信小程式_跳轉方式微信小程式
- [轉]開源Jshop小程式商城JS
- 微信小程式跳轉方式微信小程式
- 微信小遊戲首度亮相 ChinaJoy,助力開發者玩轉小遊戲遊戲
- 一起玩轉微服務(14)——單元測試微服務
- 玩轉SSH埠轉發
- locust壓測
- ClickHouse壓測
- 壓測流程