【測試技術】關於推送服務的測試


最近工作接觸到了關於推送服務的測試,故整理下此次的收獲,后續會繼續學習這塊

測試前的學習階段

Q1: 什么是websocket?

A: 出門左拐知乎 >> websocket知識普及貼

Q2: 推送服務怎么測?

A: 首先你要熟悉業務,設計測試用例,制定測試策略blahblah,這些不是本篇文章的重點,我略。

我先簡單說明一下業務:

推送服務(push notification)

“手機用過嗎?你的各種【APP運行的時候】,動不動就會給你【推送】的【消息】”

讓我們來分析一下上面這句話的幾個關鍵字:

	APP(手機) -- > 客戶端 client /要考慮到不同網絡情況2G,3G,4G
	
	APP運行的時候 --> 向服務端發送心跳包ping pong(保持心跳),保持【長連接】
	
	推送 --> 推送消息接口(我們用的是http或者是rpc協議)

	消息 --> 一旦調用了推送接口,客戶端會接收到推送消息

業務分析完了,來講下最簡單的測試case(真的是最簡單的):

1、客戶端A連上服務端,定時發送心跳包,保持長連接,客戶端A不斷線(online)
	
2、調用推送接口,指定向客戶端A發送消息
	
3、客戶端A收到推送消息

對於步驟1我剛開始使用了jmeter來操作,發現很難實現ping pong操作(client持續發ack消息給服務端),必須的是client連上服務端,服務端馬上響應發一個特定的syn-ack消息過來,jmeter腳本內設計邏輯收到該消息繼續使用該連接blahblah ... 各種雞肋。也可能是我沒有悟出jmeter websocket test的精髓(后面再研究下寫擴展腳本的方式看看),各位可以參照下這篇文章:出門直走頭朝下點開查看 >> WebSocket Testing With Apache JMeter

隨着放棄jmeter來做客戶端連接操作,剩下的一個辦法就是自己寫客戶端連接工具(開發寫了,在此我就不得不感嘆心有余而力不足),這里我們開發使用的是GO寫的(不難的,網上也有很多demo),后面自己也會具體研究下怎么自己寫,馬克留白記筆記 ^^







測試中的學習階段

Q3: 推送服務怎么進行壓測?

A: 確認性能需求,設計壓測場景,執行測試,同步監控各種指標。

___ client online

___ msg send to client

步驟:

	0.測試虛機(0/3)
	
	1.client連接工具(1/3)
	
	2.推送接口jmeter腳本(2/3)
	
	3.執行1,執行2,監控數據
		
Tips: 

	0. client分布平均(100W連接,4台服務器,每台服務器有25W連接)
	
		*	單台服務器的性能壓測就另說
	
	1. client連上服務器后,可以觀察一段時間,看ping pong是否正常,監控服務器指標
	
	2. client主動斷開連接,監控服務器指標
	
	3. 服務端主動斷開連接,查看client是否又進行重連,重連失敗連不上的等情況
	
		*	一般服務端部署有多台服務器,可隨意reroll任一台
		
	4. 並發推送消息,確保消息不會丟失blahblahblah
	
	... 
	
	各位也看出來了,重點就是做好監控,監控,監控!!! 重要的事情,說三遍。

以上個人認為屬於比較基本的業務壓測,在進行壓測之前還看過這樣一篇以為會有用的文章:

七種WebSocket框架的性能比較

對客戶端的機子要求較高,后面我們的壓測沒有能力做,用的都是虛機,不過文章內寫的一些觀點,還是值得參照的 ~

測試后的學習階段

  1. client連接腳本需要學習怎么寫(未完成)

  2. shell命令需要學習

  3. jmeter beanshell學習

書到用時方恨少啊同志們

我舉個小小的栗子:

測試機幾十台機子,每台機子登上去連接5W連接,容易嗎?

當然,如果你會shell,分分鍾的事兒。Pexpect

先整理到這兒了,下周繼續。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM