區塊鏈技術最近熱的發紫,大多數的文章都在普及區塊鏈概念。區塊鏈可能會成爲將來10年互聯應用的一個底層技術,會應用於各行各業的各類項目。好比:商品溯源,傳統溯源系統採用集中數據存儲數據,其實這樣的數據對持有者來講,想怎麼修改,就怎麼修改,那它的數據可信度有多少?以前甚至出現過某銀行儲戶的資金不知去向的狀況。既然區塊鏈會易用到各類系統,QA同窗固然有必要了解下區塊鏈該怎麼測了。本文結合實際整理了下區塊鏈測試相關內容,一塊兒來看看吧。前端
區塊鏈的特性回顧:安全
● 去中介化/中心化的信任。服務器
● 穩定性、可靠性、持續性。由於它是一個分佈式的網絡架構,沒有一箇中心節點能夠被打擊或者攻擊,因此在總體的技術佈置方面有着更強的穩定性、可靠性和持續性。網絡
● 強安全、共識機制不須要第三方的進入,而是經過一個技術來達到,先前預約的一個技術來達到整個交易的完成。數據結構
● 交易的公開透明和不可篡改性。架構
簡單歸納:去中心化,不可篡改、全部節點公開全帳本、帳戶信息持續可追蹤、對等網絡,沒有上帝角色(系統管理員等)。分佈式
2.1 區塊鏈測試的難點性能
區塊鏈測試與傳統的軟件測試有很大的不一樣,主要體如今如下幾點:區塊鏈
●系統邊界模糊測試
傳統的軟件,不論是是獨立的應用程序,仍是客戶端/服務器模式的應用程序,都有明顯的系統邊界,能夠經過UI用戶界面或者客戶端去進行測試。區塊鏈底層,則是一個徹底去中心化的分佈式網絡。這個網絡有可能跨越多個子網、多個數據中心、多個運營商、甚至多個國家,其邊界是模糊的。對於區塊鏈底層的測試,不只僅是前端API與某個區塊鏈節點之間的測試,還涉及大量區塊鏈節點與節點之間的測試。
●故障類型複雜
通常軟件故障包括3類: a.宕機故障(Crash Failure); b.宕機-恢復故障 (Crash-Recovery Failures); c.拜占庭故障 (Byzantine Failures)。
所謂拜占庭故障,來自一個著名的「拜占庭將軍問題」,指系統存在某些惡意節點,用一個形象的比喻就是「叛變的Byzantine將軍」。從不一樣觀察者角度看這類節點,表現出不一致的症狀,這在須要共識的系統中,每每會致使系統服務失效。
通常軟件最多隻須要解決前兩種故障,而區塊鏈系統,則須要同時處理所 有的故障,確保系統的可靠運行。
●區塊鏈類型不一樣
區塊鏈自己包含公有鏈、私有鏈、聯盟鏈等多種類型,不一樣類型在管理、用戶身份、最大節點數等平臺自身特徵方面均有不一樣,測評須要考慮全部的模式,致使測試方案更加複雜。(以下表)
2.2 測試點的考量
根據目前行業發佈的白皮書,區塊鏈的評測標準包括:
技術要求
區塊鏈相關的落地系統,也可能包括咱們熟悉的傳統架構軟件的測試內容。好比以前某些廠商的帶寬共享、共享雲,也會有獨立的APP支持在線查詢管理等;對於區塊鏈底層的測試,則須要掌握的技術包括以下幾點:
1.首先要掌握密碼學的基本知識(例如對稱加密、非對稱加密、數字簽名的原理);
2.理解數據結構中的鏈表概念,樹的概念;
3.區塊鏈的交易記帳模型(如何實現轉帳的,如何避免雙花的,如何實現全部權驗證的);
4.如果基於以太坊代碼作,那還得理解虛擬機運行原理;
區塊鏈項目重點測試以下內容:
1.轉帳,向單/多簽名地址轉帳,向腳本轉帳;
2.若是對幣的機制有修改,雙花攻擊測試;
3.智能合約功能及安全測試;
4.打包及交易確認效率。
其實,任何軟件的測試,都是能夠基於「輸入-輸出-行爲」模型(又叫IBO模型)來作測試分析和設計。
3.1 業務場景
咱們以金融業務爲例,一般分爲實施業務、和非實時業務,兩種業務的特色在於:
1.實時業務:秒級支付、私有鏈、無單點故障和高擴展性;
2.非實時業務:去中心化、聯盟鏈、防篡改、數據零丟失;
具體以下圖:
3.2 關於性能測試的一些思考
對於性能評測部分,主要關注一下4個指標:
對於不一樣的性能指標,幾點思考:
●延遲:P2P系統中都是虛擬連接,實際路由可能每次都不同。
●共識率:系統中設定一些節點,故意篡改釋放假數據,看是否成功。
●吞吐率:檢查礦工的效率,即整個系統每秒的有效交易數。
●目前性能評測中,常見的是脫離網絡規模和區塊大小談每秒交易數(TPS)
a.實際中,網絡規模越大,須要達成共識的節點越多,達成共識的進度,越慢,吞吐量(TPS)就越低;
b.區塊越大,可擴展性越大,吞吐量可能發生抖動,大機率是變低。
目前對於區塊鏈的測試內容上,短時間還會出現針對不一樣行業的差別性,但最終會走向融合和統一。測試手段上,也將隨着時間逐步由人工測試,轉向自動化測試,有周邊的功能深刻到底層。
內容來源:Qtest之道
做者:高學文
線下活動推薦
技術工坊|解密區塊鏈DApp的代碼邏輯,從請求到數據存儲都要經歷什麼?(上海)
技術沙龍|利用IPFS,去中心化存儲如何讓錢包更安全?(南京)