分布式系統(tǒng)測(cè)試實(shí)踐

分布式系統(tǒng)在越來越多的公司和產(chǎn)品系統(tǒng)中應(yīng)用,作為分布式系統(tǒng)要求高擴(kuò)展,高穩(wěn)定,高可靠,高可用,并且部署復(fù)雜、軟件角色多、硬件依賴強(qiáng),對(duì)于測(cè)試來說,分布式系統(tǒng)的測(cè)試面臨以下難點(diǎn):

1 分布式事務(wù):多機(jī)、多角色協(xié)作,測(cè)試場(chǎng)景多且復(fù)雜

2 多線程:多線程場(chǎng)景難模擬

3 多系統(tǒng):關(guān)聯(lián)的外圍系統(tǒng)多,而且又都是分布式

4 一致性要求:強(qiáng)一致、弱一致、最終一致

5 穩(wěn)定性要求:如何保證7*24小時(shí)系統(tǒng)穩(wěn)定

6 可用性要求:各種系統(tǒng)異常場(chǎng)景,軟件、硬件因素

7 兼容性要求:多客戶端服務(wù)端版本,多服務(wù)方式(REST、JavaClient)

8 性能要求:吞吐量和響應(yīng)時(shí)間,軟硬件因素

如何來應(yīng)對(duì)這個(gè)難題,可以從如下幾個(gè)方面來應(yīng)對(duì):

(1)多層次測(cè)試保障。將測(cè)試分為不同的層次,在每個(gè)層次注重不同的測(cè)試重點(diǎn)。

a)單元測(cè)試:開發(fā)人員完成,覆蓋基本邏輯

b)白盒異常測(cè)試:有針對(duì)的對(duì)各個(gè)系統(tǒng)異常進(jìn)行代碼級(jí)模擬,驗(yàn)證系統(tǒng)是否有能力處理并保持可用

c)接口測(cè)試:保證服務(wù)的各個(gè)對(duì)外接口符合預(yù)期,基本功能驗(yàn)證

d)集成測(cè)試:高壓力、高并發(fā)、多種系統(tǒng)協(xié)作的基本功能和異常場(chǎng)景測(cè)試(軟件、硬件異常)

e)穩(wěn)定性測(cè)試:高壓力模擬常見應(yīng)用和故障的混合場(chǎng)景,多種方式并行進(jìn)行。

f)仿真測(cè)試:建立客戶應(yīng)用回歸環(huán)境,仿真客戶使用場(chǎng)景

(2)低成本測(cè)試。所謂低成本測(cè)試就是在測(cè)試過程中采取一系列的策略,降低測(cè)試成本,包括在前期參與設(shè)計(jì)方案評(píng)審和Code Review。明確不可靠模塊的應(yīng)用風(fēng)險(xiǎn),核心模塊的持續(xù)投入,自動(dòng)化回歸和多環(huán)境并行測(cè)試,并且參與線上應(yīng)用情況的分析和線上故障的排查,做好bug的應(yīng)對(duì)方案。

(3)高效定位問題。從測(cè)試用例出發(fā),確定出現(xiàn)bug的特定場(chǎng)景,根據(jù)完善的日志和監(jiān)控體系來進(jìn)一步分析出現(xiàn)問題的條件,從而能逐級(jí)縮小測(cè)試用例,從黑盒的測(cè)試用例轉(zhuǎn)入白盒測(cè)試用例,另外可以利用自動(dòng)化測(cè)試分析工具來進(jìn)行分析。最核心的還是要對(duì)產(chǎn)品本身有深入的了解,產(chǎn)品的需求和產(chǎn)品的實(shí)現(xiàn)都要理解。

(4)DST,分布式系統(tǒng)測(cè)試工具。

DST擁有以下的強(qiáng)大功能:

1 支持編寫測(cè)試用例實(shí)現(xiàn)多機(jī)并行測(cè)試

2 可集成多種已有的測(cè)試工具及用例

3 可配置的監(jiān)控?cái)?shù)據(jù)自動(dòng)收集與展示

4 日志自動(dòng)分析與查看

5 可擴(kuò)展的任務(wù)執(zhí)行控制功能

6 性能、功能結(jié)果對(duì)比

7 測(cè)試報(bào)告自動(dòng)生成

DST的整體框架:

其中WebServer主要提供了測(cè)試管理的功能,包括用例場(chǎng)景,實(shí)驗(yàn)室,集群管理和監(jiān)控日志查看,和測(cè)試報(bào)告生成的功能。

測(cè)試集群完成了測(cè)試用例的分發(fā)和執(zhí)行,并且通過TestCaseRunner來集成多種測(cè)試工具。

數(shù)據(jù)分析平臺(tái)則主要完成監(jiān)控?cái)?shù)據(jù)和日志數(shù)據(jù)的存儲(chǔ)和分析,并將分析結(jié)果推送給WebServer以供用戶查看。

DST的頁面圖

除了以上幾點(diǎn),神秀還分享了一些在分布式系統(tǒng)測(cè)試中積累的一些經(jīng)驗(yàn):

(1)分布式事務(wù)最難搞。需要注意的點(diǎn)有三個(gè):

a)單系統(tǒng)、單機(jī)出現(xiàn)異常不能影響事務(wù)正確性

b)不可過分信任依賴系統(tǒng)

c)系統(tǒng)設(shè)計(jì)時(shí)的檢查更為重要,多系統(tǒng)異常難模擬,難考慮完整。在系統(tǒng)設(shè)計(jì)時(shí)的reivew更能提前發(fā)現(xiàn)問題,避免后續(xù)測(cè)試出現(xiàn)問題再排查浪費(fèi)時(shí)間。

(2)性能的小問題不容忽視。主要體現(xiàn)在以下幾個(gè)方面:

a)關(guān)鍵性能指標(biāo)看不到是系統(tǒng)穩(wěn)定性的地雷

b)通過關(guān)注測(cè)試系統(tǒng)的性能表現(xiàn)可以快速發(fā)現(xiàn)線上系統(tǒng)隱患

c)測(cè)試人員比開發(fā)人員對(duì)線上性能更有發(fā)言權(quán)

d)及時(shí)的給出測(cè)試數(shù)據(jù)和改進(jìn)意見是測(cè)試價(jià)值的體現(xiàn)

e)關(guān)注線上性能表現(xiàn)可以完善測(cè)試用例,更貼近實(shí)際

(3)GC是性能的重要因素??梢詤⒖嫉狞c(diǎn):

a)減少GC暫停時(shí)間是優(yōu)化的目標(biāo)

b)避免內(nèi)存碎片對(duì)應(yīng)用的影響

c)觀察線上系統(tǒng)GC狀況避免故障(內(nèi)存泄露、FullGc)

d)Gc日志和gc監(jiān)控幫助我們發(fā)現(xiàn)最合理的配置

(4)線上最容易發(fā)現(xiàn)隱患,測(cè)試人員要多參與線上應(yīng)用情況和線上問題的分析。

(5)有bug也不能影響系統(tǒng)穩(wěn)定,系統(tǒng)不可能沒有bug,往往出了bug如何處理比bug本身更重要,這對(duì)系統(tǒng)的健壯性和系統(tǒng)的自我調(diào)節(jié)和報(bào)警能力提出了更高的要求。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文章來自:http://blog.csdn.net/mj813/article/details/52451355 ...
    好大一只鵬閱讀 9,362評(píng)論 2 126
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,045評(píng)論 25 709
  • 1.問:你在測(cè)試中發(fā)現(xiàn)了一個(gè) bug ,但是開發(fā)經(jīng)理認(rèn)為這不是一個(gè) bug ,你應(yīng)該怎樣解決。 首先,將問題提...
    qianyewhy閱讀 9,391評(píng)論 4 123
  • 001 蘇北四歲的那年,住在隔壁家的阿姨生下了一個(gè)妹妹,那時(shí)鄰里情誼不似現(xiàn)在這般淡薄,南蘇兩家更是老一輩就開始的交...
    廿三三33閱讀 1,005評(píng)論 14 21
  • 1. 一禮拜前,小橈所在的城市發(fā)生了一起性侵事件,傍晚18點(diǎn)30分左右,小寒(化名)下班從工作室步行回家。和往常一...
    橈紙柔閱讀 1,954評(píng)論 0 1

友情鏈接更多精彩內(nèi)容