【转】区块链如何测试?
區塊鏈技術最近熱的發紫,大多數的文章都在普及區塊鏈概念。區塊鏈可能會成為未來10年互聯應用的一個底層技術,會應用于各行各業的各種項目。比如:商品溯源,傳統溯源系統采用集中數據存儲數據,其實這樣的數據對數據庫持有者來說,想怎么修改,就怎么修改,那它的數據可信度有多少?之前甚至出現過某銀行儲戶的資金不翼而飛的情況。既然區塊鏈會易用到各種系統,QA同學當然有必要了解下區塊鏈該怎么測了。小編結合實際整理了下區塊鏈測試相關內容,一起來看看吧!
背景
區塊鏈的特性回顧:
去中介化/中心化的信任。
穩定性、可靠性、持續性。因為它是一個分布式的網絡架構,沒有一個中心節點可以被打擊或者攻擊,所以在整體的技術布置方面有著更強的穩定性、可靠性和持續性。
強安全、共識機制不需要第三方的進入,而是通過一個技術來達到,先前預定的一個技術來達到整個交易的完成。
交易的公開透明和不可篡改性。
簡單概括:去中心化,不可篡改、所有節點公開全賬本、賬戶信息持續可追蹤、對等網絡,沒有上帝角色(系統管理員等)。
技術儲備
一、區塊鏈測試的難點
區塊鏈測試與傳統的軟件測試有很大的不同,主要體現在以下幾點:
系統邊界模糊。傳統的軟件,不管是是獨立的應用程序,還是客戶端/服務器模式的應用程序,都有明顯的系統邊界,可以通過UI用戶界面或者客戶端去進行測試。區塊鏈底層,則是一個完全去中心化的分布式網絡。這個網絡有可能跨越多個子網、多個數據中心、多個運營商、甚至多個國家,其邊界是模糊的。對于區塊鏈底層的測試,不僅僅是前端API與某個區塊鏈節點之間的測試,還涉及大量區塊鏈節點與節點之間的測試。
故障類型復雜。一般軟件故障包括3類:
宕機故障(Crash Failure);
宕機-恢復故障 (Crash-Recovery Failures);
拜占庭故障 (Byzantine Failures)。所謂拜占庭故障,來自一個著名的“拜占庭將軍問題”,指系統存在某些惡意節點,用一個形象的比喻就是“叛變的Byzantine將軍”。從不同觀察者角度看這類節點,表現出不一致的癥狀,這在需要共識的系統中,往往會導致系統服務失效。
一般軟件最多只需要解決前兩種故障,而區塊鏈系統,則需要同時處理所 有的故障,確保系統的可靠運行。
區塊鏈類型不同。區塊鏈本身包含公有鏈、私有鏈、聯盟鏈等多種類型,不同類型在管理、用戶身份、最大節點數等平臺自身特征方面均有不同,測評需要考慮所有的模式,導致測試方案更加復雜。(如下表)
二、測試點的考量
根據目前行業發布的白皮書,區塊鏈的評測標準包括:
技術要求
區塊鏈相關的落地系統,也可能包括我們熟悉的傳統架構軟件的測試內容。比如之前某些廠商的帶寬共享、共享云,也會有獨立的APP支持在線查詢管理等;對于區塊鏈底層的測試,則需要掌握的技術包括如下幾點:
首先要掌握密碼學的基本知識(例如對稱加密、非對稱加密、數字簽名的原理);
理解數據結構中的鏈表概念,樹的概念;
區塊鏈的交易記賬模型(如何實現轉賬的,如何避免雙花的,如何實現所有權驗證的);
若是基于以太坊代碼做,那還得理解虛擬機運行原理;
區塊鏈項目重點測試如下內容:
轉賬,向單/多簽名地址轉賬,向腳本轉賬;
如果對幣的機制有修改,雙花攻擊測試;
智能合約功能及安全測試;
打包及交易確認效率。
其實,任何軟件的測試,都是可以基于“輸入-輸出-行為”模型(又叫IBO模型)來做測試分析和設計。
業務場景及性能測試
一、 業務場景
我們以金融業務為例,通常分為實施業務、和非實時業務,兩種業務的特點在于:
實時業務:秒級支付、私有鏈、無單點故障和高擴展性;
非實時業務:去中心化、聯盟鏈、防篡改、數據零丟失;
具體如下圖:
二、關于性能測試的一些思考
對于性能評測部分,主要關注一下4個指標:
對于不同的性能指標,幾點思考:
延遲:P2P系統中都是虛擬鏈接,實際路由可能每次都不一樣。
共識率:系統中設定一些節點,故意篡改釋放假數據,看是否成功。
吞吐率:檢查礦工的效率,即整個系統每秒的有效交易數。
目前性能評測中,常見的是脫離網絡規模和區塊大小談每秒交易數(TPS)
實際中,網絡規模越大,需要達成共識的節點越多,達成共識的進度,越慢,吞吐量(TPS)就越低
區塊越大,可擴展性越大,吞吐量可能發生抖動,大概率是變低。
結束語
目前對于區塊鏈的測試內容上,短期還會出現針對不同行業的差異性,但最終會走向融合和統一。測試手段上,也將隨著時間逐步由人工測試,轉向自動化測試,有周邊的功能深入到底層。
參考文獻:
1. 區塊鏈測評概覽https://www.jianshu.com/p/7d88c4176d4c
2. 區塊鏈成熟度評測報告https://www.jianshu.com/p/45e0eef2f34c
3. 嘿丫科技_程文彬的對話整理
總結
以上是生活随笔為你收集整理的【转】区块链如何测试?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谷歌浏览器变成手机的界面
- 下一篇: Kali安装zmap简单介绍