區(qū)塊鏈技術(shù)最近熱的發(fā)紫塔粒,大多數(shù)的文章都在普及區(qū)塊鏈概念结借。區(qū)塊鏈可能會成為未來10年互聯(lián)應(yīng)用的一個底層技術(shù),會應(yīng)用于各行各業(yè)的各種項目卒茬。比如:商品溯源船老,傳統(tǒng)溯源系統(tǒng)采用集中數(shù)據(jù)存儲數(shù)據(jù),其實這樣的數(shù)據(jù)對持有者來說扬虚,想怎么修改努隙,就怎么修改,那它的數(shù)據(jù)可信度有多少辜昵?之前甚至出現(xiàn)過某銀行儲戶的資金不翼而飛的情況荸镊。既然區(qū)塊鏈會易用到各種系統(tǒng),QA同學(xué)當(dāng)然有必要了解下區(qū)塊鏈該怎么測了堪置。小編結(jié)合實際整理了下區(qū)塊鏈測試相關(guān)內(nèi)容躬存,一起來看看吧
背景
區(qū)塊鏈的特性回顧:
● 去中介化/中心化的信任。
● 穩(wěn)定性舀锨、可靠性岭洲、持續(xù)性。因為它是一個分布式的網(wǎng)絡(luò)架構(gòu)坎匿,沒有一個中心節(jié)點可以被打擊或者攻擊盾剩,所以在整體的技術(shù)布置方面有著更強的穩(wěn)定性、可靠性和持續(xù)性替蔬。
● 強安全告私、共識機制不需要第三方的進入,而是通過一個技術(shù)來達到承桥,先前預(yù)定的一個技術(shù)來達到整個交易的完成驻粟。
● 交易的公開透明和不可篡改性。
簡單概括:去中心化凶异,不可篡改蜀撑、所有節(jié)點公開全賬本、賬戶信息持續(xù)可追蹤剩彬、對等網(wǎng)絡(luò)酷麦,沒有上帝角色(系統(tǒng)管理員等)。
技術(shù)儲備
一喉恋、區(qū)塊鏈測試的難點
區(qū)塊鏈測試與傳統(tǒng)的軟件測試有很大的不同,主要體現(xiàn)在以下幾點:
●系統(tǒng)邊界模糊
傳統(tǒng)的軟件沃饶,不管是是獨立的應(yīng)用程序粪摘,還是客戶端/服務(wù)器模式的應(yīng)用程序,都有明顯的系統(tǒng)邊界绍坝,可以通過UI用戶界面或者客戶端去進行測試徘意。區(qū)塊鏈底層,則是一個完全去中心化的分布式網(wǎng)絡(luò)轩褐。這個網(wǎng)絡(luò)有可能跨越多個子網(wǎng)椎咧、多個數(shù)據(jù)中心、多個運營商把介、甚至多個國家勤讽,其邊界是模糊的。對于區(qū)塊鏈底層的測試拗踢,不僅僅是前端API與某個區(qū)塊鏈節(jié)點之間的測試脚牍,還涉及大量區(qū)塊鏈節(jié)點與節(jié)點之間的測試。
●故障類型復(fù)雜
一般軟件故障包括3類:
a.宕機故障(Crash Failure)巢墅;
b.宕機-恢復(fù)故障 (Crash-Recovery Failures)诸狭;
c.拜占庭故障 (Byzantine Failures)。
所謂拜占庭故障君纫,來自一個著名的“拜占庭將軍問題”驯遇,指系統(tǒng)存在某些惡意節(jié)點,用一個形象的比喻就是“叛變的Byzantine將軍”蓄髓。從不同觀察者角度看這類節(jié)點叉庐,表現(xiàn)出不一致的癥狀,這在需要共識的系統(tǒng)中会喝,往往會導(dǎo)致系統(tǒng)服務(wù)失效陡叠。
一般軟件最多只需要解決前兩種故障,而區(qū)塊鏈系統(tǒng)肢执,則需要同時處理所 有的故障枉阵,確保系統(tǒng)的可靠運行。
●區(qū)塊鏈類型不同
區(qū)塊鏈本身包含公有鏈蔚万、私有鏈岭妖、聯(lián)盟鏈等多種類型临庇,不同類型在管理反璃、用戶身份、最大節(jié)點數(shù)等平臺自身特征方面均有不同假夺,測評需要考慮所有的模式淮蜈,導(dǎo)致測試方案更加復(fù)雜。(如下表)
二已卷、測試點的考量
根據(jù)目前行業(yè)發(fā)布的白皮書梧田,區(qū)塊鏈的評測標(biāo)準(zhǔn)包括:
技術(shù)要求
區(qū)塊鏈相關(guān)的落地系統(tǒng),也可能包括我們熟悉的傳統(tǒng)架構(gòu)軟件的測試內(nèi)容。比如之前某些廠商的帶寬共享裁眯、共享云鹉梨,也會有獨立的APP支持在線查詢管理等;對于區(qū)塊鏈底層的測試穿稳,則需要掌握的技術(shù)包括如下幾點:
1.首先要掌握密碼學(xué)的基本知識(例如對稱加密存皂、非對稱加密、數(shù)字簽名的原理)逢艘;
2.理解數(shù)據(jù)結(jié)構(gòu)中的鏈表概念旦袋,樹的概念;
3.區(qū)塊鏈的交易記賬模型(如何實現(xiàn)轉(zhuǎn)賬的它改,如何避免雙花的疤孕,如何實現(xiàn)所有權(quán)驗證的);
4.若是基于以太坊代碼做央拖,那還得理解虛擬機運行原理祭阀;
區(qū)塊鏈項目重點測試如下內(nèi)容:
1.轉(zhuǎn)賬,向單/多簽名地址轉(zhuǎn)賬鲜戒,向腳本轉(zhuǎn)賬柬讨;
2.如果對幣的機制有修改,雙花攻擊測試袍啡;
3.智能合約功能及安全測試踩官;
4.打包及交易確認效率。
其實境输,任何軟件的測試蔗牡,都是可以基于“輸入-輸出-行為”模型(又叫IBO模型)來做測試分析和設(shè)計。
業(yè)務(wù)場景及性能測試
一嗅剖、 業(yè)務(wù)場景
我們以金融業(yè)務(wù)為例辩越,通常分為實施業(yè)務(wù)、和非實時業(yè)務(wù)信粮,兩種業(yè)務(wù)的特點在于:
1.實時業(yè)務(wù):秒級支付黔攒、私有鏈、無單點故障和高擴展性强缘;
2.非實時業(yè)務(wù):去中心化督惰、聯(lián)盟鏈、防篡改旅掂、數(shù)據(jù)零丟失赏胚;
具體如下圖:
二、關(guān)于性能測試的一些思考
對于性能評測部分商虐,主要關(guān)注一下4個指標(biāo):
對于不同的性能指標(biāo)觉阅,幾點思考:
●延遲:P2P系統(tǒng)中都是虛擬鏈接崖疤,實際路由可能每次都不一樣。
●共識率:系統(tǒng)中設(shè)定一些節(jié)點典勇,故意篡改釋放假數(shù)據(jù)劫哼,看是否成功。
●吞吐率:檢查礦工的效率割笙,即整個系統(tǒng)每秒的有效交易數(shù)沦偎。
●目前性能評測中,常見的是脫離網(wǎng)絡(luò)規(guī)模和區(qū)塊大小談每秒交易數(shù)(TPS)
a.實際中咳蔚,網(wǎng)絡(luò)規(guī)模越大豪嚎,需要達成共識的節(jié)點越多,達成共識的進度谈火,越慢侈询,吞吐量(TPS)就越低;
b.區(qū)塊越大糯耍,可擴展性越大扔字,吞吐量可能發(fā)生抖動,大概率是變低温技。
結(jié)束語
目前對于區(qū)塊鏈的測試內(nèi)容上革为,短期還會出現(xiàn)針對不同行業(yè)的差異性,但最終會走向融合和統(tǒng)一舵鳞。測試手段上震檩,也將隨著時間逐步由人工測試,轉(zhuǎn)向自動化測試蜓堕,有周邊的功能深入到底層抛虏。