商業轉載請聯系騰訊WeTest獲得授權,非商業轉載請注明出處。
原文連結:http://wetest.qq.com/lab/view/347.html
十一月臨近,一年一度的電商大戲“雙十一”又将隆重出場,目前各大商家已經開始各類優惠券的發放,各類大促的商品表單也已經提前流出,即将流入各個使用者的購物車中。
作為這些活動的載體,産品宣傳、商品購買、交易結算、客戶回報以及售後服務都是電商産品(包括網站、APP、小程式等形式)非常重要的功能,但當雙十一臨近,電商産品要面對大量級使用者群體湧入,流量猛增的局面,性能表現往往就成為了成功的關鍵。
在優化電商産品的性能表現前,首先要了解一下電商産品的通路邏輯,以電商網站為例:
電商網站的核心内容,包括了Web伺服器、應用伺服器和資料庫伺服器,其中前端Web伺服器負責接收并處理來自使用者的HTTP請求,并生成Web頁面回報給使用者;中間的應用伺服器負責執行其中的業務邏輯;背景資料庫和檔案伺服器負責存儲使用者、産品資訊及狀态。
為了提升通路的性能,有的網站會在資料庫伺服器前部署資料緩存裝置。外圍部署負載均衡伺服器,負責在海量使用者通路與多台伺服器間進行負載分擔。
對于電商産品來說,當流量變高,成百上千的伺服器和其他裝置面對海量使用者的通路,會遇到這樣的場景:有的使用者在不斷查詢商品資訊,有的使用者在注冊會員,有的使用者在修改購物車資訊,有的使用者在下單付款,有的使用者在秒搶商品,等等。
此時若不重視承載能力,會造成嚴重的後果。比如國慶期間鹿晗公布戀情導緻微網誌當機,以及過去幾年iPhone新機釋出導緻官網崩潰,都是由于對流量突增沒有足夠的承載能力導緻的。

而這些現象,都給使用者帶來了很大的困擾,而且使用者體量越大,影響的波及面就越廣,不僅影響使用者口碑,也影響産品收入。如果把産品的月收入平攤到每一分鐘的話,大家可以通過30分鐘,60分鐘,乃至12小時,24小時計算具體的損失金額,還要加上是以産生的使用者流失以及品牌口碑影響。
是以,如何在“雙十一”這樣火熱的節點保證使用者順暢通路網站,成了一個重大的挑戰。
那麼,怎麼樣才能讓電商網站在面對活動流量高峰的時候能夠提供正常服務呢?容量規劃,壓力測試以及壓測環境的配置是電商網站必須要經曆的考驗。
尤其是壓力測試,是整個電商網站活動前的實戰演習,能夠提前預知網站性能表現的瓶頸與故障點。
電商網站背後的系統通常分為兩部分,一部分是導購,主要的作用是為使用者推薦各式各樣的商品,提供搜尋服務,給使用者挑選商品帶來便利;另一部分就是交易,簡單來說就是電商網站下單、搶購等活動的過程。
兩部分的流量形式是不同的。導購部分的流量會呈現為一個慢慢上漲的曲線,對于伺服器來說,流量的壓力是慢慢增加的;而交易部分的流量,卻是陡然上升的,特别是在某個搶購活動中,壓力會瞬間增長到一個高峰,沒有給人和機器任何的反應和決策時間,這也是電商産品承載能力要求比其他的産品高的重要原因之一。
但是這個高峰會是多少?很多人在事前并不知道,如果要模拟真實的壓力場景,不同的壓力造成的測試成本都不同,定高了,成本高,定低了,沒效果,是以要想讓壓力測試既能滿足足夠的流量壓力,又把測試的成本壓縮到最小,活動籌備之前對于流量的預估非常重要。
阿裡巴巴在雙十一活動前通常也會進行壓力的預估,将其叫做”容量規劃“。活動流量會有多少?峰值會到多少?電商網站的開發人員需要心裡有數。
在實際電商活動開始後,使用者會從四面八方湧入産品,如何去模拟使用者的真實行為,形成一個最接近真實的壓測場景是電商産品壓測第二件需要做的事情。
電商産品通常有很多接口,使用者在通路過程中可能接觸其中的某幾個接口,一種壓測的方式就是針對這所有的接口進行統一的壓測,增加相同的壓力,算出一個系統的容量,然後再根據這個系統的容量情況擴充到一個個叢集。
這種方法有一個缺陷,就是如果這個系統某個接口出現了問題,整個叢集都會崩潰。
而場景化壓測可以避免這類問題。在實際的壓測場景中,流量很大一部分都會被分流,由于每個使用者的購物流程都不一樣,是以對于電商網站上的接口受到的壓力都會不同,可以實作用最少的伺服器支撐最大的流量。
那麼,一般電商購物會有哪些場景呢?以下舉三個例子。
場景一:登入注冊,通路個人中心
使用者在進入電商産品後,會有檢視自己訂單情況的需求,是以,“登入“”注冊“以及”個人中心“會成為流量較高的接口。
場景二:商品周遊
“商品周遊“指的是使用者在下單購買前,對不同的商品頁進行通路的過程,而此時使用者已經進入了登入狀态,會帶着登入态對不同的頁面進行通路,此時不同的商品頁面接口會承受比較大的壓力。
場景三:購買下單
這可能是電商網站并發壓力最高的一個接口,購買按鈕,購物車頁面以及付費接口都會面臨很大的瞬時壓力。
在确認完“雙十一“活動中承受壓力可能最高的幾個場景之後,産品開發或測試人員就可以根據場景配置相應的測試用例了。
配置測試用例,實作真實壓力,通常需要一個能夠真實模拟海量使用者的測試工具,WeTest壓測大師為電商行業提供了一個适用的測試環境,提供了”上下文變量“、”全局參數化“等功能,可以滿足電商産品大部分的測試需求。
“上下文變量“實作的是将使用者登入時的使用者資訊傳輸到下一個頁面中,對于電商平台來說,可以真實模拟使用者登入後,點選了”購買“,進入了購買頁面。以下是操作介紹:
1、進入壓測大師首頁,選擇一個已有的項目進入,如沒有項目可以建立項目
2、建立一個新的URL測試,如下圖:
3、在測試設定部分,填寫壓力預估的最大人數
這裡當配置人數大于400時,為防範非法攻擊等現象,需要對被測域名進行認證,點選域名認證按照提示認證即可。
4、在“用戶端請求“點選”上下文變量“,開始配置
5、 “上下文變量設定“是為了實作URL之間參數資訊的傳遞,是以需要點選右下角的”+一個URL請求“增加一個URL,然後保證第一個URL的”變量名“與第二個URL的字段保持一緻
6、“提取方式“通常選擇”鍵值對“較多(具體使用可根據實際情況),選擇想要傳遞資訊的”header名稱“,确定”提取規則“。”提取規則“中所填寫的就是傳遞到下一個頁面的資訊,比如電商平台使用者的會員資訊。
那麼”提取規則“應該填寫什麼呢?我們需要在URL頁面中去尋找這個”鍵值“。
首先在chrome浏覽器中輸入第一個URL,點選F12,點選Network,重新整理一下頁面之後點選最左側的”setcookie_prep.php“,找到對應的header“Set-Cookie“,後面order_id後的值,就是我們将要傳輸給下一個URL的資訊。
7、完成了”上下文變量“的設定之後,在“測試模型“中的場景中選擇”上下文“模式,分别輸入兩個URL。
8、 如果自有伺服器,則可以在“伺服器監控“的”添加監控“中設定伺服器資訊;如果沒有,則可以點選”立即執行“開始測試
“全局參數化“實作的是通過自動更改”index“字段中的參數,實作周遊電商平台上所有商品頁面,對電商平台上所有的商品頁面模拟真實的使用者壓力。
1、點選右上角的“全局參數化“的設定按鈕,開始設定全局參數化
2、點選“添加“,添加參數,将參數名修改為想要測試的字段,比如上面的”index“字段。另外參數化形式中有”自增“、”随機值“和”定長“三種配置方式。
“自增“可以設定”最大值“和”最小值“,比如最小值設定1,最大值設定100,就可以自定義伺服器壓力,周遊電商平台上參數值為1-100的所有商品;
“随機值“可以實作在自定義範圍内随機對某商品頁面進行壓力測試;
“定長“通過設定一定長度下的數值,在這個範圍内的所有商品頁面進行随機的壓力測試,比如定長設定為3,則會在”000-999“”aaa-zzz“之間進行随機的壓力測試。
“全局參數化“可以設定”自增“、”随機值“和”定長“三種形式
“全局參數化“下的”定長“參數設定
對電商平台來說,要進行壓測的部分不止是周遊所有商品頁還有模拟真實使用者購買那麼簡單,還會有搜尋,聊天,收貨,評價等更多的功能,本文通過兩個簡單的場景示例,可以幫助電商網站把測試成本降到最小,把測試效果放到最大,避免讓電商平台的買家因為無法付款而流失。
做好這些,才能做出完整的電商産品。
WeTest壓測大師 服務了包括王者榮耀、龍之谷手遊、火影忍者等多款高星級手遊, QQ、NOW直播等明星産品,更是服務了攜程、京東、特侖蘇以及各類規模的電商産品,此次推出”電商行業壓測解決方案“,希望能夠幫助開發者真實模拟電商使用者使用場景,幫助開發者發現伺服器端的性能瓶頸,進行針對性的性能調優。在保證使用者流暢體驗的同時,也能降低伺服器采購和維護成本,實作使用者與電商開發者的技術共赢!
“壓測大師”目前已經開放對外,目前更有低至四折的時效資源包優惠,歡迎大家的使用!
體驗位址:http://wetest.qq.com/gaps/
如果對使用當中有任何疑問,歡迎聯系騰訊WeTest企業qq:800024531