鑒定一下軟件測試熱門詞匯。
(本期以一個簡單的電商平台舉例,該平台有商品管理、購物車管理、訂單管理、會員管理四個模塊)
回滾
電商平台發布上線后,你熟悉的打開商品頁面,進行線上驗證。
But,f**k,數據加載不出來!
當開發大哥撓掉幾撮頭發,依舊沒有找到問題原因時,只能眼神呆滯地望着你,丟了一句:咱回滾吧……
於是,為了確保業務穩定,開發大哥將代碼切換回到上一個正常的版本。這個切換操作就稱之為回滾——向前回到上一個穩定的版本。
臟數據
電商平台發布上線后,你熟悉的打開頁面,進行線上驗證。
這次要驗證新增商品分類的功能,然而因為線上驗證流程的不規范,你在新增分類名時,將其打成“測試test”。
這樣的數據就叫臟數據——不符合環境規范的數據。
如果用戶看不到這條數據,還可以刪數據挽回顏面;但如果看到了,並且產生了嚴重的影響,便會升級為線上事故,你得做好獎金被扣,亦或被辭退的准備。
空指針
你在電商平台購買了一塊,卻發現包裹是空的——包裹里沒有“對象”。
你寫了兩行JAVA代碼:
int[] array = null; System.out.println(array[0]);
運行時報了空指針錯誤java.lang.NullPointerException
。
這是因為,array是null,不會創建新的對象(無內存地址),故在調用這個數組時會產生空指針異常。
空指針——當調用的對象是空(一個指針不指向任何內存地址),而拋出的異常。
微服務
在傳統的應用架構時,所有的系統都在一套代碼上。
比如,開頭提到的簡單電商平台,它有商品管理、購物車管理、訂單管理、會員管理四個模塊。
試想,商品管理上新了一個功能,這套代碼是不是要全量發布?你得拉着負責購物車、訂單、會員管理的研發、測試一起加班上線,並且,一旦服務上線出現問題,其他服務也會跟着出問題。
微服務便可解決這類問題——將應用由原來的單體變成幾十上百個不同的應用,應用間通過接口、消息等方式通信。
此外,微服務化后,不必每個系統都用同一種編程語言實現,比如商品系統,你可以用Java寫,購物車,你可以用Python寫……
分布式
有了微服務的概念后,便能很好理解分布式。
將不同的應用部署到不同的服務器上,就叫分布式部署。比如,將商品系統部署到A服務器上,將購物車系統部署到B服務器上。
此外,將單個應用的各組件分開部署,也叫分布式部署。
比如,一個會員系統,它有數據庫(管理增刪改查會員數據),有前端頁面(展示會員信息等樣式),有中間件(收發消息,如訂單完成,會通知會員系統給該會員增加積分)等等。也可以采取分布式部署,將這些組件部署到不同的服務器上。
總的來說:
微服務是分散能力,即,可廣義理解為將一個應用拆分為多個應用,它是一種設計方法。
分布式是分散壓力,即,將服務部署到不同的服務器上,解決高並發類問題,它是一種部署方式。
集群
多台服務器部署同一個應用,便構成該應用的集群。
比如,有十台服務器部署的會員服務,那就叫會員系統集群。
負載均衡
實現了分布式+集群,就必須考慮負載均衡。
還是拿會員服務舉例。
假設一台服務器只能支持100個用戶同時查看會員積分,但在雙11時,同時有1000人查看會員積分,該怎么辦?
方法一:不增加服務器,讓用戶排隊,先請求到的先查到,但是,你得處理10個批次,如果每個批次用時1s,那么有的用戶可能會等待10s之久。
方法二:再增加9台服務器,支持1s內同時允許1000名用戶查看會員積分。
一般來說,選擇方法一的都是傘兵。但是,方法二仍舊有問題,如果這1000個用戶,同時請求到一台服務器了,還不得回到原點?
這時,便需要負載均衡——你可以簡單理解為將這1000個查詢請求(將負載)平均(進行平衡)分到(分攤到)10台服務器(各個操作單元上)。
全鏈路
前面講到了微服務,將單個服務拆分成多個系統,每個系統即獨立運行,又相互關聯。
那么,這些系統相互關聯形成的流程鏈條,就稱為全鏈路。
比如:登錄會員—>查詢商品—>將商品加入到購物車—>下單成功—>會員記錄積分。
這樣一個完整的流程,就是一個加購下單全鏈路。
最后
咱們懷着欣慰的心情,學學如何寫bug。
下回
攢夠一波,再跟大家鑒定一下軟件測試熱門詞匯。
測試奇譚,BUG不見。
大家好,我是譚叔。
節前,一位群友說她沒接觸過后端測試,不懂回滾、臟數據、空指針等詞匯。於是,我安排了這篇文章。
當然,為了方便大家快速理解,有的地方,我講得很淺、很片面,不過,你完全可以就着理解方向再去細化學習,以掌握到更多知識。
看到這里,有的人可能會問:作為一枚測試,我干嘛要關心這些詞匯?
道理很簡單:一名測試連待測系統“長”什么樣子,都不知道,很不專業,會漏測很多東西。
比如,你測試的系統,線上環境數據庫是讀寫分離的,有一個主庫和多個從庫,而測試環境為了節省資源,只配置了一個主庫。那么,一些由主從延遲引發的業務問題,你就無法覆蓋測試,或者說,你都不知道該怎么測試。
so,要不要了解,要不要學習,看你自己~
最后,如果你還有弄不懂的詞匯,歡迎評論留言,下回攢夠一波,再跟大家鑒定軟件測試熱門詞匯。