PTS(Performance Testing Service)是web化的卓越的SaaS性能測試平台,具備強大的分布式壓測能力,可友善的模拟海量使用者的真實業務場景。PTS于2015年正式在阿裡雲上線,為廣大使用者提供極具成本效益和業界領先的性能壓測解決方案。
PTS鉑金版是2016年8月正式釋出的全新産品,核心能力基于服務阿裡全生态多達4年以上的單鍊路/全鍊路壓測平台,該平台對内除了支援日常的外部流量壓測之外,同時支援了大大小小的大促活動,如天貓雙11、雙12和年貨節等等;PTS鉑金版的壓力發起來源是遍布全國上百個城市和各營運商的CDN節點,相比業界産品的雲主機發起,更快速,來源更廣泛,脈沖能力和流量掌控能力更強。
PTS鉑金版在功能上強調頁面可視化編排,目前也在快速疊代中,倡導無需編碼的複雜互動式壓測;除了上面提及的特性之外,TPS壓測模式、實時調控實時生效的調速能力也都是領先于業界的。PTS鉑金版會持續的提供高成本效益的最佳實踐。
我們(阿裡高可用團隊)希望将性能壓測本身的工作持續地簡化,将更多的精力回歸到業務和性能本身,通過性能、體驗的提升創造更大的價值,更好的降低成本,更穩定地支援核心的活動。我們選擇通過PTS鉑金版這款好用不貴的産品輸出我們的最佳實踐。PTS鉑金版就是由阿裡巴巴 中間件-高可用團隊創造和維護的産品。
那麼,在一個壓測閉環中,PTS及其他阿裡雲産品覆寫了重要的三部分的能力:翻譯構造流量的能力、模拟掌控真實流量的能力、展現和定位問題的能力。

VUM:VUM(每虛拟使用者每分鐘)是性能測試PTS的計費機關,VUM=VU(壓測任務并發使用者數值)* M(壓測任務執行時長,按分鐘粒度,不滿一分鐘按一分鐘計算),舉例:100并發使用者運作10分鐘即1000VUM, 1并發使用者運作1000分鐘也是1000VUM,以此類推。比較貼心的是PTS鉑金版并不是同大部分SaaS壓測産品那樣基于壓測時間預設的最高并發計算VUM,而是按照實際的消耗VUM計費。
鍊路:在 PTS 中被定義為一種業務行為,可以是一個接口、頁面等,是一個最小的機關。以電商為例,登入、查詢商品詳情、送出訂單和付款等都是一個鍊路。
串聯鍊路:串聯鍊路是一組含有某種業務含義的鍊路的有序集合(事務),鍊路隻有在同一個串聯鍊路中才能進行入參和出參關聯(運作時資料傳遞)等。
場景:串聯鍊路的一組集合組成場景,場景也就能模拟各種有序集合的組合形态,也就是複雜業務場景。
壓測模式:PTS鉑金版支援并發模式和TPS模式兩種,特别是第二種是獨創的一種壓測模式,更側重一步到位地評估被壓測端的吞吐能力,因為所謂的并發在服務端最終是被網絡解耦為有先後順序的請求。
指令:為了更加貼合業務邏輯、更加真實地模拟使用者行為,PTS鉑金版提供了一系列的指令功能,指令是一種可以改變、控制鍊路執行的行為和流程的功能元件。指令可以穿插在串聯鍊路的各個位置,一般來說隻會對單個串聯鍊路起作用,某些特殊的指令也會對多個串聯鍊路同時起作用。
由于篇幅原因,下面介紹一個簡單的壓測配置過程,更多強大的擴充可以通過購買資源包自行做深度體驗。
假設我們的壓測場景是一個 首頁 -> 搜尋 -> 詳情 -> 思考時間 -> 下單 的流程,也就是說壓測場景中包含一個串聯鍊路,一個串聯鍊路中是4個鍊路。
那麼我們首先錄入和設定這4個鍊路,在左側導航欄中單擊鍊路管理,在鍊路清單頁面右上角單擊新增鍊路,錄入基本資訊。
如果需要給每個請求單獨構造請求體、請求頭、Cookie或者是URL的,那麼按照PTS的文檔介紹構造完成之後上傳即可。
在業務上某些鍊路需要輸出一些值給到後續鍊路的,比如首頁傳遞userid、name給到後續鍊路,搜尋傳遞搜尋到的itemId給到詳情和下單頁面的,那麼需要在相應的鍊路中定義出參(支援正則和JSON表達式的解析,詳見文檔)。
對應的,需要出參的鍊路定義一個入參,并在場景中關聯(後面場景部分再介紹)。入參的定義很簡單,主要是一個變量的申明,需要使用的的時候可以直接在檔案中直接通過 #{param} 占位符來引用。舉例說明,詳情鍊路有一個名為 “itemid” 的入參,那麼壓測檔案中隻需要 itemid=#{itemid}&age=12 這麼使用即可。
接下來進入場景建構步驟,在控制台左側導航欄中單擊場景管理,在場景清單頁面單擊新增場景。輸入場景名稱(可以以業務來命名),設定持續時間(壓測的最長時間),選擇模式(TPS 或 并發 模式),然後單擊确定。
前面有講到,場景中隻有一個串聯鍊路,然後在串聯鍊路中添加前面配置的業務鍊路,在添加的時候如下圖所示關聯前後的出/入參,設定單個鍊路的起步和目标壓測值即可。
在指令部分,這個例子中增加了最常見的思考時間,思考時間用于模拟使用者在前後兩個節點間思考、反應花費的時間,支援多種模式,如固定值、均勻分布和正态分布。
其他還有一系列的指令,如集合點、Cookie的導入導出等等,具體參見文檔并視業務情況使用即可。
全部配置完成之後的效果如下:
當然啟動前可以使用調試場景的功能友善的進行場景的調試,在不計費的情況下會跑一條資料或者一次輪詢并結構化地展示各鍊路的請求/響應情況,對出入參/斷言都會單獨展示出來便于問題的排查。
接着儲存配置或者直接去壓測,實時的用戶端視角的監控和報表效果如下圖:
當壓測完成之後會自動生成報表,分為概覽和明細兩部分,話不多少直接看圖: