原創|行業資訊|編輯:龔雪|2016-04-20 14:52:26.000|閱讀 1341 次
概述:除夕那晚你咻一咻了嗎?1808億次互動,16倍的提升,峰值177億次每分鐘的海量數據背后,支付寶是怎么抗住的?
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
除夕那晚你咻一咻了嗎?1808億次互動,16倍的提升,峰值177億次每分鐘的海量數據背后,支付寶是怎么抗住的?
螞蟻金服旗下的支付寶經過十幾年的發展,從簡單的支付工具逐步發展成互聯網金融平臺。2013年余額寶的崛起就是互聯網金融平臺升級的標志型事件,這一年支付寶順利進行了PC向無線的布局,可以說架構成功升級到移動互聯網金融平臺。
經過兩年的發展,2015年口碑和社交業務的崛起讓支付寶架構進一步在原有架構基礎上拓展出支持線下市場和社交的生活互動型架構。2015年錢包9.0的發布,這個里程碑式的項目初步奠定了支付+移動互聯網金融+生活互動型混合架構。架構演進示意圖如下所示。
2015年12月份,支付寶中標央視。支付寶和央視聯合搞活動,是支付寶有史以來最大規模的活動。到底規模多大,當時的我們都沒有任何概念。唯一能得到的信息是,歷年觀看春晚的人數大約在7億多,支付寶的年度活躍用戶4億多,至于用戶的行為習慣,沒有任何參考模型。
支付寶團隊在這樣的情況下,確定了這樣一個原則:優先確保核心鏈路,保證核心鏈路上用戶體驗順暢。萬一出現系統容量不足,系統必須能扛住洪峰,不被壓垮,即使這種情況下也要給用戶盡量友好的提示文案。在確保主鏈路基礎上,還需要照顧到支付寶App內幾百個非關鍵鏈路,對于非關鍵鏈路按照業務重要程度分為4個等級,根據等級分配不同的資源配置。
經過2個月的精心準備,在激動人心的4小時結束后,整個春晚支付寶系統穩穩地扛住了4波洪峰,表現平穩,無論是核心鏈路還是非核心鏈路,沒有出現任何問題。4個小時內幾乎沒有用戶因為系統、功能上的問題而產生投訴,客服也沒有任何咨詢壓力。
用戶“咻一咻”在第二場活動達到高潮,累計互動次數達到1808億次,是去年的16倍。在當晚的20點38分,“咻一咻”峰值達到177億次/分鐘。支付寶到底是怎么抗住的?
主要是以下5個方面:
這就是為什么很多看起來不是很復雜的網站、APP,卻需要大量頂尖高手來開發。并且隨著企業需求的日益增長以及對算法的不斷深入創新,我們也會越來越多的遇到這樣的性能壓力問題。
今天,小編就帶著大家來認識這幾款自動化測試工具,幫助您找出APP的性能缺陷。
Monkey是一款壓力測試工具,使用簡單。所謂壓力測試就是亂點。。。模擬各種各樣奇怪的操作,看你的app能不能抗的住。下圖所示,是簡單命令的用法。
舉例來說:
1 android shell monkey -p 你想測試程序的包名 -v 500
比如 我現在想看看android 系統自帶的日歷應用 在壓力下表現如何。
你看,這個模擬器就開始瘋狂點擊了。當然在實際使用中,一般是將次數調到 幾十萬次到幾百萬次,然后下班以后開始跑。第二天來看結果,看看在哪里出了問題。使用非常簡單,但是作用也非常有限。不過很可能幫助您找出app的一些隱藏極深的bug。
MonkeyRunner是一款自動化測試工具,需要您編寫腳本。例如,測試需要經常用到的冒煙用例,等等。尤其是在4.x以下的機型里,由于無法使用uiautomator,MonkeyRunner幾乎就是唯一的自動化測試方法了。
下面我舉個例子,比如我們app里最常用的登錄功能,我們就可以編寫一個腳本來完成。
1 # coding=UTF-8 2 from com.android.monkeyrunner import MonkeyRunner as mr 3 from com.android.monkeyrunner import MonkeyDevice as md 4 from com.android.monkeyrunner import MonkeyImage as mi 5 from com.android.monkeyrunner.easy import EasyMonkeyDevice 6 from com.android.monkeyrunner.easy import By 7 8 #定義安裝文件路徑 9 installPackage = 'C:\\Users\\Administrator\\ViewPageTest\\app\\build\\outputs\\apk\\app-debug.apk' 10 11 #要測試的程序的包名 12 apkPackageName ='com.example.administrator.viewpagetest' 13 14 #要啟動的第一個activity的名稱 15 initActivityName=apkPackageName+"/com.example.administrator.viewpagetest.MainActivity" 16 17 18 device = mr.waitForConnection() 19 20 21 #安裝apk包 22 device.installPackage(installPackage.decode('utf-8')) 23 24 25 #啟動應用程序 26 device.startActivity(component=initActivityName) 27 #防止啟動金喜正規買球面 需要時間過長 28 mr.sleep(3) 29 30 easy_device = EasyMonkeyDevice(device) 31 32 mr.sleep(3) 33 34 35 36 easy_device.type(By.id('id/username_et'),'zhangsan') 37 # 這里的mr靜止 主要用于演示demo上的gif效果 38 mr.sleep(2) 39 easy_device.type(By.id('id/password_et'),'123456') 40 mr.sleep(2) 41 easy_device.touch(By.id('id/submit_bt'),md.DOWN_AND_UP)
然后運行該腳本,效果如下:
大家可以看到,這個腳本可以自行完成:安裝apk、輸入用戶名和密碼、點擊登錄按鈕。這里我就不繼續往下寫這個腳本了。有興趣的同學可以自己嘗試完成日常工作里的那些冒煙用例。
用腳本來自動完成這些測試用例意義重大。畢竟每次版本發布之前,手動點擊去完成全部的測試用例是很麻煩的一件事情。
上面我們提到了UiAutomator,那我們就順便來講講UiAutomator。這個工具我個人認為是所有android 程序員都必須要掌握的。有了這個強大的工具,我們就可以底氣十足地說“No problem!”
UiAutomator幾乎能模擬對android設備的所有操作。使用java語言就可以了,不會編寫腳本代碼的android 程序員也可以輕松上手。并且android的所有api幾乎都能使用,簡直酷到沒有朋友!比android studio自帶的ApplicationTestCase強到不知道哪里去了。具體的使用方法,大家可以參考。
這個工具大家應該都認識,簡直是性能測試界的神器,像一個標桿屹立在測試人的心中。既然提到了它,我還是給大家簡單介紹一下這款工具。Loadrunner是一款功能最全面最強大的性能測試軟件,并且可以進行腳本錄制,無需編寫腳本了。關于Loadrunner的腳本錄制大家可以參考這篇教程。試用下載
大家掌握了這些工具的使用方法后,也可以讓自己的APP性能提升很多。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn